轉自:http://ithelp.ithome.com.tw/question/10002651
以下設置的內容將會是‘電郵網關’的設置,如果你是單機服務器,請跳過‘設定成 Mail Gateway’ 部分
環境
OS: Ubuntu 710
Mail Gateway: Postfix + MailScanner + ClamAV + Spamassassin
Internal Mail Server: Exchange Server, 內部 IP 為: 192.168.1.11
Primary MX: domain.com IN MX mail.domain.com. (MX 記錄指向 Mail Gateway)
安裝 Postfix, 並將 Postfix 設定成 Mail Gateway
sudo apt-get install postfix
sudo /etc/init.d/postfix stop
sudo gedit /etc/postfix/main.cf
———————————————————————————————-
myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain, localhost.$mydomain, localhost
local_recipient_maps = (空白)
networks_style = host
relay_domains = domain.com
transport_maps = hash:/etc/postfix/transport
append_at_myorigin = no
———————————————————————————————-
sudo gedit /etc/postfix/transport
———————————————————————————————-
Icon7inc.com smtp:[192.168.1.1]
sudo postmap /etc/postfix/transport
sudo /etc/init.d/postfix start
修改 NAT 配置, 將 tcp 25 指向 postfix_host:25。
從外部寄郵件到 [email protected], 觀察 postfix 是否能 forward 給真正的 mail server (192.168.1.1)。
telnet 到 mail gateway 進行測試
安裝 ClamAV、Spamassassin、MailScanner
sudo apt-get install clamav spamassassin mailscanner
ClamAV 不太需要設定就會正常工作
修改下面設定值
sudo gedit /etc/ld.so.conf
#加入
/usr/local/lib
ldconfig
freshclam
設定MailScanner
sudo gedit /etc/MailScanner/MailScanner.conf
———————————————————————————————-
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanning = yes
Virus Scanners = clamav
Use SpamAssassin = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Sign Clean Message = no (不在信尾加註 “This message has been scanned…”)
———————————————————————————————-
mkdir /var/spool/MailScanner/spamassassin
chown postfix:postfix /var/spool/MailScanner/*
vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
vi /etc/postfix/header_checks
/^Received:/ HOLD
sudo /etc/init.d/postfix stop
sudo /etc/init.d/mailscanner start
———————————————————————————————-
在 openwebmail.conf 裡面的設定找到 enable_spamcheck 這段,照以下的參數做修改就可以了。(下面的例子也把學習廣告信的功能也打開)
spamcheck_pipe /usr/bin/spamc -c -x -t60 -u @@@USERNAME@@@ learnham_pipe /usr/bin/sa-learn --local --ham learnspam_pipe /usr/bin/sa-learn --local --spam enable_spamcheck yes enable_learnspam yes spamcheck_source_allowed all
之後再照官方的說明文件,以 sample-spam.txt 寄一封測試的廣告信,如果設錯的話,在 openwebmail.log 裡面就會出現:
Sun Oct 24 21:52:06 2004 - [31314] (192.168.1.1) neo - spamscheck - pipe error - spamd error, exit=2 55, ret=From [email protected] Sun Oct 24 21:52:01 2004
成功的話就會出現:
Sun Oct 24 22:18:20 2004 - [31484] (192.168.1.1) neo - spamcheck - spam 1000.0/10 found in msg <2004 [email protected]>
另外廣告信學習的功能如果設定成功的話,在使用者點選學習功能的時候,在 log 裡就會看到類似以下的訊息:
Sun Oct 24 22:25:13 2004 - [31634] (192.168.1.1) neo - learnspam - 1 learned, 1 examined
如果學習的功能起不來,就要確定 CmdLearn.pm 是不是非 root 權限的人可以讀到? 如果不行的話,就下 chmod 打開權限就可以了。如果不確定 CmdLearn.pm 路徑的話可以下 #locate CmdLearn.pm 找看看。
但是要注意的是目錄的權限也要開,以我的環境 CmdLearn.pm 在 RH9 的 RPM 預設是裝在:
/usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/
而我是乾脆把整個目錄都把 Group 跟 Public 讀取跟執行的權限打開:
chmod 555 /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/ -R
這樣每個使用者就可以開始使用 OpenWebMail 的擋廣告信及學習廣告信的功能了。
================================================================
将 MailScanner 日志单独写入 MailScanner.log 文件
原来 MailScanner 是将日志写入 maillog 的,每次查找垃圾邮件问题都十分不方便,参照:
http://www.extmail.org/forum/thread-6864-1-1.html
首先安装 Syslogd 服务, apt-get install syslogd 即可!
(1)在 /etc/MailScanner/MailScanner.conf 中,修改下面这个参数:
Syslog Facility = mail
改为
Syslog Facility = local0
(2)在 /etc/syslog.conf 中增加相应的一行:
local0.info /var/log/MailScanner.log
(注明:中间空格处用 TAB 键)
(3)生成一下日志文件:
# touch /var/log/MailScanner.log
(4)重启一下 MailScanner 服务和 syslogd 系统日志服务:
# /etc/init.d/syslogd restart
# /etc/init.d/mailscanner restart
(5)验证一下,成功了:
# tail -f /var/log/MailScanner.log
看到日志在增加。