Fedora10-postfix mail 系統筆記
postfix 設定
postfix 版本: postfix-2.5.6-2.fc11.i386
1. 設定檔位置 /etc/postfix/main.cf
設定 postfix 可接收外部連線
修改 /etc/postfix/main.cf
將 inet_interfaces = all 這一行#號拿掉
將 inet_interfaces = localhost 這行前面加上 #號註解
設定 domain name
mydomain = mail2.pmail.idv.tw
設定 hostname
myhostname = mail2.pmail.idv.tw
設定完成重新啟動postfix 服務 –> 指令 service postfix restart
測試連線
[root@mail2 postfix]# telnet 192.168.3.14 25
Trying 192.168.3.14…
Connected to 192.168.3.14.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw ESMTP Postfix
[root@mail2 postfix]# telnet mail2.pmail.idv.tw 25
Trying 59.120.154.239…
Connected to mail2.pmail.idv.tw.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw ESMTP Postfix
2.設定postfix SMTP 驗證
安裝 cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl 套件
利用 yum install cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl
版本 :
- cyrus-sasl-md5-2.1.22-20.fc11.i386
- cyrus-sasl-plain-2.1.22-20.fc11.i386
- cyrus-sasl-2.1.22-20.fc11.i386
修改 /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
設定啟動 saslauthd 服務,並設定開機自動啟動
指令
- chkconfig saslauthd on
- service saslauthd restart
利用telnet 測式smtp認證功能是否生效(要有出現 LOGIN PLAIN才算)
[root@mail2 postfix]# telnet 192.168.3.14 25
Trying 192.168.3.14…
Connected to 192.168.3.14.
Escape character is ‘^]’.
220 mail2.pmail.idv.tw 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
安裝MailScanner
官方網站 : http://www.mailscanner.info/
安裝版本 : MailScanner-4.74.16-1.rpm.tar.gz
1.安裝前準備: 需要有gcc ,rpm-build ,perl-MIME-tools 套件
利用yum 安裝
指令: yum install gcc rpm-build perl-MIME-tools
2. 解壓縮 tar zxvf MailScanner-4.74.16-1.rpm.tar.gz
3. 切換到 MailScanner-4.74.16-1 目錄
4. ./install.sh ( 開始安裝MailScanner ,需要一點時間)
安裝好 MailScanner 後 使用 sendmail 就不需特別設定
設定開機自動啟動MailScanner —> 指令 chkconfig MailScanner on ( 記得要把 postfix 設定開機不啟動)
5.MailScanner和postfix搭配使用時所需的設定:
修改 /etc/postfix/main.cf 裡面 這一行—-> header_checks = regexp:/etc/postfix/header_checks 將#註解拿掉
修改 /etc/postfix/ header_checks 加上這一行 ——–> /^Received:/ HOLD (這是為了讓Postfix收進來的mail 先儲
存在某一個Directory裡面,等待MailScanner 來進行Scan )
修改 /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
安裝mail掃毒軟體 clamav
利用 yum install clamav 安裝即可
設定MailScanner 使用的掃描軟體 修改 /etc/MailScanner/MailScanner.conf
將 Virus Scanners = auto 改為 Virus Scanner = clamav
安裝mail過濾廣告信軟體 spamassassin
利用 yum install spamassassin 安裝即可
設定MailScanner 使用的掃描軟體 修改 /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 = (加上#)
建立目錄
mkdir /var/spool/MailScanner/spamassassin
修改此目錄權限
chown postfix.postdrop spamassassin
MailScanner中的白名單設定方法:
設定檔:/etc/MailScanner/rules/spam.whitelist.rules 針對你希望不被標示的範圍進行加註:
要使用白名單功能時請確定下面功能是否有開啟
Is Definitely Not Spam = %rules-dir%/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 |
安裝 OpenWebmail
官方網站 http://www.openwebmail.org
版本是openwebmail 2.53
在官網上下載有關於openwebmail的套件如下
openwebmail-2.53-1.i386.rpm
openwebmail-2.53-2.i386.rpm
openwebmail-2.53-3.i386.rpm
openwebmail-data-2.53-1.i386.rpm
openwebmail-data-2.53-2.i386.rpm
openwebmail-data-2.53-3.i386.rpm
所需套件 perl perl-Compress-Zlib perl-suidperl perl-Text-Iconv
可以利用 yum perl perl-Compress-Zlib perl-suidperl perl-Text-Iconv 安裝
安裝openwebmail
rpm -ivh –force –nodeps openwebmail-*
rpm -ivh –force –nodeps openwebmail-data-*
設定 openwebmail
修改 /var/www/cgi-bin/openwebmail/etc/dbm.conf
dbm_ext .db
dbmopen_ext .db
dbmopen_haslock yes
修改 /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
domainnames pmail.idv.tw ( 修改為自己的domain name)
default_iconset Cool3D.Chinese.Traditional (讓openwebmail 介面ICOM 變成中文的)
修改 /var/www/cgi-bin/openwebmail/etc/defaults/openwebmail.conf
smtpserver 192.168.1.5 (修該為子己的smtp IP位址)
初始化openwebmail
下達只令 /var/www/cgi-bin/openwebmail/openwebmail-tool.pl –init
最後會問你要不要傳 report
Send the site report?(Y/n) y 選y即可
啟動 Apache server –> service httpd start
openwebmail 連線位址 http://yourdomain or ip /cgi-bin/openwebmail/openwebmail.pl
簡化登openwebmail 登入網址的長度
在openwebmail 2.53 若是以rpm安裝方式就不須手動在 /etc/httpd/conf/httpd.conf 加入
ScriptAlias /webmail /var/www/cgi-bin/openwebmail/openwebmail.pl
因rpm安裝時就會自動再 /etc/httpd/conf.d 目錄下面產生 openwebmail.conf 裡面就已包含簡化的設定
重新啟動Apache 服務 service httpd restart
設定 Aapche 開機自動啟動 chkconfig httpd on
連線位址就變成 http://yourdomain or ip /webmail
安裝Mailwatch 管理程式
官方網站:http://mailwatch.sourceforge.net/
版本: mailwatch-1.0.4.tar.gz
所需套件 : mysql php
利用 yum -y install php mysql mysql-server php-mysql php-gd php-mbstring 指令安裝相關套件
設定 mysql root 密碼 : mysqladmin -u root password ‘密碼’
設定 mysql 服務開機自動啟動 chkconfig mysqld on
啟動 mysqld 服務 : service mysqld start
步驟 : (這是參考官方網站及我自己想出來的安裝方式僅供參考)
1. 建立一個 user 帳號 mailwatch 及設定密碼
2. 至官方網站下載mailwatch-1.0.4.tar.gz
3. 解壓縮
tar zxvf mailwatch-1.0.4.tar.gz
cd mailwatch-1.0.4
4.建立mailwatch 資料庫
mysql -u root -p < create.sql
ps:
下達匯入資料庫指令時出現下面錯誤訊息
[root@mail2 mailwatch-1.0.4]# mysql -u root -p < create.sql
Enter password:
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘——————————————————-
CREATE DATABASE /*’ at line 1
解決方法 :
編輯 vi create.sql 將 ——————————————————— 此行刪除即可匯入資料庫
5. 設使用者mailwatch擁有這個資料庫的權限,指令如下
mysql -u root -p ( 會進入mysql 命令列模式)
mysql>grant all on mailscanner.* to mailwatch@localhost identified by ‘密碼”; ( 此密碼是該mailwatch密碼最後有分號)
mysql> exit
6. 修改MailWatch.pm中$db_user 為mailwatch,$db_passwd為mailwatch 帳號的密碼 ( MailWatch.pm檔案位於之前解壓出來的目錄mailwatch-1.0.4)
將該檔案移動至 /usr/lib/MailScanner/MailScanner/CustomFunctions
指令 : mv MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions
7. 新增網頁登入的名稱,資料庫登入使用(6)的名稱及密碼,但下面則新增別的user-password,為登入驗證,
你可以新增多個,使用下面 insert into的sql指令
mysql mailscanner -u mailwatch -p ( mailscanner 就是mailwatch資料庫名稱,mailwatch 就是前面步驟可以管理此資料庫的帳號)
Enter password: ******
mysql> insert into users values(‘<名稱>’,md5(‘<密碼>’),'<name>’,’A’,’0′,’0′,’0′,’0′,’0′);
mysql> exit
說明 : 如要讓登入 mailwatch 網頁介面 的帳號密碼都是admin / admin 就設定入下
insert into users values(‘admin’,md5(‘admin’),’admin’,’A’,’0′,’0′,’0′,’0′,’0′);
8. 將MailWatch的mailscanner移至網頁伺服器的目錄(/var/www/html)
cd /mailwatch-1.0.4
mv mailscanner /var/www/html
9. 檢查權限/var/www/html/mailscanner/images
cd /var/www/html/mailscanner
chown root.apache images
chmod ug+rwx images
10. 建立conf.php
cd /var/www/html/mailscanner
cp conf.php.example conf.php
修改 下面的密碼,不然會無法網頁登入(就是mysql root 密碼)
vi config.php
define(DB_PASS, ‘密碼’);
11. 修改 MailScanner 設定
cd /etc/MailScanner
vi MailScanner.conf
#下面的參數
Always Looked UP Last = &MailWatchLogging
Detailed Spam Report = yes
Quarantine Whole Message = yes
Quarantine Whole Message As Queue files =no
Include Scores In SpamAssassin Report = yes
Quarantine User= root
Quarantine Group=apache
Quarantine Permissions=0660
12. 修改spam.assassin.prefs.conf (如果你有安裝spamassassin)
vi /etc/MailScanner/ spam.assassin.prefs.conf
#加入兩行
bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660
#建立新的目錄bayes及權限設定
mkdir /etc/MailScanner/bayes
chown root:apache /etc/MailScanner/bayes
chmod g+rws /etc/MailScanner/bayes
#如果已經存在bayes資料庫,複製過來
cp /root/.spamassassin/bayes_* /etc/MailScanner/bayes
chown root:apache /etc/MailScanner/bayes/bayes_*
chmod g+rw /etc/MailScanner/bayes/bayes_*
#測試spamassassin
spamassassin -D -p /etc/MailScanner/spam.assassin.prefs.conf –lint
#你將會看到一些訊息
重新啟動MailScanner
service MailScanner restart
除錯tail -f /var/log/maillog , 查看是否正常
開啟你的瀏覽器http://<hostname>/mailscanner
會磞出一個對話框,輸入在步驟7中所建立的使用者名稱及密碼
安裝dovecot pop3 服務
利用 yum install dovecot 安裝
設定啟動 dovecot 服務,並設定開機自動啟動
- chkconfig dovecot on
- service dovecot start
安裝 Postgrey 軟體抵擋廣告信
官方網址: http://postgrey.schweikert.ch/
參考網站 :
http://www.postfix.org/SMTPD_POLICY_README.html
http://i-yow.blogspot.com/2008/09/part-postgrey-postgrey-centos-5.html
在Fedora 安裝方式 : yum install postgrey
版本 : postgrey-1.31-1.fc10.noarch.rpm
所需相關套件如下
perl-IO-Multiplex-1.10-1.fc10.noarch.rpm
perl-Net-Server-0.97-5.fc10.noarch.rpm
perl-BerkeleyDB-0.34-1.fc10.i386.rpm
compat-db46-4.6.21-5.fc10.i386.rpm ( 參考官方網站是不須此套件, 但利用yum 安裝 postgrey 時會自動安裝)
設定 postgrey
方法 1. 修改 /etc/postfix/main.cf 加入下面藍色部份設定(其他的在上面步驟已經設定)
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_policy_service unix:/var/spool/postfix/postgrey/socket
方法 2.
- 修改地點1 /etc/init.d/postgrey
將 OPTIONS=”–UNIX=$SOCKET”
改為 OPTIONS=”–inet=60000 –user=postfix –group=postdrop –delay=60″
- 修改地點2 /etc/postfix/main.cf 加入下面藍色部份設定(其他的在上面步驟已經設定)
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_policy_service inet:127.0.0.1:60000
- 修改地點3 變更postgrey權限chown postfix.postdrop /var/spool/postfix/postgrey -R
設定啟動 postgrey 服務,並設定開機自動啟動
- chkconfig postgrey on
- service postgrey start
服務啟動後在/var/log/maillog 會看到下面訊息
Jan 29 05:26:14 mail2 postgrey: Process Backgrounded
Jan 29 05:26:14 mail2 postgrey: 2009/01/29-05:26:14 postgrey (type Net::Server::Multiplex) starting! pid(8304)
Jan 29 05:26:14 mail2 postgrey: Binding to TCP port 60000 on host 127.0.0.1#012
Jan 29 05:26:14 mail2 postgrey: Setting gid to “90 90”
Jan 29 05:26:14 mail2 postgrey: Setting uid to “89”
如果是使用方法2設定可利用 netstat -a | grep 60000 查看服務如下
[root@mail2 postfix]# netstat -a | grep 60000
tcp 0 0 localhost.localdomain:60000 *:* LISTEN
postgrey白名單設定
如果想要某些主機不透過postgrey抵擋機制可以將該主機加入/etc/postfix/postgrey_whitelist_clients 此檔中
例如 : 要把msa.hinet.net 及 mail.abc.com 排除抵擋機制
msa.hinet.net
mail.abc.com
PS: 一台主機一行
測試用外部信箱寄一封信會先看到 /var/log/maillog 訊息(紅色字體),下面訊息是整個過程先被退信然後過不就後又寄進來的完整log
Jan 29 04:47:24 mail2 postfix/smtpd[7587]: connect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:47:25 mail2 postgrey: action=greylist, reason=new, client_name=bay0-omc1-s24.bay0.hotmail.com, client_address=65.54.246.96, sender=web711@hotmail.com, recipient=roylee@mail2.pmail.idv.tw
Jan 29 04:47:25 mail2 postfix/smtpd[7587]: NOQUEUE: reject: RCPT from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]: 450 4.2.0 <roylee@mail2.pmail.idv.tw>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/mail2.pmail.idv.tw.html; from=<web711@hotmail.com> to=<roylee@mail2.pmail.idv.tw> proto=ESMTP helo=<bay0-omc1-s24.bay0.hotmail.com>
Jan 29 04:47:25 mail2 postfix/smtpd[7587]: disconnect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:48:26 mail2 postfix/smtpd[7622]: connect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:48:27 mail2 postgrey: action=pass, reason=triplet found, delay=62, client_name=bay0-omc1-s24.bay0.hotmail.com, client_address=65.54.246.96, sender=web711@hotmail.com, recipient=roylee@mail2.pmail.idv.tw
Jan 29 04:48:27 mail2 postfix/smtpd[7622]: 248153A2090: client=bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
Jan 29 04:48:27 mail2 postfix/cleanup[7611]: 248153A2090: hold: header Received: from bay0-omc1-s24.bay0.hotmail.com (bay0-omc1-s24.bay0.hotmail.com [65.54.246.96])??by mail2.pmail.idv.tw (Postfix) with ESMTP id 248153A2090??for <roylee@mail2.pmail.idv.tw>; Thu, 29 Jan 2 from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]; from=<web711@hotmail.com> to=<roylee@mail2.pmail.idv.tw> proto=ESMTP helo=<bay0-omc1-s24.bay0.hotmail.com>
Jan 29 04:48:27 mail2 postfix/cleanup[7611]: 248153A2090: message-id=<BAY122-W1CA7C24BC14B218E3C49188C80@phx.gbl>
Jan 29 04:48:27 mail2 postfix/smtpd[7622]: disconnect from bay0-omc1-s24.bay0.hotmail.com[65.54.246.96]
本篇瀏覽人數: 7280