十月 17th, 2008

郵件伺服器Part-6:MySPAM

Linux, Mail, by ptubuntu.

前情提要:郵件伺服器Part-5:OpenWebMail

系統使用CentOS 5.1
郵件伺服器全系列:Postfix+Dovecot+SASL+Procmail+Postgrey+Mailscanner+Spamassassin+ClamAV+Mailscanner-mrtg+MailWatch+Openwebmail+MySPAM


MySPAM會蒐集判定為SPAM的郵件於資料庫中,排程定時寄發清單通知信於使用者,除可節省傳遞垃圾郵件的流量外,更可供於使用者重送誤判郵件、自訂過濾規則及白名單。

MySPAM官網http://www.teatime.com.tw/
MySPAM程式下載http://www.teatime.com.tw/~tommy/myspam/myspam.tgz


1.安裝需求套件PHP、MySQL
若皆無可以yum安裝

yum -y install php mysql mysql-server php-mysql php-gd php-mbstring


2.下載MySPAM程式

cd /usr/local/src/
wget http://www.teatime.com.tw/~tommy/myspam/myspam.tgz


3.解壓縮myspam程式

tar zxvf myspam.tgz


4.移動解開的目錄到網頁目錄

cp /usr/local/src/myspam-0.0.4a /var/www/html/myspam


5.下載Smarty

elinks http://www.smarty.net/download.php

下載Smarty-2.6.19.tar.gz

6.解壓縮Smarty程式

tar zxvf Smarty-2.6.19.tar.gz


7.移動Smarty程式
將解開的libs目錄移動到 /var/www/html/myspam/web/libs
將解開的misc目錄移動到 /var/www/html/myspam/web/misc

8.配置Smarty環境

mkdir /var/www/html/myspam/web/configs
mkdir /var/www/html/myspam/web/cache
mkdir /var/www/html/myspam/web/templates
mkdir /var/www/html/myspam/web/templates_c
mkdir /var/spool/myspam/notspam/

chmod -R 700 /var/www/html/myspam/web/configs
chmod -R 700 /var/www/html/myspam/web/cache
chmod -R 700 /var/www/html/myspam/web/templates
chmod -R 700 /var/www/html/myspam/web/templates_c

chown nobody:nobody /var/www/html/myspam/web/templates_c


將web下*.tpl檔案移到/templates下

cp /var/www/html/myspam/web/*.tpl /var/www/html/myspam/web/templates/


9.建立資料庫

cd /var/www/html/myspam/
mysql -u root -p (進入mysql指令模式,輸入root密碼進入)
create database spam1; (建立spam1資料庫)
use spam1; (進入spam1資料庫)
/. db.sql (匯入資料表,/請打反方向)
exit (離開)



10.修改MySPAM設定

vim /var/www/html/myspam/web/config.php


/ database
$dbhost = ‘localhost’;
$dbuser =’root’;
$dbpass = ‘xxxxxxxx’;
$dbname =’spam1′;
//SMTP
$smtp_server = ‘localhost’;
$smtp_port = 25;
//POP3
$pop3_server = ‘localhost’;
$pop3_port = 110;
$mydomain = ‘your_domain_name’;
(Email Domain)
$spam_url = ‘http://your_myspam_website’; (MySPAM 的 URL)
$notspam_path = ‘/var/spool/myspam/notspam/’; (誤判信件的存放路徑)
$pagesize = 15; (每頁顯示的數量)
$keep_days = 30; (資料保留的日數)
$debug = false; (除錯用)


11.修改MySPAM首頁設定

vim /var/www/html/myspam/web/index.php


require_once(‘/var/www/html/myspam/web/config.php’);
require_once(‘libs/Smarty.class.php’);
require_once(‘/var/www/html/myspam/web/lang.php’);
require_once(‘/var/www/html/myspam/web/sendmail.php’);


12.設定MySPAM網頁

vim /etc/httpd/conf.d/myspam.conf


Alias /myspam /var/www/html/myspam/web

<Location /myspam>
Order allow,deny
allow from all
# AddDefaultCharset Big5
</Location>



13.設定procmail

vim /etc/procmailrc


#MAILDIR=/var/mail
LOGFILE=/var/log/procmail/procmail.log

:0
* ^X-Spam-Status: Yes

{
:0:
* ! ^X-MySPAM: YES
/usr/bin/php -Cq /var/www/html/myspam/web/index.php save_spam
}

:0b
* ^X-Spam-Flag: YES
$DEFAULT

:0
* ^X-MySPAM: YES
$DEFAULT


14.排程自動學習

vim /var/www/html/myspam/notspam


sa-learn –ham /var/spool/myspam/notspam/*
rm -f /var/spool/myspam/notspam/*


vim /etc/crontab


0 1 * * * root /var/www/html/myspam/notspam
(每天凌晨一點學習)


15.排程通知

vim /var/www/html/myspam/send_notify.sh


cd /var/www/html/myspam/web
/usr/bin/php -Cq index.php send_notify


vim /etc/crontab


0 9-18 * * 1-5 root /var/www/html/myspam/send_notify.sh
(每週一至五 0900~1800每小時發送一次)


備註:
◎發生重送信件Header錯誤時,修改save.php,在74行左右
原本是:

$aHeader = array();
$cnt = 0;
while (feof($fp) == 0) {
$buf = fgets($fp, 4096);
if ($body) {
$content .= $buf;
continue;
}
if (strncasecmp(‘Delivered-To:’, $buf, 13) == 0) continue;


改成:

$aHeader = array();
$cnt = 0;
$first = true;
while (feof($fp) == 0) {
$buf = fgets($fp, 4096);
if ($first) {
$first = false;
if (strncasecmp(‘From ‘, $buf, 5) == 0) continue;
}
if ($body) {
$content .= $buf;
continue;
}
if (strncasecmp(‘Delivered-To:’, $buf, 13) == 0) continue;


◎無法抓取信件大小時,修改save.php

$size = 0;
while (feof($fp) == 0) {
$buf = fgets($fp, 4096);
$size += strlen($buf);
本文来自:唉呦~MIS先生
标签:Linux, Linux, Mail, 技术类

相关日志

Back Top

回复自“郵件伺服器Part-6:MySPAM”

  1. 没有任何评论。
  1. 没有任何引用。

发表回复

Back Top


Verify Code   If you cannot see the CheckCode image,please refresh the page again!