Postfix/Dovecot 郵件投遞失敗
我最近開始在我的 Ubuntu 18.04 上部署一個帶有 Postfix 和 Dovecot 的郵件伺服器。LTS。不幸的是,接收郵件不起作用,我還不明白為什麼。
設置
鴿棚
在 Dovecot 中,我在埠 993 上啟用了 IMAPS,在 127.0.0.1:24 上啟用了 LMTP,並通過
unix_listener
. 身份驗證是針對 LDAP 伺服器的,它也應該為我的郵件伺服器提供所有使用者。在
user_filter
mydovecot-ldap.conf.ext
中設置為(&(objectClass=rspfMember)(uid=%Ln))
,因為具有此 objectClass 的所有使用者都應該能夠發送/接收郵件。LDAP 條目的uid
等於郵件地址的本地部分,因此我用於%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 無法找到使用者(或 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
所以我假設收件人驗證工作正常。此外,正確的郵件目錄是在
/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