1.修改main.cf
加上:
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_sender_login_maps.cf
验证发信人的信箱或别名是否真实有效,我使用mysql验证,不嫌累的可以使用hash验证。记得要在proxy_read_maps中添加$smtpd_sender_login_maps
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, reject_authenticated_sender_login_mismatch, reject_unauthenticated_sender_login_mismatch, reject_unknown_sender_domain。
在smtpd_recipient_restrictions = 中加上:reject_sender_login_mismatch,reject_authenticated_sender_login_mismatch。
将邮箱地址不匹配的踢回去,防止冒充同一域中其他信箱发信。
2.编辑mysql_sender_login_maps.cf文件,内容如下:
user = mysql_dbuser
password = mysql_dbpassword
dbname = mail
hosts = 127.0.0.1
query = select email from users where email= '%s'
4.重启Postfix之后,测试了一下,已经生效
如果登录,验证身份通过之后,想冒用其他信箱发信,会提示:550.5.1.0 Sender address rejected: User unknown in virtual mailbox table。实现对<From:>的验证。