postfix 發信錯誤

ciscopuke發表於2021-09-09


postfix發信reject

今天遷移了mail伺服器,對新伺服器進行了一段時間監控,發現日誌中不斷出現如下錯誤。

日誌如下:

Oct 30 10:14:11 mail2 postfix/smtpd[10467]: NOQUEUE: reject: RCPT from unknown[10.10.8.2]:

553 5.7.1 <[email]service@XXX.com.cn[/email]>: Sender address rejected: not owned by user

[email]payment@XXX.com.cn[/email]; from=<[email]service@XXX.com.cn[/email]> to=<[email]zjnbzks120@hotmail.com[/email]>

proto=ESMTP helo=<app101xxx.com.cn>

 

根據提示判斷是app101這臺伺服器上配置的jspMail自動發信出現了問題

檢視app上關於jspmail的配置發現mail from的郵件地址和smtpuser的使用者不一致

,即用A使用者驗證,然後偽裝成B使用者發信。

如果用客戶端發信,可以看到如下圖

反覆試驗後發現註釋postfix的main.cf

如下行後可以解決此問題

smtpd_sender_restrictions =

#       reject_sender_login_mismatch,

#       reject_authenticated_sender_login_mismatch,

#       reject_unauthenticated_sender_login_mismatch

不過總覺得不太好

參考[url][/url]

得知是postfix中限制認證使用者使用的sender address 功能,預設其實都是註釋掉的,暈

如果需要此功能,需要修改/etc/postfix/main.cf

smtpd_sender_restrictions =

        reject_sender_login_mismatch,

        reject_authenticated_sender_login_mismatch,

        reject_unauthenticated_sender_login_mismatch

smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps,

        mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

        mysql:/etc/postfix/mysql_virtual_alias_maps.cf

然後建立/etc/postfix/sender_login_maps

把需要驗證的使用者加進去

這裡我們把mail from和smtpuser不一致的加進去即可。

格式為:A地址 A使用者

這裡為了讓[email]service@xxx.com.cn[/email]可以被多個使用者公用,使用者之間逗號隔開

[email]service@xxx.com.cn[/email] [email]payment@xxx.com.cn[/email],[email]service@xxx.com.cn[/email]

其他使用者可以不用新增,因為可以透過mysql來自動匹配。

#postmap sender_login_maps 

#postfix reload

 

繼續觀察日誌,發現類似錯誤不再出現。

 

後來又想到另一個解決辦法,更簡單

修改postfix的main.cf

mynetworks = 127.0.0.1, 10.10.8.0/24, 10.10.9.0/24

smtpd_sender_restrictions =

        permit_mynetworks,

        reject_sender_login_mismatch,

        reject_authenticated_sender_login_mismatch,

        reject_unauthenticated_sender_login_mismatch

smtpd_sender_login_maps =

#      hash:/etc/postfix/sender_login_maps,

        mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

        mysql:/etc/postfix/mysql_virtual_alias_maps.cf

 

這樣內網的機器直接傳送,不需要驗證了。再觀察一下日誌,果然如此

Oct 30 16:52:14 mail2 postfix/smtpd[11110]: connect from unknown[10.10.8.6]

Oct 30 16:52:14 mail2 postfix/smtpd[11110]: 7A0B65E4433: client=unknown[10.10.8.6], sasl_method=LOGIN, sasl_username=payment@xxx.com.cn

Oct 30 16:52:14 mail2 postfix/cleanup[10889]: 7A0B65E4433: hold: header Received: from app105.chinabank.com.cn (unknown [10.10.8.6])??by mail.chinabank.com.cn (Postfix - By chinabank.com.cn) with ESMTP id 7A0B65E4433??for <[email]guohui@cndns.com[/email]>; Tue, 30 Oct 2007 16:52:14 +080 from unknown[10.10.8.6]; from=<[email]service@xxx.com.cn[/email]> to=<[email]guohui@cndns.com[/email]> proto=ESMTP helo=<app105.xxx.com.cn>

©著作權歸作者所有:來自51CTO部落格作者coolerfeng的原創作品,如需轉載,請註明出處,否則將追究法律責任

職場休閒postfixmail


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2820915/,如需轉載,請註明出處,否則將追究法律責任。

相關文章