1 . 環境
1.1 電腦環境
Linux版本 : CentOS 5.2 最小安裝
電腦名稱 : mail.test.com.tw
IP資訊 : 192.168.239.170
DNS需求
: 須新增一筆
MX紀錄指向mail.test.com.tw
test.com.tw MX 10 mail.test.com.tw
mail IN
A 192.168.239.170
反解紀錄 : 一般申請ISP的時候會給你一筆反解紀錄,若無特別需求不需自行設定。需反解紀錄是因為 Postfix在收信的時候會解析對方的反解紀錄,對方收你的信時也會解析你的反解紀錄。解析的到反解即可,即使是反解是解析出ISP的名稱也沒關西。
防火牆需求 : 對外IP的 TCP25、TCP110 port須指向 192.168.239.170。
1.2 所需設定檔
/etc/portfix/main.cf
1.2 安裝所需要的套件
建立給掛載光碟的資料夾
# mkdir /cdrom
掛載光碟
# mount /dev/cdrom /cdrom
# cd /cdrom/CentOS/
安裝postfix
MTA套件
# rpm -ivh
postfix-2.3.3-2.i386.rpm
停止sendmail服務
[root@localhost CentOS]#
service sendmail stop
移除sendmail
[root@localhost CentOS]#
rpm -e sendmail
安裝dovecot 套件
# rpm -ivh \
dovecot-1.0.7-2.el5.i386.rpm
\
mysql-5.0.45-7.el5.i386.rpm
\
postgresql-libs-8.1.11-1.el5_1.1.i386.rpm
\
perl-DBI-1.52-1.fc6.i386.rpm
2 . 設定 Postfix 以及 dovecot
Postfix 設定檔 /etc/postfix/main.cf 以達郵件收發功能
# vi /etc/postfix/main.cf
myhostname = mail.test.com.tw #主機名稱
mydomain = test.com.tw #網域名稱
myorigin = $mydomain #發信端機
inet_interfaces = all #監聽介面
mydestination = $myhostname,
$mydomain #信件的目的網域符合將信收下來
mynetworks = 127.0.0.0/8, 192.168.239.170 #可以Relay的條件
視情況新增以下設定
maximal_queue_lifetime =
180s #寄不出去的信保留180秒
bounce_queue_lifetime =
180s #寄不出去的信回傳信號180秒
mailbox_size_limit = 0
# 預設50M信箱大小,0為沒限制。
message_size_limit = 0 # 信件大小,預設10M,0為沒限制。
Dovecot設定檔 /etc/dovecot.conf 已達POP3收信功能
# vi /etc/dovecot.conf
protocols = pop3
listen = [*]
重新啟動 postfix 以及 dovecot 即可達到郵件收發以及POP3收信之功能。
# service postfix restart
# service dovecot restart
開機自動啟動服務
# chkconfig postfix on
# chkconfig dovecot on
3 . SMTP認證
3.1 概述
l 內部網路收發信正常(DNS以及防火牆均指向正確)。
l 外部網路POP3收信正常,但無法寄信。
無法寄信的問題在於main.cf中mynetworks 參數中只有127.0.0.0/8 以及192.168.239.170兩個本機主機IP可以做mail relay的動作,所以要達到外部網路寄信(使用者在家可收發信)有兩個方向可以進行。
l Open Relay (此動作會造成此主機被當成垃圾郵件轉寄站)。
mynetworks = 127.0.0.0/8, 0.0.0.0/0
l SMTP寄信驗證
Outlook想要使用Postfix 來進行寄信的時候,Postfix 會要求 Outlook來輸入認證用的帳號與密碼,以取得寄信的權限,但全公司內部也必須做此設定。
3.2 設定SMTP認證機制
# vi /etc/sysconfig/saslauthd
MECH=pam
#預設值
# vi /usr/lib/sasl2/smtpd.conf
pwcheck_method:
saslauthd # 預設值
# vi /etc/postfix/main.cf
在最下方加入以下設定
smtpd_sasl_auth_enable = yes # 啟動 sasl 認證
smtpd_sasl_security_options = noanonymous # 不予許匿名Relay
broken_sasl_auth_clients = yes # 支援非正規通訊協定標準的MUA
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination
permit_mynetworks # 允許mynetworks參數中所設定的範圍做匿名Relay
permit_sasl_authenticated # 允許通過sasl認證Relay。
reject_unauth_destination # 退回未經驗證的連線
重新啟動 postfix 以及 saslauthd
# service saslauthd restart
# service postfix restart
開機自動啟動sasl認證服務
# chkconfig saslauthd on
每分鐘自動重新寄Queue裡的信
# crontab -e
*/1 * * * * /usr/sbin/postqueue -f
3.3 Outlook Express針對SMTP認證所做之設定。
我的伺服器區要驗證打勾即可,如此一來使用者在家中可以正常收發信了,也不必擔心會被當成垃圾郵件轉寄站。
一些小密技 :
佇列操作
postqueue -p 列出佇列內容
postqueue -f 重新執行佇列內容
postsuper -d ALL 刪除佇列內容
其他關於Queue的相關資源
/etc/postfix/main.cf
minimal_backoff_time (1000s)
最短重新寄信的時間時間,預設1000秒(測試過,沒作用)。
maximal_backoff_time (4000s)
最短重新寄信的時間時間,預設1000秒(測試過,沒作用)。
maximal_queue_lifetime (5d)
信在Queue的存活時間,預設五天。
bounce_queue_lifetime (5d)
The maximal time a bounce message is
queued before it is considered undeliverable.