2009 8月28日二零零九年
保持PHP的mail函數發送郵件的記錄
PHP的mail()函數中定義的默認情況下,通過sendmail的軟件發送發送電子郵件。 被發送的用戶無法找到文件或日誌設置,這也提高了Sendmail的水平。 特別是如果你有一台機器,作為服務提供商的網絡資源上的用戶發送垃圾電子郵件是很難檢測到使用。 PHP Sendmail郵件服務器來橋之間的承諾,並作為介意的使用方法,還添加一個軟件保持記錄。 如下;
vi /usr/sbin/sendmail.spamkontrol
成說
#!/ USR / BIN / perl的
#使用嚴格;
使用env;
我的$ date ='日期';
格格美元的日期;
開放(信息,“>>的/ var /日誌/ spam_log”)| |模具“文件無法啟動:: $!”;
我的uid = $>;
我@資訊= getpwuid(UID);
($的REMOTE_ADDR){
打印信息“日期 - 美元的REMOTE_ADDR跑$ SCRIPT_NAME $ SERVER_NAME N \ N”;
打印'\ N';}
其他{打印信息“日期 - 密碼 - @資訊\ n”;
打印'\ N';}
我mailprog ='/ usr / sbin目錄/ sendmail的;
的foreach(@ ARGV中){
美元精氨酸=“$ arg的”。 “$ _”;
}打開(電子郵件,“| $ mailprog $ arg中”)| |模具“無法打開$ mailprog:$ N”;
而(){
打印郵件;
}
關閉(信息);
關閉(郵箱);
當您保存文件;
chmod +x /usr/sbin/sendmail.spamkontrol
touch /var/log/spam_log
chmod 0777 /var/log/spam_log
後給予必要的權力,在php.ini文件中的一個新配方的形式:在sendmail的/ usr / sbin目錄/ sendmail.spamkontrol在Apache虛擬主機的定義可以進入以下,或您可以輸入一個描述。
php_admin_value sendmail_path '/usr/sbin/sendmail.spamkontrol'
您也可以進入這為每個虛擬主機的定義值。 重新啟動後,在/ var /日誌/ spam_log文件的Apache會發出的輸出文件,如樣品記錄。
[root@immortal ~]# tail /var/log/spam_log
Fri Aug 28 15:37:20 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:45:01 EEST 2009 - /home/testuser2 -
Fri Aug 28 15:53:30 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:57:43 EEST 2009 - /home/testuser1 -
Fri Aug 28 15:58:47 EEST 2009 - /home/testuser2 -
Fri Aug 28 16:21:21 EEST 2009 - /home/testuser2 -
如果日誌文件大小的增長,登錄旋轉,所以/ etc / logrotate.conf文件,添加以下。
# SPAM LOG rotation
/var/log/spam_log {
monthly
create 0777 root root
rotate 1
}
[Mattf和ramprage'e感謝]
