Postfix

後綴:收件人地址被拒絕:無效的 HELO/EHLO

  • November 28, 2013

問題似乎是 MS Outlook 2007 不發送 SMTP AUTH 出於某種奇怪的原因,只針對一個特定的域。

我為我的域和幾十個客戶端域執行 iRedMail 伺服器(它使用股票 debian 7/wheezy,postfix 2.9.6-2)。問題是我有一個客戶端無法向自己發送電子郵件(不僅僅是我的電子郵件,而是整個域) - 它被拒絕,reject_non_fqdn_helo_hostname但客戶端正在使用 SMTP AUTH 並且設置正確,因此它應該繞過 FQDN 檢查。看起來 MUA 並沒有僅對我和我的同事電子郵件地址使用 SMTP AUTH。

有沒有人見過這個?我該如何解決這個問題?任何輸入都非常感謝!

會不會和MUA有關?她正在使用 Outlook(不是 Express)?

查看以下顯示不同情況的日誌片段。所有內容都在相同的配置/相同的 MUA/IP 中擷取,…:

1)這沒關係:我的客戶向第三方伺服器發送電子郵件;使用 SMTP 認證

5 月 28 日 13:02:13 email2 postfix/smtpd[1191]:從 <censored> 連接
5 月 28 日 13:02:13 email2 postfix/smtpd[1191]: 28A5D35E61DC: client=<censored>, sasl_method=LOGIN, sasl_username=<client1@1.example.com>
5 月 28 日 13:02:26 email2 後綴/清理[1435]: 28A5D35E61DC: message-id=<006c01ce5b92$d33805e0$79a811a0$@cz>
5 月 28 日 13:02:44 email2 postfix/qmgr[376]: 28A5D35E61DC: from=<client1@1.example.com>, size=4392922, nrcpt=7 (queue active)
5 月 28 日 13:02:44 email2 postfix/smtp[1580]: 28A5D35E61DC: to=<someone@thirdparty.example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=32, delays=31/ 0/0/0.88, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: 排隊為 B061435E61DE)
5 月 28 日 13:02:47 email2 postfix/qmgr[376]: 28A5D35E61DC: 移除

2)這沒關係:我的客戶向本地帳戶(她的同事)發送電子郵件;她正在使用 SMTP AUTH

5 月 28 日 13:06:18 email2 postfix/smtpd[2519]:從 <censored> 連接
5 月 28 日 13:06:18 email2 postfix/smtpd[2519]: 49CE735E61D4: client=<censored>, sasl_method=LOGIN, sasl_username=<client1@1.example.com>
5 月 28 日 13:06:18 email2 後綴/清理[429]: 49CE735E61D4: message-id=<007201ce5b93$5df069c0$19d13d40$@cz>
5 月 28 日 13:06:19 email2 postfix/qmgr[376]: 49CE735E61D4: from=<client1@1.example.com>, size=10875, nrcpt=1 (queue active)
5 月 28 日 13:06:19 email2 postfix/smtp[2295]: 49CE735E61D4: to=<client2@1.example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.6, delays=1.2/ 0/0/0.43, dsn=2.0.0, status=sent (250 2.0.0 來自 MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: 排隊為 CC61F35E61D7)
5 月 28 日 13:06:19 email2 postfix/qmgr[376]: 49CE735E61D4: 已移除

3)問題,電子郵件發送到我的帳戶(相同的伺服器,但不同的域),不使用 SMTP AUTH???:

5 月 28 日 13:04:38 email2 postfix/smtpd[1433]:從 <censored> 連接
5 月 28 日 13:04:38 email2 postfix/smtpd[1433]: NOQUEUE: reject: RCPT from <censored>: 554 5.7.1 <my_email>>: Recipient address denied: Invalid HELO/EHLO; 必須是 FQDN 或地址文字,而不是 'xxx';from=<client1@1.example.com> to=<my_address> proto=ESMTP helo=
5 月 28 日 13:04:41 email2 postfix/smtpd[1433]:從 <censored> 斷開

後綴配置的一部分:

smtpd_sender_restrictions = permit_mynetworks,
reject_authenticated_sender_login_mismatch,
permit_sasl_authenticated
smtpd_recipient_restrictions = reject_unknown_sender_domain,
reject_unknown_recipient_domain,
拒絕_non_fqdn_sender,
拒絕_non_fqdn_recipient,
拒絕未列出的收件人,
check_policy_service inet:127.0.0.1:7777,
check_policy_service inet:127.0.0.1:10031,
permit_mynetworks,
permit_sasl_authenticated,
拒絕_unauth_destination
smtpd_helo_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
check_helo_access pcre:/etc/postfix/helo_access.pcre

查看postconfcat main.cfg的輸出

HELO/EHLO 發生SMTP 身份驗證之前。如果您的伺服器配置了reject_non_fqdn_helo_hostname = yes,它將在進入 SMTP AUTH 部分之前拒絕任何具有無效主機名的連接。

雖然保持這種拒絕會減少一些垃圾郵件,但它也會阻止一些合法郵件。您應該仔細查看拒絕_invalid_helo_hostnamesmtp_helo_restrictions的 Postfix 文件,以了解您希望它如何工作。

smtpd_recipient_restrictions假設您的所有客戶都表現良好,您就可以了。因為他們不是(沒有發送正確的 HELO),你至少應該有類似的東西

smtpd_recipient_restrictions = reject_unknown_sender_domain, 
                              reject_unknown_recipient_domain, 
                              permit_sasl_authenticated, 
                              reject_non_fqdn_sender, 
                              reject_non_fqdn_recipient, 
                              reject_unlisted_recipient, 
                              check_policy_service inet:127.0.0.1:7777, 
                              check_policy_service inet:127.0.0.1:10031, 
                              permit_mynetworks, 
                              reject_unauth_destination

更好的是:

smtpd_recipient_restrictions =
   check_recipient_access hash:/etc/postfix/access-recipient-rfc,
   check_client_access cidr:/etc/postfix/access-client,
   check_helo_access hash:/etc/postfix/access-helo,
   check_sender_access hash:/etc/postfix/access-sender,
   check_recipient_access hash:/etc/postfix/access-recipient,
   permit_mynetworks,
   permit_sasl_authenticated, 
   reject_unknown_sender_domain,
   reject_non_fqdn_sender,
   reject_unknown_recipient_domain,
   reject_non_fqdn_recipient,
   reject_rbl_client zen.spamhaus.org,
   reject_rbl_client ix.dnsbl.manitu.net,
   # greylisting
   check_policy_service inet:127.0.0.1:10023,
   # policyd-weight
   check_policy_service inet:127.0.0.1:12525,
   reject_unauth_destination,
   reject_unverified_recipient,
   permit

此外,您應該將所有限制集成到smtpd_recipient_restrictions. 由於HELO 是在 SASL 身份驗證之前出現的,因此在smtpd_helo_restrictions.

一般來說,使用 just 是一種很好的做法smtpd_recipient_restrictions,因為你可以在那裡做任何事情,它可以節省你重複的東西,而且在 helo 之後會終止的連接的網路成本並不大。

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