CentOS 6.0 Mail建置流程 Postfix+dovecot+MailScanner+Clamav+Spamassassin

最近裝一台MailServer備援,跟之前在RH9及FC5 上裝略有不同,
所以又重新學習一次...
Jabamo寫得很詳細
因為我是裝CentOS 6.0,所以稍微修改Jabamo的文章,最大是差在版本上,如下


關閉SELinux
vi /etc/sysconfig/selinux
SELINUX=enforcing
改成 SELINUX=disabled

安裝RPMforge
rpm -Uvh http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
RPMforge
Dag, Dries和其他的打包者合作的套件庫,提供CentOS超過4000種以上的套件

更新套件
yum -y update


網路校時
yum -y install ntp      #
安裝NTP
/usr/sbin/ntpdate tock.stdtime.gov.tw  #執行網路校時針對 tock.stdtime.gov.tw
/usr/sbin/hwclock -w   #將時間寫入BIOS
vi /etc/crontab 
10 5 * * * root /usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock –w  
#排程自動校時每天5:10校時

安裝Postfix
1.移除sendmail安裝postfix 
/etc/init.d/sendmail stop #停用sendmail 
yum install postfix     #安裝postfix 
rpm -e sendmail       #移除sendmail 
service postfix start     #啟動postfix服務
2. postfix設定
版本: postfix- 2.6.6-2.1.el6.i686
設定檔位置 /etc/postfix/main.cf
設定 postfix 可接收外部連線
vi /etc/postfix/main.cf
inet_interfaces = all              這一行#號拿掉
inet_interfaces = localhost  這行前面加上#號註解
mydomain = test.com
myhostname = mail.test.com
service postfix restart        #
重新啟動postfix服務
測試連線
[root@mail2 postfix]# telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 pororo.no-ip.org ESMTP Postfix

quit 離開
3. 設定postfix SMTP 驗證
安裝 cyrus-sasl-md5  cyrus-sasl-plain  cyrus-sasl 套件
yum install cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl
vi /etc/postfix/main.cf #
加入下面設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
chkconfig saslauthd on   #
設定開機啟動
service saslauthd restart    #
啟動saslauthd服務
利用telnet 測式smtp認證功能是否生效(要有出現LOGIN PLAIN才算)
[root@mail2 postfix]# telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
220 pororo.no-ip.org ESMTP Postfix
ehlo localhost
250-mail2.pmail.idv.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


main.cf 中還有很多細項功能,可另 google 學習

安裝dovecot pop3服務
yum install dovecot #
安裝dovecot 
vi /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s
#註解拿掉
disable_plaintext_auth = no 確認是否有
mail_location = mbox:~/mail:INBOX=/var/mail/%u  確認是否有
設定啟動 dovecot 服務,並設定開機自動啟動
chkconfig dovecot on
service dovecot start

安裝MailScanner
官方網站 : http://www.mailscanner.info/安裝版本 : Mailscanner-4.83.5-1
1.
yum install gcc rpm-build perl-MIME-tools  #
安裝必要套件
2. wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.83.5-1.rpm.tar.gz
3. tar -zxvf MailScanner-4.83.5-1.rpm.tar.gz   #解壓縮
4. cd MailScanner-4.83.5-1  #切換至該目錄下
5.  ./install.sh #安裝需要一點時間,安裝好後使用sendmail不需特別設定,以下為搭配postfix設定
service postfix stop           #
停用postfix 
chkconfig postfix off          # postfix設定開機不啟動
chkconfig MailScanner on  #
設定開機啟動(MailScanner會自動呼叫 postfix Spamassassin;clamav)
service MailScanner start   #啟用MailScanner
6. MailScannerpostfix搭配使用時所需的設定:
vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
#註解拿掉
vi /etc/postfix/header_checks
/^Received:/ HOLD #
加上這一行
這是為了讓Postfix收進來的mail 先儲存在某一個Directory裡面,等待MailScanner 來進行Scan 
vi /etc/MailScanner/MailScanner.conf 如下:
Run As User = postfix  #
設定執行postfix 的使用者名稱
Run As Group = postdrop  #
設定執行postfix 的群組名稱
Incoming Queue Dir = /var/spool/postfix/hold #
內送郵件的佇列目錄,設定為postfix目前的佇列目錄下的hold目錄
Outgoing Queue Dir = /var/spool/postfix/incoming #
外送郵件的佇列目錄,設定為postfix目前的佇列目錄下的incoming目錄
MTA = postfix #
設定mailscanner postfix 搭配使用
ps:可利用下面這一串指令查詢
postconf|grep -E 'mail_owner|setgid_group|queue_directory' #
執行這一段指令
mail_owner = postfix           
這是執行postfix 的使用者名稱
queue_directory = /var/spool/postfix  
這是postfix的佇列目錄
setgid_group = postdrop         
這是執行postfix的群組名稱
修改權限:  
chown postfix.postdrop /var/spool/MailScanner/incoming
chown postfix.postdrop /var/spool/MailScanner/quarantine

:我在安裝完MailScanner檢視一下Maillog都會出下以下錯誤訊息
MailScanner[2248]:
Could not create Processing Attempts Database "/var/spool/MailScanner/incoming/Processing.db"
解決方法: chown postfix.postfix Processing.db

啟動MailScanner的問題
MailScanner雖然裝好,啟動也顯示OK,但信件卻全佇列在Hold中,這通常是perl的套件少裝了,像我是少了perl-Net-CIDR 套件,然後再重新安裝MailScanner
如有開啟MailScanner中的Debug,記得要關閉,
要不然會像我一樣,啟動MailScanner時,在啟動等很久,幾乎是不動,
Maillog是會一直停在Using locktype = flock
可參閱這篇

安裝Clamav
套件可以到以下網站來下載 http://packages.sw.be/clamav/安裝版本clamav-0.97.1-1
1.
下載安裝套件
wget http://packages.sw.be/clamav/clamav-0.97.1-1.el6.rf.i686.rpm
wget http://packages.sw.be/clamav/clamav-db-0.97.1-1.el6.rf.i686.rpm
wget http://packages.sw.be/clamav/clamav-devel-0.97.1-1.el6.rf.i686.rpm
wget http://packages.sw.be/clamav/clamd-0.97.1-1.el6.rf.i686.rpm
如果你是使用sendmail的話要多下載clamav-milter <--for sendmail only此套件
如果使用postfix就只要下載上面4rpm就可以了
2.下載完後先將所有舊的clamav移除
yum remove clamav-*   #
移除,如果先前有安裝舊版本
rpm -ivh clam*.rpm       #
安裝
freshclam
                    #更新病毒碼
service clamd start
     #啟動服務(有搭配MailScanner就不需要做這一步驟)
3. 設定MailScanner使用的掃毒軟體
vi /etc/MailScanner/MailScanner.conf
Virus Scanners = auto改為 Virus Scanners = clamav
4. 排程每天0,12點更新病毒碼
vi /etc/crontab
0 0,12 * * * root /usr/bin/freshclam

5. 測試,EICAR病毒測試檔 http://eicar.org/85-0-Download.html

過濾廣告信軟體spamassassin
1.
安裝spamassassin
yum install spamassassin
service spamassassin start #
啟動服務
2. 修改MailScanner設定檔
vi /etc/MailScanner/MailScanner.conf
Use SpamAssassin = yes                      #
預設是YES 若不搭配spamassassin使用改為no
Required SpamAssassin Score = 6       #
超過6等級就視為廣告信,當然可以依照使用者自已設定啦
High SpamAssassin Score = 10            #
超過10分列為高等級廣告信
SpamAssassin Auto Whitelist = yes   #
可以測量從不同位址發出的廣告信及非廣告信的比率如果寄信位的信件大多不為廣告信,系統會自動的增加位址至它本身擁有的非廣告信清單(whitelist) 
SpamAssassin Timeout = 75             #處理的郵件的最大等待時間() 
Spam Score Character = *           #設定分數用*號表示,預設是用s,要如何表示當然由自已設定囉
修改主旨設定(如果被判定為spam時會在信件主旨加上特註記) 
Spam Modify Subject = start               #no就是不修改主旨
Spam Subject Text = {Spam?}            #
可以自行修改想要的註記
High Scoring Spam Modify Subject = start
High Scoring Spam Subject Text = {Spam?} 

#如果被判定為病毒信時會在信件主旨加上特註記) 
Virus Modify Subject = start     #no就是不修改主旨
Virus Subject Text = {Virus?}   #
可以自行修改想要的註記
設定spamassass 狀態目錄
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin (
#取消)
SpamAssassin User State Dir = (
加上#)
3.建立目錄
mkdir /var/spool/MailScanner/spamassassin
chown postfix.postdrop spamassassin       #
修改此目錄權限
MailScanner
中的白名單設定方法:
用白名單功能時請請檢查MailScanner.conf 中的白名單設定是否有開啟喔
vi /etc/MailScanner/MailScanner.conf
Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules
vi /etc/MailScanner/rules/spam.whitelist.rules
針對你希望不被標示的範圍進行加註
常用語法:
對象:
From:            
針對信件的寄件者進行比對
To:                 
針對信件的收件者進行比對
FromOrTo:     
針對寄件者或收件者進行比對
FromAndTo:   
針對寄件者及收件者共同進行比對
比對的樣本
user@sub.domain.com            
單一的郵件位址
user@*                                   
單一帳號(不限定領域)*@*.domain.com                     domain.com下轄 subdomin下的任何帳號
*@donain.com                        
特定 domain.com 的任何帳號
192.168.                                  SMTP client IP
範圍 192.168.0.0/16
/^192.168.1[4567]./              SMTP client IP
範圍 192.168.14~17
範例
希望今天所有來自 *@*.mlc.edu.tw *@mlc.edu.tw 的信件都不被標示為spam
值為yes表示不會被標記為spam
From:   *@*.mlc.edu.tw   yes
From:  
*@mlc.edu.tw     yes



TLS 可參 Postfix/dovecot 的 SASL 與 SSL/TLS 指南


~~

 

沒有留言:

張貼留言