使用postfix搭建好邮件服务端以后,使用foxmail 作为客户端的时候,默认情况下都是会勾选“发送服务器需要身份认证”,如果这个选项没有勾选的话,一些程序员可以利用这个漏洞,使用你邮件服务器端下的用户名,无需你用户名的 密码就可以肆意发送邮件,如图就是我这边的同事利用这个为勾选的漏洞,发送N多的邮件:

190143565.png


垃圾邮件的危害性不言而喻哈!下面就大致的说一下这个问题的解决办法:

Postfix SMTP认证需要通过Cyrus-sasl

通过在postfixmain.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

勾选上后,就可以正常发送邮件