為中小企業(yè)用戶配置Postfix
假設(shè)有一家數(shù)千名員工的公司,該公司通過租用專線上網(wǎng)?,F(xiàn)在公司決定通過postfix來配置自己的郵件系統(tǒng)。在這里我們假設(shè)該公司的域為some.com, 郵件服務(wù)器的域名mail.some.com,地址為202.200.180.2,DNS服務(wù)器的域名為dns.some.com,地址為202.200.180.1。
1. 配置DNS服務(wù)器,配置MX記錄指向mail.some.com。相關(guān)的配置文件為/var/named/some.com(假設(shè)其zone文件就叫some.com)的內(nèi)容如下:
@ IN SOA dns.some.com. root.dns.some.com
(
2000011307 ; serial
28800 ; refresh, seconds
14400 ; retry, seconds
3600000 ; expire, seconds
86400 ; minimum, seconds
)
@ IN NS dns.some.com.
@ IN A 202.200.180.1
@ IN MX 10 mail.some.com.
localhost IN A 127.0.0.1
dns IN A 202.200.180.1
mail IN A 202.200.180.2
host1 IN A 202.200.180.3
host2 IN A 202.200.180.4
2. 配置postfix,其配置文件及相關(guān)的解釋如下:
#配置一般的路徑信息
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_spool_directory = /var/spool/mail
#配置郵件及郵件隊列的所有者為postfix
mail_owner = postfix
#配置郵件服務(wù)器的主機名
myhostname = mail.some.com
#配置mydomain、myorigin和mydomain參數(shù)
mydomain = some.com
myorigin =$mydomain
mydestination = $mydomain
#配置postfix服務(wù)監(jiān)聽的端口
inet_interfaces = all
#配置本地收件人的用戶名查詢手段,缺省是查詢/etc/passwd文件
#和別名數(shù)據(jù)庫
local_recipient_maps = $alias_maps unix:passwd.byname
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#配置最終的本地投遞代理程序,在這里我們使用流行的procmail
mailbox_command = /usr/bin/procmail
#配置該值為$mydomain以便客戶端的連接
relay_domains = $mydomain
mynetworks = 202.200.180.0/24
#配置向用戶顯示的主機名和版本信息
smtpd_banner = $myhostname ESMTP $mail_name
#對于并發(fā)進(jìn)程的限制,保持系統(tǒng)缺省值就可以滿足要求了。
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
#如果你不知道你在做什么,***不要改變下面的配置
debug_peer_level = 2
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
3. 在RedHat中我們通常使用imap作為pop3服務(wù)器,可以通過rpm -q imap
命令查看系統(tǒng)有沒有安裝imap。如果沒有安裝則插入linux光盤,用rpm -ivh imap-4.5-4.rpm 進(jìn)行安裝。
4. 缺省地,pop3服務(wù)器是由inet 啟動的,所以必須去掉/etc/inetd.conf文
件中有關(guān)pop3的一行注釋。如下所示:
pop-3 stream tcp nowait root /usr/sbin/ipop3d ipop3d
5. 重新啟動inet服務(wù)器,啟動postfix:
#/etc/rc.d/init.d/inet restart
#postfix start
在防火墻內(nèi)部配置postfix
假設(shè)一公司通過租用專線上網(wǎng),公司內(nèi)部使用192.168.0.0的私有ip, 然后通過防火墻(雙宿主主機)的ip欺騙上網(wǎng),公司的郵件服務(wù)器(mail.some.com)也在內(nèi)部網(wǎng)中,也使用私有ip。我們假設(shè)在防火墻上進(jìn)行了端口轉(zhuǎn)發(fā),可以將Internet對防火墻25端口的請求包轉(zhuǎn)發(fā)到內(nèi)部的郵件服務(wù)器上,并且運行DNS服務(wù)的防火墻的MX記錄指向防火墻本身。
在這個例子中,我想著重說明的是有關(guān)映射文件的用法。main.cf配置文件和相關(guān)的解釋如下所示:
#表明自己的身份
myhostname = mail.some.com
mydomain = some.com
mydestination = $mydomain, $myhostname, localhost.$mydomain
myorigin = $mydomain
#讓postfix監(jiān)聽所有接口
inet_interfaces = all
#通過mynetworks參數(shù)接受內(nèi)部網(wǎng)用戶的SMTP連接請求
mynetworks = 192.168.0.0/8
#向postfix管理員報告的信息量
notify_classes = resource, software, bounce, policy
#如果客戶端的ip地址符合$maps_rbl_domains參數(shù)中列出的則拒絕之
maps_rbl_domains = rbl.maps.vix.com, dul.maps.vix.com
#對可以連接的客戶端進(jìn)行嚴(yán)格的限制
smtpd_client_restrictions =
#客戶端ip符合$mynetworks定義的范圍則接受連接
permit_mynetworks,
#根據(jù)access的查詢結(jié)果判斷客戶端連接的合法性
check_client_access hash:/etc/postfix/access,
#拒絕ip符合$maps_rbl_domains定義范圍的連接
reject_maps_rbl,
#如果客戶端在DNS中沒有記錄則拒絕連接,要慎用
reject_unknown_hostname
#通過發(fā)件人的地址進(jìn)行限制
smtpd_sender_restrictions =
permit_mynetworks,
check_sender_access hash:/etc/postfix/access
#配置虛擬主機數(shù)據(jù)庫,別忘了執(zhí)行"postmap virtual"進(jìn)行格式轉(zhuǎn)換
virtual_maps = hash:/etc/postfix/virtual
#對無系統(tǒng)帳號的郵件進(jìn)行轉(zhuǎn)發(fā)配置,如離開公司的員工
relocated_maps = hash:/etc/postfix/relocated
#配置別名數(shù)據(jù)庫
alias_maps = hash:/etc/postfix/aliases
# 我們使用smtp投遞代理
default_transport = smtp
# 一些常規(guī)配置
mail_owner = postfix
default_privs = nobody
#配置路徑信息
queue_directory = /var/spool/postfix
program_directory = /usr/libexec/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_spool_directory = /var/spool/mail
mailbox_command = /usr/bin/procmail
#并發(fā)連接配置
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
然后,我們執(zhí)行以下命令:
#進(jìn)入postfix配置目錄
cd /etc/postfix
#用newaliases初始化別名數(shù)據(jù)庫
newaliases
#用postmap分別建立virtual、access和relocated查詢數(shù)據(jù)庫
postmap virtual
postmap access
postmap relocated
#啟動postfix
/etc/rc.d/init.d/postfix start
現(xiàn)在我們來看看virtual、access和reloacted幾個查詢文件的格式,下面是這幾個文件的示例和注釋:
#virtual文件示例
#假設(shè)在這個例子中我們有個虛擬域為other.com
other.com
#access 文件示例
#如果符合前面的條件則進(jìn)行后面操作,可以有三種操作:
#1. [45]XX $messag:拒絕接受并且向客戶端顯示預(yù)定義的信息
#2. REJECT:拒絕接受,不顯示信息
#3. OK允許連接
ispy99@noman.com.cn 550 Go away
friend.com OK
202.192 REJECT
#relocated 文件示例
#該文件主要是將發(fā)給無系統(tǒng)帳號的郵件進(jìn)行轉(zhuǎn)發(fā)
who@some.com onetwo@newone.com
【編輯推薦】