基于Postfix的大型郵件系統(tǒng)
原創(chuàng)【51CTO原創(chuàng)】Postfix是目前流行的一套郵件傳輸代理軟件(MTA),其作者Wietse Venema最初開發(fā)這套軟件時就對總體設計、擴展能力、可用性及系統(tǒng)安全等方面進行了充分的考慮。由于Postfix在穩(wěn)定、效率、安全和可用性上的優(yōu)勢,使得很多大型的郵件服務提供商都從原有的MTA軟件向Postfix過度,而新近誕生的郵件產品也大都采用了Postfix。網易、Tom和新浪都將原來的Qmail更換為Postfix,可見,Postfix在大規(guī)模郵件系統(tǒng)中有比較普遍的應用。當然,Postfix也完全適用設計中小型的郵件系統(tǒng),因為Postfix在保證了效率、安全、擴展等方面優(yōu)勢的同時,還具有配置簡單的特點。如何選擇一個好的郵件系統(tǒng)建立一個功能強大且性能穩(wěn)定的郵件服務器成為企業(yè)關注的問題,本文就介紹在Red Hat AS 5.4中如何安裝和配置Postfix,其中涵蓋了比較基本的防范垃圾和病毒的配置、管理等工作,讓大家領略Postfix系統(tǒng)的易用性及其強大性能,***介紹如何利用Postfix搭建大型分布式郵件系統(tǒng)。
一、Postfix與其他MTA的對比
眾多的MTA軟件中,最為有影響的應該是Sendmail、Qmail和Postfix。Sendmail是最古老的MTA之一,也擁有一批固定的使用者;Qmail是新生一代的MTA代表,其特點是速度快、體積小,并且容易配置安裝。Postfix起源于1996年,它采用模塊化設計,使用了大量優(yōu)秀的技術,以達到安全高效的目的。Postfix發(fā)展到現在已經成為功能非常豐富、擴展性和安全性非常強的優(yōu)秀MTA軟件。
■Sendmail
MTA軟件的很多先進功能都是在Sendmail上***實現的。但Sendmail也有典型的歷史問題,主要是整個程序的沒有實現良好的模塊化,運行時需要SID權限,以及配置文件復雜難懂。這些是阻礙Sendmail更好普及應用的一些客觀問題。
■Qmail
Qmail是新生一代的MTA代表,實現了模塊化設計,避免了SID問題,基本功能齊全,配置較Sendmail簡單,而且用戶也很廣泛。但Qmail最近幾年的開發(fā)工作基本停止,補丁程序也相對零亂,這些都是長期使用Qmail的用戶或者郵件服務提供商不得不認真考慮的問題。另外,Qmail的擴展性并不是很好,經常需要補丁來完成功能的擴展。
■Postfix
Postfix在設計上可以說是最為優(yōu)美的,其實現了良好的模塊化,郵件的處理流程是通過調用各個功能模塊來完成,在效率、功能、可用性、擴展及安全等方面都考慮得比較充分。
接下來將按步驟介紹在Red Hat AS 5下Postfix的安裝與配置,讀者會比較充分地體會到Postfix的易用性。 其中表1對比了Sendmail與Postfix Qmail的一些特點。
MTA |
成熟性 |
安全性 |
特色 |
性能 |
模塊化 |
Sendmail兼容性 |
Sendmail |
高 |
低 |
中 |
低 |
否 |
一般 |
Postfix |
中 |
中 |
中 |
中 |
是 |
支持 |
Qmail |
中 |
高 |
高 |
高 |
是 |
插件實現 |
表1 Sendmail與Postfix Qmail的對比
MTA 成熟性 安全性 特色 性能 模塊化 Sendmail兼容性
Sendmail 高 低 中 低 否 一般
Postfix 中 中 中 中 是 支持
Qmail 中 高 高 高 是 插件實現
表1 Sendmail與Postfix Qmail的對比#p#
二、基本郵件服務器搭建
Postfix的安裝與配置
■ 停止已經運行的MTA并使之失效。安裝Postfix之前,請檢查是否有其他MTA程序在運行,如果有則刪除系統(tǒng)原有的MTA,或者停止原有的MTA,并禁止init.d下該MTA的啟動腳本,避免重新引導的時候再次啟動。操作如下:
[root@cecmail opt]# ps -ef | grep Sendmail
root 1919 1 0 May18 00:00:00 Sendmail: accepting connections
smmsp 1927 1 0 May18 00:00:00 Sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root 9014 8835 0 22:14 pts/3 00:00:00 grep Sendmail
顯示的信息說明系統(tǒng)正在運行Sendmail,可以直接刪除Sendmail。操作如下:
#killall sendmail
Sendmail: no process killed
[root@cecmail ]# rpm -e Sendmail --nodeps
■ 添加組用戶。操作如下:
[root@cecmail opt]# groupadd Postfix
[root@cecmail opt]# groupadd postdrop
[root@cecmail opt]# cat /etc/group
mysql:x:500: www:x:501: luanzhaodong:x:502: Postfix:x:503: postdrop:x:504:
通過查看Group文件,可以判斷添加組是否成功。
■ 添加Postfix用戶。操作如下:
[root@cecmail opt]#useradd Postfix -g Postfix -c "Postfix user" -d /dev/null -s /sbin/nologin
[root@cecmail opt]#cat /etc/passwd mysql:x:500:500::/home/mysql:/bin/bash
www:x:501:501::/home/www:/bin/bash
Postfix:x:502:503:Postfix user:/dev/null:/sbin/nologin
通過查看passwd文件,可以判斷添加用戶是否成功。
■ 到Postfix官方網站(http://www.postfix.org/)下載Postfix源碼文件,并復制到服務器的某個目錄下,比如,可以下載到/opt/postfix目錄。操作如下:
[root@cecmail Postfix-2.6.5]# mkdir /opt/postfix/
[root@cecmail Postfix-2.6.5]# /opt/postfix/
[root@cecmail Postfix-2.6.5]# tar xzvf Postfix-2.6.5.tar.gz
■ 編譯安裝Postfix。操作如下:
[root@cecmail Postfix-2.6.5]# cd Postfix-2.6.5
[root@cecmail Postfix-2.6.5]#make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -lsasl2'
查看Makefile文件是否成功生成。
[root@cecmail Postfix-2.6.5]# ls Makefile
Makefile
上面代碼說明Makefile文件已經生成??梢赃M行編譯及安裝了。
[root@cecmail Postfix-2.6.5]# make
[root@cecmail Postfix-2.6.5]# make install
安裝時系統(tǒng)會提示用戶輸入一些參數,比如隊列文件的路徑、戶和組信息,但是,安裝程序本身會提供默認的參數,一般情況下不需要手動修改這些默認參數,直接回車即可。這樣,Postfix就成功安裝完畢。 ■ 編輯main.cf
在啟動Postfix之前,需要簡單的配置一下Postfix。Postfix的主要配置文件是/etc/Postfix/main.cf,為了實現最簡單功能,只需修改以下幾個參數即可:
mydomain
該參數指明域名,在這里指定:
mydomain = cec-cn.com
myorigin
myorigin參數指明發(fā)件人所在的域名。如果用戶的郵件地址為user@domain.com,則該參數指定@后面的域名。這個參數通常這樣設置:
myorigin = $mydomain
mydestination
mydestination參數指定Postfix接收郵件時收件人的域名。簡單地說,也就是Postfix系統(tǒng)要接收什么樣的郵件,一般只希望接受發(fā)給自己這個域名的郵件,所以,通常mydestination與myorigin一樣:
mydestination = $mydomain
mynetworks 該參數定義可以使用此SMTP服務器發(fā)信的客戶IP地址,一般設置為本機,或者本公司IP段,比如:
mynetworks = 192.168.1.0/24
myhostname
myhostname參數用于描述運行C-Link系統(tǒng)的服務器所符合規(guī)則的域名全稱。
可以在sh下運行命令查看域名:
[root@cecmail Postfix-2.6.5]# hostname Cecmail
本文按照下面內容來配置main.cf文件:
myhostname = cecmail
mydomain = cec-cn.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost,
$mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
■ 運行Postfix,操作如下:
[root@cecmail Postfix-2.6.5]#/opt/Postfix/Postfix-2.6.5/bin/Postfix start
Postfix/Postfix-script: starting the Postfix mail system
如果是安裝的postfix的rpm包,則
#service postfix start
Starting postfix:[確定]
#service dovecot start
啟動Dovecot Imap:[確定]
■ 測試MTA,操作如下:
[root@cecmail Postfix-2.6.5]# telnet localhost 25
Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 cecmail ESMTP Postfix (2.6.5)----說明連接成功
helo cec-cn.com #向服務器標識用戶身份#
mail from: #標明發(fā)信人地址#
250 ok #命令執(zhí)行成功#
rcpt to: #郵件投遞地址 test2@cec-cn.com#
250 ok #命令執(zhí)行成功#
data #數據傳輸初始化#
354 End data with . #開始傳輸數據 #
From: test1@aaa.com
To: test2@cec-cn.com
Subject: test mail
Hi, this is a test . #數據內容, 包括BASE64加密后的郵件內容, 以 CRLF.CRLF 結束數據傳輸#
250 OK: queued as 2F6DE3929 #命令執(zhí)行成功#
Quit #結束會話#
221 Bye Connection closed by foreign host. #斷開連接#
這樣,Postfix就可以運行了。但是,Postfix到底是怎樣處理郵件的呢?Postfix的各個模塊如何對郵件處理流程產生作用呢?下面,本文就從Postfix的機制上分析這些問題。#p#
三、Postfix常見問題指南
■Postfix中如何讓修改后的配置生效?
以root用戶身份執(zhí)行Postfix的reload命令即可。
■使用Postfix如何刷新郵件隊列?
以root用戶身份執(zhí)行 Postfix的命令 flush即可。
■如何讓Postfix開機后自己運行,而不必手工啟動?
可以通過ntsysv工具,選中Postfix。
■如何設置Postfix的隊列延遲?
可以在Postfix的主要配置文件/etc/postifx/main.cf中修改下列參數:
queue_run_delay (默認值 1000秒) 設置多長時間隊列管理進程去掃描無法投遞的郵件。
Maximal_queue_lifetime (默認值 5天) 設置郵件在隊列里的最長時間。
Minimal_backoff_time (默認值 1000秒) 在這個時間內,郵件不能夠被鎖定。
Maximal_backoff_time (默認值 4000秒) 在這個時間之后,如果郵件仍然沒有被投遞,就認為是無法投遞。
qmgr_message_recipient_limit (默認值 1000)。
■ 如何禁止Postfix對客戶端IP做反向域名解析?
以root用戶身份登錄運行如下命令:
postconf -e disable_client_ dns_lookup = 1
postfix reload
■ Postfix如何設置取消Delivered-To頭部信息?
在main.cf中設置:
smtpd_recipient_restrictions = ... regexp:/etc/postfix/access_regexp ...
smtpd_recipient_restrictions = ... pcre:/etc/postfix/access_regexp ...
/etc/postfix/access_regexp: /^(.*)-outgoing@(.*)/ 554 Use $1@$2 instead prepend_delivered_header配置參數也控制Delivered-To的使用。缺省的設置是command、file、forward(在把信件發(fā)送給命令,發(fā)送給文件,或者轉發(fā)的時候使用Delivered-To)。不推薦在轉發(fā)郵件的情況下取消Delivered-To頭部信息。
■ 如何讓Postfix支持maildir?
在main.cf中設置: home_mailbox = Maildir/ 任何相對路徑末尾加上“/”號都表示打開了maildir支持,home_mailbox設置的值將會追加到用戶的home目錄,也就是如果你指定home_mailbox = mymail/,那么Postfix也認為打開了maildir支持,并把信件投遞到用戶home目錄下的mymail目錄中。
■ Postfix如何設置發(fā)送郵件延遲通知?
在main.cf中設置: delay_warning_time = 4
■ 如何增加Postfix的進程數?
下面的設置依賴于內核版本:要在引導的時候修改參數,修改/etc/sysctl.conf添加:
fs.file-max = 16384 kernel.threads-max = 2048
■ 如何在撥號環(huán)境下使用Postfix?
在main.cf中做如下設置:
relayhost = smtprelay.yourisp.com
defer_transports = smtp
disable_dns_lookups = yes
并在撥號腳本中加入: /usr/sbin/sendmail -q
■ 如何拒收附件某些擴展名的郵件?
創(chuàng)建body_checks文件內容如下:
# vi /etc/postfix/body_checks /^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/ REJECT attachment type not allowed #p#
四、Postfix的反垃圾配置
SpamAssassin是目前成功的反垃圾框架,它是利用Perl的字符串處理來實現垃圾郵件判別。通過判斷目標郵件是否符合SpamAssassin的規(guī)則配置文件中的各項規(guī)則,并給郵件進行評分,SpamAssassin就會告訴用戶哪些郵件是垃圾郵件。而用戶所需要做的只是配置SpamAssassin的規(guī)則集,以及評分標準。
安裝SpamAssassin十分簡單,請參考以下步驟:
■ 下載SpamAssassin。
■解壓縮Mail-SpamAssassin-3.2.5.tar.gz。
■ 用如下命令編譯安裝:
#perl Makefile.PL
#make
#make install SpamAssassin安裝完畢后,就開始配置SpamAssassin的local.cf文件,SpamAssassin就是通過這個配置文件來設置規(guī)則。并進行垃圾郵件評判。如果想仔細了解SpamAssassin的規(guī)則配置,可以訪問http://spamassassin.apache.org。當然,簡單的配置一下這個文件,也會起到一定的反垃圾效果,可以如下修改:
■ 垃圾郵件的評分標準,超過該評分即被判別為垃圾郵件。
required_hits 5.0
■ 白名單,用戶可根據自己的需要配置,比如,如果認為來自本域(本文中設定的#本域是test)的都是安全郵件,那么就可以如下修改。
whitelist_from *@cec-cn.com
■ 在垃圾郵件的主體上做一個標記。
rewrite_subject 1
■ 處理垃圾郵件的方式:
#0 將信息寫入郵件頭。
#1 將垃圾郵件作為附件。
#2 垃圾郵件以正文形式存在。
report_safe 0
■ 是否使用貝葉斯運算:
use_bayes 1
■ 貝葉斯的存儲信息,根據用戶自己的實際情況而定。
bayes_path /var/lib/amavis/.spamassassin/bayes
■ 是否啟用貝葉斯的自動學習。
auto_learn 1
■ 是否略過實時黑名單的檢查。
skip_rbl_checks 0
■ 檢查是否是本域發(fā)送的郵件,如果是,則認為是正常郵件,評分減去50。
header LOCAL_RCVD Received =~ /.*\(\S+\.test\.com\s+\[.*\]\)/
describe LOCAL_RCVD Received from local machine score LOCAL_RCVD -50
配置好的SpamAssassin完全可以由Postfix直接調用。但是,如果以服務的形式啟動,即spamd的形式,則可以有效地降低服務器資源占用。
如下修改/etc/default/SpamAssassin,將ENABLED設為1,這樣SpamAssassin才可以spamd的形式啟動注。然后,還需要修改 /etc/postfix/master.cf,來通知Postfix去使用SpamAssassin 來掃描郵件:
Smtp inet n - n - - smtpd -v -o
content_filter=spamassassin
這樣,重新啟動smtpd和Postfix守護進程將啟用SpamAssassin來進行垃圾郵件到掃描。 #P#
五、Postfix的反病毒配置
Clamav是一款免費的反病毒工具包,實際運用中也十分有效。大家也可以安裝F-Prot Antivirus軟件
下面以Clamav為例子,可以如下操作:
■ 下載clamav-0.95.tar.gz:
■ 解壓縮clamav-0.95.tar.gz:
■ 用如下命令添加用戶:
#groupadd clamav
#useradd -g clamav -s/bin/false -d/dev/null clamav
■ 用如下命令編譯安裝:
#./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav
#make
#make check
#make install
■ 打開/usr/local/clamav/etc/clamd.conf,注釋掉Example行,并進行如下配置:
LogSyslog
LogVerbose
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav
LocalSocket /var/run/clamav/clamd
StreamMaxLength 10M
User amavis
ScanMail
ScanArchive
ScanRAR
■ 打開 /usr/local/clamav/etc/freshclam.conf,注釋掉Example行,并使用如下命令進行配置:
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog
LogVerbose
DatabaseOwner amavis
Checks 12
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd
■ 使用如下命令創(chuàng)建日志文件夾,并設置權限:
#mkdir /var/log/clamav
#chmod -R 744 /var/log/clamav
#chown -R amavis:amavis /var/log/clamav
#chown -R amavis.amavis /usr/local/share/clamav
#mkdir /var/run/clamav
#chmod 700 /var/run/clamav
#chown amavis.amavis /var/run/clamav
■ 編輯crontab,并設置自動更新病毒庫
#crontab -e 0 4 * * * root /usr/local/clamav/bin/freshclam --quiet -l /var/log/clamd.log
■ 啟動Clamav 如圖1
#/usr/local/clamav/sbin/clamd
圖1 Clamav 啟動界面
■***病毒檢測
從網站http://www.eicar.gor/anti_anti_virus_test_file.htm下載一個測試病毒文件eicar.com編寫一個郵件附件中帶上eicar.com,這樣就可以檢驗防病毒系統(tǒng)的作用了。
這樣,Clamav就可以根據病毒庫信息對郵件進行掃描了。當然,為了讓Postfix能夠運用Clamav去掃描郵件,實際上還需要安裝Amavisd,這是比較常用的MTA和郵件掃描軟件的一個接口軟件,使用該軟件可以讓MTA方便地啟用郵件掃描程序。安裝Amavisd的方法請參考有關資料。 #p#
六、自動監(jiān)控Postfix郵件服務器
這個功能是增強postfix 的管理性的 ,可以自動監(jiān)控postfix的日志文件。
下載 mailgraph-1.14.tar.gz并安裝上系統(tǒng)。修改配置文件/etc/init.d/mailgraph,并修改啟動程序權限:
#chmod 755 /etc/ini.d/mailgraph
#chkconfig –levels 235 mailgraph on
#/etc/init.d/mailgraph start
移動CGI腳本
#mv mailgraph.cgi /var/www/your IP/cgi-bin/
修改CGI腳本
My $rrd=`/var/lib/mailgraph.rrd`; #RRD數據庫路徑
My $rrd_virus=`/var/lib/mailgraph_virus.rrd`; #Virus RD數據庫路徑
修改CGI權限
#chmod 755 /var/ww/www.example.cm/cgi-bin/mailgraph.cgi
瀏覽日志網頁http://ip/cgi-bin/mailgraph.cgi, 如圖 2所示。
圖2#p#
七 、搭建分布式的郵件系統(tǒng)
對于大型郵件系統(tǒng),實現用戶的分布是不得不考慮的事情。因為,集中存儲的硬件成本還是比較高。比如,網易的電子郵件注冊用戶超過3億,新浪免費郵件的用戶也超過1.1億以上,Gmail擴容的動作也迫使其他郵件服務提供商擴大自己的容量,集中存儲的成本也因此變得更加昂貴。而將用戶分布在不同的郵件服務器上,并利用大容量而且相對廉價的磁盤陣列來存儲用戶郵件的做法,則能顯著降低成本,并能在一定程度上解決集中存儲的單點故障問題。
1.搭建分布式郵件系統(tǒng)的架構設計
用Postfix搭建分布式的郵件系統(tǒng)的架構如圖1所示。郵件接收服務器部署在架構的最外層,負責接受外部其他服務器的發(fā)信請求,并將接收到的郵件轉發(fā)到用戶郵件服務器上。郵件接收服務器不對外發(fā)出請求。有效地配置郵件接收服務器上的Postfix,就能實現郵件的接收和轉發(fā)。有些人實現郵件轉發(fā)是通過虛擬投遞代理和虛擬別名來實現,但是,本文將介紹一種擴展性和靈活性更好的方法來實現郵件轉發(fā)。用戶郵件服務器上部署MDA、MUA。可以配置Postfix讓其只接受郵件接收服務器和其他用戶郵件服務器的請求。用戶發(fā)送郵件通過用戶郵件服務器上Postfix的Sendmail向外部其他服務器提出發(fā)信的請求,具體架構見圖3。
圖3 Postfix搭建分布式郵件系統(tǒng)架構圖
2.郵件接收服務器配置與設計
這里的郵件接收服務器是本網域MX記錄所指向的服務器,MTA通過SMTP協議進行郵件傳輸時,實際上就是通過DNS的MX記錄來找到郵件接收服務器的。對于大型的郵件系統(tǒng)往往需要一組服務器構成。郵件接收服務器接收其他MTA郵件的流程為:接收服務器接收郵件→查詢用戶注冊在哪一臺用戶郵件服務器→將郵件轉發(fā)到用戶郵件服務器的MTA。那么當接收服務器收到郵件后,如何執(zhí)行查詢動作和轉發(fā)動作呢?這個問題可以通過Postfix提供的強大的配置文件來解決。在main.cf中有兩個重要的配置參數在大型的分布式郵件系統(tǒng)中起到了非常重要的作用,一個是local_recipient_ maps,另一個是transport_ maps。local_recipient_maps參數值由SMTP服務使用,當郵件接收服務器收到新郵件時,它會檢查該參數指定的查詢表確定是否該接收該郵件,這里的查詢表可以是鍵值型的索引表,也可以是查詢程序。比如,可以這樣配置main.cf:
local_recipient_maps = usersever:smtpcheck
發(fā)送方MTA發(fā)出“RCPT ”指令時,如果接受服務器上的Postfix,就可以調用smtpcheck對應的程序去確認該用戶是否存在。如果存在,就開始準備接收“DATA”指令發(fā)過來的郵件正文。那么成功收到郵件后,如何實現轉發(fā)呢?這就需要配置 transport_maps這個參數。Postfix中可以通過transport_maps這個參數對應的查詢表來判斷如何處理郵件,繼而修改默認的郵件投遞流程,這里的查詢表可以是鍵值型的索引表,也可以是查詢程序。比如,可以這樣配置main.cf:
transport_maps = usersever:transportmx
Postfix可以通過transportmx對應的程序獲得下一步處理郵件的指令。比如,輸入收件人郵件地址“user2 @cec-cn.com”,輸出“smtp: usersever06.cec-cn.com”,這就會讓Postfix通過SMTP把信轉投到usersever 06.cec-cn.com域名的這臺機器上,也就是第6臺用戶郵件服務器。
3.用戶郵件服務器的配置與設計
郵件系統(tǒng)中的用戶在注冊時被分配到不同的服務器上,并在數據庫中記錄這些信息。這些服務器負責接收從郵件接收服務器轉投過來的信件,并最終放入存儲系統(tǒng)中。這里郵件的處理流程為:用戶郵件服務器上的MTA接收郵件→查詢用戶在郵件服務器上的存儲位置→存郵件至用戶路徑。
在這里,一樣會使用local_ recipient_maps檢查收件人是否真實存在。但與郵件接收服務器不同的是,這是信件的最終目的地,transport_maps查詢的結果就不能再是“smtp: usersever06.cec-cn.com ”,要設置成合適的本地處理程序,比如local或者指定mda的名稱(在etc/master.cf中設置)等。main.cf的主要配置為:
local_recipient_maps = userserver:smtpcheck
transport_maps = usersever:transportusersever
這樣,一個大型的分布式郵件系統(tǒng)的MTA框架就搭建成功,在用戶郵件服務器上部署MUA,用戶可以進行閱讀收信及發(fā)送郵件等操作了。
本文從安裝配置和實現機制向讀者概要地介紹了Postfix,并在這個基礎上設計了一個大型的郵件系統(tǒng)。但是,本文對Postfix的介紹還遠遠不夠,比如Postfix來如何實現高效地反垃圾、反病毒,Postfix的詳細配置與管理等。讀者可以通過實踐來學習使用Postfix,并在實踐中探索Postfix的原理,從而更好地優(yōu)化和配置Postfix,以實現更加強大的郵件系統(tǒng)。
【編輯推薦】