Недавно я добавил новую учетную запись пользователя в наш каталог LDAP. Но почему-то Postfix просто отказывается найти этого пользователя при отправке электронного письма.
Вход в учетные записи работает везде. Наш почтовый сервер — это выделенный сервер со своим собственным LDAP, но он просто отражает основной LDAP. Это не похоже на ошибку с LDAP. Каталог для электронных писем создан, и запись правильно отображается в каталоге LDAP. Но при входе в систему пользователь получает только сообщение «Почтовый ящик не выбран» (Webmailer - это SOGo). И этого недостаточно, при попытке отправить электронное письмо этому пользователю он просто не работает, ни из SOGo, ни из других клиентов.
В журнале говорится

Apr 30 12:03:14 mail postfix/smtpd[1355]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 550 5.1.1 <user@domain.de(opens in new tab)>: Recipient address rejected: User unknown in local recipient table; from=<me@domain.de(opens in new tab)> to=<user@domain.de(opens in new tab)> proto=ESMTP helo=<localhost>

При отключении локальной таблицы получателей добавлением строки "local_recipient_maps=" в постфикс main.cfg ошибка меняется на

Mai 02 12:59:04 mail postfix/local[8909]: 1EA11100379: to=<user@domain.de(opens in new tab)>, relay=local, delay=0.22, delays=0.13/0.01/0/0.08, dsn=5.1.1, status=bounced (unknown user: "user")

Я не могу придумать никакого решения этой проблемы. Единственные обсуждения этой темы, которые я смог найти из-за неправильных конфигураций. Но дело в том, что никаких изменений в конфигурации не было уже очень давно. Единственное, что изменилось, это пакеты, которые получали обновления. И этот новый пользователь в настоящее время единственный, у кого я знаю о каких-либо проблемах.

О нашей установке:
В Debian 10.4 запущена ночная версия SOGo 4, postfix 3.4, slapd 2.4.47 и dovecot 2.3.4.1 с пометкой 0.5.4.

Конфигурация Postfix:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = /usr/share/doc/postfix
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/mail.domain.de.cert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.domain.de.private.pem
smtp_tls_CAfile = /etc/ssl/certs/CA.crt
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = aNull, MD5
tls_high_cipherlist=!EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:!CAMELLIA256:+AES256:!CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:!CAMELLIA256-SHA:AES256-SHA:!CAMELLIA128-SHA:AES128-SHA
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_dh1024_param_file = /etc/ssl/private/dhparams.pem
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.domain.de
alias_maps = hash:/etc/aliases
virtual_alias_maps = mysql:/etc/postfix/mysql-forwards.cf
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = domain.de, mail.domain.de
relayhost = smarthost.maindomain.de
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
message_size_limit = 67108864
mailbox_command = /usr/lib/dovecot/deliver -d $USER
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
# Mailman config
relay_domains = lists.domain.de
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1
relay_recipient_maps = hash:/var/lib/mailman/data/virtual-mailman
# disable VRFY and EXPN command as per ITC recommendation
disable_vrfy_command = yes
# Older configurations combine relay control and spam control. To
# use this with Postfix ≥ 2.10 specify "smtpd_relay_restrictions=".
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_relay_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
# Configuration for rspamd
smtpd_milters=inet:localhost:11332
non_smtpd_milters = inet:localhost:11332
milter_protocol = 6
milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}
milter_default_action = accept

PS: если конфигурация postfix кажется странной, наш почтовый сервер не подключен напрямую к Интернету. Мы получаем электронные письма с центральных серверов нашей организации по сети нашей организации.

0
Richard Rosner 19 Май 2020 в 13:58
Аутентификация, кажется, выполняется через Dovecot. Я бы посоветовал добавить в вопрос конфиг dovecot.
 – 
Rui F Ribeiro
19 Май 2020 в 18:51
Я не сам настраивал сервер. это определенно не внутри dovecot.conf. в conf.d есть несколько файлов авторизации, какой из них будет правильным? У меня есть auth-checkpassword.conf.ext, auth-deny.conf.ext, auth-dict.conf.ext, auth-master.conf.ext, auth-passwdfile.conf.ext, auth-sql.conf.ext, auth-static.conf.ext, auth-system.conf.ext и auth-vpopmail.conf.ext. В 10-auth.conf раскомментировано только "auth_mechanisms = plain"
 – 
Richard Rosner
19 Май 2020 в 22:19
/etc/postfix/mysql-forwards.cf.... Пользователь, вероятно, должен быть добавлен в MySQL, чтобы он мог принимать электронные письма. Прошу инструкции у того, кто устанавливал.
 – 
Rui F Ribeiro
19 Май 2020 в 22:30
Нет, база данных обрабатывает только пересылки. Там не указан ни один пользователь. Я только что проверил это
 – 
Richard Rosner
19 Май 2020 в 23:19

1 ответ

Лучший ответ

Хорошо, теперь я нашел (очень странную) ошибку. Аутентификация пользователя выполняется pam через LDAP. По какой-то причине nslcd отказался получать последних пользователей из локального LDAP. Прямой поиск в LDAP показал все, как предполагалось, но id username для самых новых пользователей просто вернулся с «пользователь не найден». Я проверил конфигурацию несколько раз и сравнил ее с конфигурацией нашей настольной Linux-машины. Единственное отличие заключалось в том, что на настольном компьютере работала тестовая версия Debian 11 вместо стабильной версии 10 и использовался основной LDAP.
Я исправил ошибку, установив nslcd на почтовом сервере в основной каталог LDAP, а затем обратно в локальный каталог LDAP. Теперь он находит новых пользователей даже с id username, отправка им писем также не проблема. Очень странная ошибка, но в конце концов легко исправить

0
Richard Rosner 9 Июн 2020 в 15:54