使用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 <[email protected]>, server reply: 504 5.5.2
勾選上後,就可以正常發送郵件