Postfix 無法處理從遠端 MTA 進行本地傳遞的傳入 SMTP

Postfix 無法處理從遠端 MTA 進行本地傳遞的傳入 SMTP

我正在將 MTA 轉移到運行 Ubuntu 20.04 LTS 的較新伺服器。 SMTPS 運作良好,因此允許用戶端在身份驗證後發送郵件。但是,當從遠端 MTA 發送郵件進行本地投遞時,由於fatal: no SASL authentication mechanisms.

Dec 28 12:22:03 smtp postfix/smtpd[63402]: connect from unknown[1.2.3.4]
Dec 28 12:22:03 smtp postfix/smtpd[63402]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Dec 28 12:22:03 smtp postfix/smtpd[63402]: fatal: no SASL authentication mechanisms
Dec 28 12:22:04 smtp postfix/master[63342]: warning: process /usr/lib/postfix/sbin/smtpd pid 63402 exit status 1
Dec 28 12:22:04 smtp postfix/master[63342]: warning: /usr/lib/postfix/sbin/smtpd: bad command startup -- throttling

這裡存在著關於類似問題的問題。但這次有所不同:

  • SASL 運作正常,透過 saslauthd 對 LDAP 目錄進行驗證。因此,SASL 的插件安裝沒有遺失。
  • 透過 SMTPS 連線時,身份驗證效果良好。它只是在常規 SMTP 連接埠 25 上失敗。

使用 netcat 測試 SMTP 連線時,在傳送伺服器的 HELO 字串之前關閉連線。所以,我發現這smtpd_client_restrictions/etc/postfix/main.cf

smtpd_client_restrictions =
        permit_sasl_authenticated
        # postgrey:
        check_policy_service inet:localhost:10023

這是為了防止經過身份驗證的寄件者的外發郵件被列入灰名單所必需的。

代表/etc/postfix/main.cfSASL 配置如下:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_tls_security_options = noanonymous
broken_sasl_auth_clients = yes

這裡需要第 2 行和第 3 行,以防止在未加密的 SMTP 中進行明文登錄,但在客戶端透過 STARTTLS 啟動 TLS 後或在客戶端透過 SMTPS 連接的情況下接受它。我發現可以刪除 STARTTLS 方案以強制所有身份驗證都通過 TLS 加密的 SMTPS,並且我可以透過 master.cf 僅針對 SMTPS 啟用 SASL。但現有用戶根本不打算調整他們的設定。

答案1

據我所知,這個問題是由於

smtpd_sasl_security_options = noanonymous,noplaintext

結合 SASL 透過 saslauthd 對 LDAP 目錄進行驗證。這導致 PLAIN 和 LOGIN 成為唯一可用的登入方法。他們都因noplaintext這裡而殘疾。我希望 postfix 在沒有可用的 SASL 方法時不提供任何身份驗證。

用於測試目的我以前可以使固定透過添加另一個登入方法來實現這一點/etc/postfix/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN CRAM-MD5

這樣,SMTP 就可以接受 SMTP 上遠端 MTA 的傳入連線。然而,這不是一個解決方案目前,實際用戶端會選擇一種登入方法進行身份驗證,儘管預計它不會成功。看http://www.postfix.org/SASL_README.html有關設定 Cyrus SASL 以與 saslauthd 一起使用的更多資訊。

因此,我繼續搜尋並偶然發現了另一個選項,我顯然誤讀了,因此跳過了傳輸配置:smtpd_tls_auth_only。此佈林選項控制身份驗證是否需要 TLS。它是no預設的,從而導致為未加密的 SMTP 設定 SASL 身份驗證。將此選項切換到yesin後主文件文件 SMTP 再次正常工作。

答案2

我發現修復程式取消了 master.cf 檔案中這一行的註釋

-o smtpd_tls_auth_only=yes

相關內容