使用postfix搭建好邮件服务端以后,使用foxmail 作为客户端的时候,默认情况下都是会勾选“发送服务器需要身份认证”,如果这个选项没有勾选的话,一些程序员可以利用这个漏洞,使用你邮件服务器端下的用户名,无需你用户名的 密码就可以肆意发送邮件,如图就是我这边的同事利用这个为勾选的漏洞,发送N多的邮件:
垃圾邮件的危害性不言而喻哈!下面就大致的说一下这个问题的解决办法:
Postfix 的SMTP认证需要通过Cyrus-sasl
通过在postfix的main.cf文件中,通过对相关CYRUS-SASL的配置,令每一个用户必须在客户端勾上“发送服务器需要身份验证”选项,否则无法发送邮件;
smtpd_sasl_auth_enable = yes 启用sasl认证
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit
设置收件人过滤规则,permit是最重要的,
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated,reject
smtpd_sasl_application_name = smtpd
重新加载postfix文件,postfix程序在你postfix安装的目录下
/usr/local/postfix/sbin/postfix reload
此时,客户端用户如果没有勾选“SMTP发送服务器需要身份验证选项的话”,在发送邮件时会提示:
错误信息:Please check the email <xxxxx@xxxxxx.com>, server reply: 504 5.5.2
勾选上后,就可以正常发送邮件
本文转自天真花语 51CTO博客,原文链接:http://blog.51cto.com/caibird/1228510,如需转载请自行联系原作者