Postfix

拒絕:來自未知的 RCPT:450 4.7.1 客戶端主機被拒絕:找不到您的反向主機名

  • August 28, 2022

從我的本地網路發送電子郵件一切正常。也可以通過 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.&lt;mydomain.com&gt;
Port: 587
Connection security: STARTTLS
Authentication method: Normal password
Username: &lt;me&gt;@&lt;mydomain.com&gt;

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.&lt;mydomain.com&gt;/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.&lt;mydomain.com&gt;/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)並檢查啟動期間產生的日誌。

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