Недавно я начал развертывать почтовый сервер с Postfix и Dovecot на моем Ubuntu 18.04. LTS. К сожалению, получение писем не работает, и я еще не понимаю, почему.
В Dovecot я включил IMAPS на порту 993, LMTP более 127.0.0.1:24 и SMTP-auth через unix_listener
. Аутентификация выполняется против LDAP-сервера, который также должен предоставлять всех пользователей для моего почтового сервера.
В user_filter
в моем dovecot-ldap.conf.ext
установлен на (&(objectClass=rspfMember)(uid=%Ln))
, поскольку все пользователи с этим objectClass должны иметь возможность отправлять / получать почту. В uid
записей LDAP равно локальной части почтового адреса, поэтому я использовал %Ln
для фильтра.
Я включил следующие ограничения:
smtpd_recipient_restrictions =
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client ix.dnsbl.manitu.net,
check_policy_service inet:127.0.0.1:10023,
reject_unverified_recipient,
permit
Прежде всего, бег sudo doveadm user myusername
находит пользователя, которого ищу, и sudo doveadm auth test myusername mypassword
возвращается auth succeeded
, поэтому я предполагаю, что моя настройка LDAP верна.
Также возможна отправка писем из учетных записей, поэтому я могу войти в учетную запись через SMTP с любым почтовым клиентом, и поэтому с IMAP все будет успешно.
Если я отправляю письмо одному из пользователей, я вижу в файлах журнала, что ограничения RBL, а также postgrey пропускают почту, но после этого Postfix не может найти пользователя (или голубятня не может доставить почта, точно не могу сказать):
postfix/smtpd[22142]: maps_find: local_recipient_maps: myuser: not found
postfix/smtpd[22142]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|utf8_request key=@mydomain.com -> status=1 result=
postfix/smtpd[22142]: maps_find: local_recipient_maps: @mydomain.com: not found
postfix/smtpd[22142]: mail_addr_find: myuser@mydomain.com -> (not found)
postfix/smtpd[22142]: NOQUEUE: reject: RCPT from senderdomain.de[185.26.XX.XX]: 550 5.1.1 <myuser@mydomain.com>: Recipient address rejected: User unknown in local recipient table; from=<myuser@senderdomain.de> to=<myuser@mydomain.com> proto=ESMTP helo=<senderdomain.de>
postfix/smtpd[22142]: > senderdomain.de[185.26.XX.XX]: 550 5.1.1 <myuser@mydomain.com>: Recipient address rejected: User unknown in local recipient table
Если я сбегу postmap -s btree:/var/lib/postfix/verify_cache
но я получаю результат
_LAST_CACHE_CLEANUP_COMPLETED_ 1552662532
myuser@mydomain.com 0:0:1552662532:250 2.1.5 OK
поэтому я предполагаю, что проверка получателя работает правильно. Кроме того, правильный maildir создается в /srv/vmail/myuser
.
Где я могу найти дополнительную информацию о причинах сбоя доставки почты?
Заранее большое спасибо.
Я обновил свою конфигурацию LDAP для local_recipient_maps
, поисковый запрос query_filter = (rspfMail=%s)
где rspfMail
- атрибут, в котором хранится почта пользователей. Когда я тестирую запрос с помощью postmap -vq 'myuser@mydomain.com' ldap:/etc/postfix/local_recipient_maps.cf
Я получил:
postmap: dict_ldap_connect: Successful bind to server ldap://192.168.**.**:389 with dn cn=**,ou=**,dc=**
postmap: dict_ldap_connect: Cached connection handle for LDAP source /etc/postfix/local_recipient_maps.cf
postmap: dict_ldap_lookup: /etc/postfix/local_recipient_maps.cf: Searching with filter (rspfMail=myuser@mydomain.com)
postmap: dict_ldap_get_values[1]: Search found 1 match(es)
postmap: dict_ldap_get_values[1]: Leaving dict_ldap_get_values
postmap: dict_ldap_lookup: Search returned nothing
Таким образом, поиск, как и ожидалось, находит ровно один результат, но ничего не возвращает. Буду очень признателен за любую помощь.
Вы должны установить result_attribute:
result_attribute = rspfMail #default is maildrop
result_format = %s # default