Назад | Перейти на главную страницу

Postfix / Dovecot не удалось доставить почту

Недавно я начал развертывать почтовый сервер с Postfix и Dovecot на моем Ubuntu 18.04. LTS. К сожалению, получение писем не работает, и я еще не понимаю, почему.

Установка

Dovecot

В 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

http://www.postfix.org/ldap_table.5.html