Postfix
拒絕:來自未知的 RCPT:450 4.7.1 客戶端主機被拒絕:找不到您的反向主機名
從我的本地網路發送電子郵件一切正常。也可以通過 Thunderbird 或遠端使用本地安裝的 Roundcube。但現在,我在亞洲並嘗試使用 Thunderbird 發送電子郵件。日誌中出現以下錯誤:
postfix/submission/smtpd[4588]: NOQUEUE: reject: RCPT from unknown[110.170.163.146]: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [110.170.163.146]; from=<<me>@<mydomain.com>> to=<<me>@<mydomain.co>> proto=ESMTP helo=<[10.10.3.55]>
dig +short -t A mail.<mydomain.com> 給出:xxx.xxx.xxx.xxx,我的伺服器的 IP。
dig +short -x 110.170.163.146 給出:110-170-163-146.static.asianet.co.th。在這裡你可以看到,我現在在泰國。
在雷鳥中,我有:
Server Name: mail.<mydomain.com> Port: 587 Connection security: STARTTLS Authentication method: Normal password Username: <me>@<mydomain.com>
master.cf 中的所有 smtpd 行:
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=inet:10.89.0.10:12345
main.cf 中的所有 smtpd 規則:
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.<mydomain.com>/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/mail.<mydomain.com>/privkey.pem smtpd_tls_security_level = may smtpd_tls_loglevel = 1 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_sasl_auth_enable = yes smtpd_tls_auth_only = yes smtpd_sasl_type = dovecot smtpd_sasl_path = inet:dovecot:12345 reject_unauth_destination, check_policy_service unix:private/spfcheck check_sender_access /etc/postfix/sender_access check_recipient_access /etc/postfix/recipient_access smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/spfcheck smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname smtpd_client_restrictions = permit_mynetworks, reject_unknown_reverse_client_hostname
據我所知,錯誤消息與“反向主機名”有關。我超出了我的正常主機名。但 Thunderbird 應該登錄並仍然發送電子郵件。
有人知道如何解決這個問題嗎?
正在發生的事情是您的
submission
服務正在繼承這些main.cf
選項。對於伺服器到伺服器的郵件交換,這些與後綴預設值的偏差可能並非不合理。但是對於從幾乎任何地方(不是通過固定上行鏈路或 VPN)連接的客戶端,不需要可解析的反向名稱。也不需要同時要求反向名稱和 sasl。無論如何,在身份驗證期間送出的名稱作為一個更有用的標識符(唯一的、本地管理的、經過驗證的)。
建議的修復:覆蓋 master.cf 中僅身份驗證埠的相關選項,正如要求身份驗證的限制集所做的那樣:
submission inet n - y - - smtpd -o ... -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_client_restrictions= -o ... -o ...
進行更改後,重新載入配置(取決於發行版,例如
systemctl reload postfix
)並檢查啟動期間產生的日誌。