前情提要:郵件伺服器Part-5:OpenWebMail
系統使用CentOS 5.1
郵件伺服器全系列:Postfix+Dovecot+SASL+Procmail+Postgrey+Mailscanner+Spamassassin+ClamAV+Mailscanner-mrtg+MailWatch+Openwebmail+MySPAM
郵件伺服器全系列: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
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
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 (離開)
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′;
$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; (除錯用)
$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’);
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>
<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
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/*
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
/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;
$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;
$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);
while (feof($fp) == 0) {
$buf = fgets($fp, 4096);
$size += strlen($buf);
本文来自:唉呦~MIS先生
标签:Linux, Linux, Mail, 技术类
回复自“郵件伺服器Part-6:MySPAM”
发表回复