继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

postfix 发信错误

largeQ
关注TA
已关注
手记 953
粉丝 92
获赞 585


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]http://www.5dmail.net/html/2007-3-14/2007314195613.htm[/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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP