Email

Postfix/Dovecot 郵件投遞失敗

  • March 26, 2019

我最近開始在我的 Ubuntu 18.04 上部署一個帶有 Postfix 和 Dovecot 的郵件伺服器。LTS。不幸的是,接收郵件不起作用,我還不明白為什麼。

設置

鴿棚

在 Dovecot 中,我在埠 993 上啟用了 IMAPS,在 127.0.0.1:24 上啟用了 LMTP,並通過unix_listener. 身份驗證是針對 LDAP 伺服器的,它也應該為我的郵件伺服器提供所有使用者。

user_filtermydovecot-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

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

引用自:https://serverfault.com/questions/958471