dfg fdggg dfg fdgdf fggg
antispam架構sendmail目前版本8.13.7.1.我將每天進出的信備份到/var/spool/backup/DATE/ 目錄下,DATE為該天日期,格式yyyymmdd. 但排除被隔離的信件,因隔離區有一份。2.我將規則中判為spam,而隔離的信,隔離在/var/spool/quarantined/DATE/ 目錄下,DATE為該天日期,格式yyyymmdd,並在該目錄下建立每位使用者的記錄 時間+Qid.3.其中也在sendmail中加入{backup}的macro,以利之後規則的發展,如要把寄給某人的信偷偷寄一份給A,或從誰寄出的信,也偷偷寄一份給A.{backup}會記錄要寄給誰的資訊,格式為 , , ...。如單純只備份不另外轉送,{backup}的值設為?即可。{bkaddr}會將備份轉寄的信的mail from改為此設定值,如沒設定以root@[127.0.0.1],由系統自動去轉成domain,對方有可能會判為spam,最好{backup}裡的address為local的domain,這為了不讓原始寄件者有機會可能知道信件被轉送給他人。備份轉送的信件Subject 前加入[backup]字。程式會使用system(),因此/usr/sbin/sendmail hard code.目的讓sendmail寄送備份給設定值中的address。完成以上的sendmail patch是不夠的,我又寫了幾個程式,將被隔離信的收件者,定時可發report給該收件者,該收件者收到report後,從清單中可放行被隔離的信.1.定時寄發report給使用者,將被隔離的信一一列出,顯示From,To,Subject,SourceRoute,Time.已經被列出過的信,將不會被重複出現.設計以html格式的內文並統一以utf-8的文字發送。2.在Subject以超鏈結可連上如:http://192.168.100.1/cgi-bin/GetQuaMailClient?key=...&rcpt...,以放行該信件。其中192.168.100.1設定於/etc/mail/spam.conf中:(以\t分開)QIP 192.168.100.1 # http cgi server for Report of quarantined mail.3.我設計成以cgi來取得放行信件的資訊,如上的key和rcpt,判斷格式無誤時,再與server內部的socket溝通,此cgi程式並不直接處理放行信件。4.因此又寫了一個socket server,以處理放行動作,此socket定址為127.0.0.1,外界無法與此socket溝通。以上程式都用c來寫,用到了一些不常用的function,如將字串中編碼過的文字解碼,並將不是utf-8的轉成utf-8.使用decode base64,QP(Quote-Printable) funtion,iconv function.因在mail header中必須處理不同編碼的顯示問題,不然發給使用者的report有些不同格式的文字將出現亂碼。如:big5及utf-8無法同時顯示。而此socket server注意到fork,waitpid,select I/O等問題。以上就完成mail備份及anti-spam,完整的功能,其它都是server管理的部份,如rotate log,備份及隔離的mail. .msgcontent .wsharing ul li { text-indent: 0; } 分享 Facebook Plurk YAHOO!
好站連結:http://jigduvdcji.pixnet.net/blog