Недавно я начал развертывать почтовый сервер с 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 успешно
, поэтому я предполагаю, что моя настройка LDAP верна.
Также возможна отправка писем из учетных записей, поэтому я могу войти в учетную запись через SMTP с любым почтовым клиентом, и поэтому с IMAP все будет успешно.
Если я отправляю письмо одному из пользователей, я вижу в файлах журнала, что ограничения RBL, а также postgrey пропускают почту, но после этого Postfix не может найти пользователя (или dovecot не может чтобы доставить почту, я не могу точно сказать):
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 (hidden) 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