一、郵件服務(wù)器基本的工作原理
用戶(hù)(MUA)通過(guò)SMTP協(xié)議將郵件發(fā)送到服務(wù)器(MTA),服務(wù)器分解發(fā)現如果是本地的郵件傳輸則通過(guò)lmtp來(lái)傳送,如果是遠程郵件將調用本地的客戶(hù)端使用SMTP協(xié)議向對方服務(wù)器傳送。
當對方的服務(wù)器接收到郵件之后,發(fā)現如果不是本機所負責的域,則將郵件交給本機的郵件客戶(hù)端,根據郵件目標域請求DNS解析,將郵件發(fā)送到目標服務(wù)器,或者丟至下一跳此過(guò)程稱(chēng)為郵件中繼,如果發(fā)現是本機負責區域內的用戶(hù),則SMTPD將郵件轉交給MDA,由MDA把郵件傳遞到用戶(hù)的郵筒。
用戶(hù)通過(guò)MUA查看郵件的時(shí)候,會(huì )將郵件從郵筒拉到用戶(hù)家目錄,保存為mbox的文件。
郵件中繼:
SMTPD要支持郵件路由功能,需要打開(kāi)Open Relay—開(kāi)放式中繼。
SMTPD是根據收件人判斷郵件是否需要中繼,而且只給指定的客戶(hù)端中繼。
二、郵件服務(wù)器與DNS之間的關(guān)系
①當發(fā)件方需要發(fā)送郵件給對方郵件服務(wù)器,需要向DNS請求查詢(xún)對方郵件服務(wù)器的MX記錄。②DNS通過(guò)查詢(xún)MX表信息。③將查詢(xún)到的MX信息返回給發(fā)送方。④發(fā)送方根據優(yōu)先級,將郵件投遞給對方優(yōu)先級高的郵件服務(wù)器(mail1)。⑤如果主郵件服務(wù)器過(guò)于繁忙,或者不在線(xiàn)的時(shí)候,會(huì )將郵件投遞給輔的郵件交換器(mail2)上。⑥待主郵件服交換器空閑下來(lái)后,mail2會(huì )將代替接收下來(lái)的郵件再轉給主郵件交換器(mail1)。注:當DNS上存在多個(gè)MX記錄的主機這時(shí)就是根據DNS的郵件級判斷了。DNS上定義的值越小,其優(yōu)先級越高。 輔助交換器接受到郵件并不能保存郵件。而是這個(gè)輔助交換器會(huì )等到主郵件交換器空閑的時(shí)候把代替它接受下來(lái)的郵件在轉給主郵件交換器。所以任何郵件處理都是主郵件交換器處理的。所以我們實(shí)際情況下,如果有2臺服務(wù)器做郵件交換器,性能比較高的應該為主的。
三、郵件服務(wù)器的各程序組件
MTA(Mail Transfer Agent)接收郵件的服務(wù)器端,負責郵件的傳輸;
sendmail
qmail
postfix
exim
Exchange(windows)
MUA(Mail User Agent) 郵件客戶(hù)端,提供用戶(hù)編寫(xiě)查看郵件,向外發(fā)送郵件;
Outlook Express , Outlook
Foxmail
Thunderbird
Evolution
mutt
MDA(Mail Delivery Agent) 將收下來(lái)的郵件投遞到對應用戶(hù)郵筒中的程序
procmail
maildrop
MRA (Mail Retrieval Agent)通過(guò)POP3協(xié)議從郵筒中幫用戶(hù)檢索對應郵件
pop3,imap4
cyrus-imap
dovecot
Web Mail 實(shí)現網(wǎng)頁(yè)的形式收發(fā)郵件,需要有web服務(wù)器的支持;
openwebmail
squirrelmail
Extmail
四、Postfix簡(jiǎn)介
Postfix 是一種電子郵件服務(wù)器,它是由任職于IBM華生研究中心(T.J. Watson Research Center)的荷蘭籍研究員Wietse Venema為了改良sendmail郵件服務(wù)器而產(chǎn)生的。
postfix由十幾個(gè)具有不同功能的半駐留進(jìn)程組成,并且在這些進(jìn)程中并無(wú)特定的進(jìn)程間父子關(guān)系。某一個(gè)特定的進(jìn)程可以為其他進(jìn)程提供特定的服務(wù)。
大多數的postfix進(jìn)程由一個(gè)進(jìn)程統一進(jìn)行管理,該進(jìn)程負責在需要的時(shí)候調用其他進(jìn)程,這個(gè)管理進(jìn)程就是master進(jìn)程。該進(jìn)程也是一個(gè)后臺程序。
這些postfix進(jìn)程是可以配置的,我們可以配置每個(gè)進(jìn)程運行的數目,可重用的次數,生存的時(shí)間等等。通過(guò)靈活的配置特性可以使整個(gè)系統的運行成本大大降低。
特點(diǎn):
1、postfix是免費的;
2、性能好,大約比sendmail快三倍,一臺運行postfix的臺式pc每天可收發(fā)上百萬(wàn)郵件;
3、兼容sendmail
4、健壯穩定,postfix被設計成在重負荷之下仍然可以正常工作。當系統運行超出了可用的內存或磁盤(pán)空間時(shí),postfix會(huì )自動(dòng)減少運行進(jìn)程的數目。當處理的郵件數目增長(cháng)時(shí),postfix運行的進(jìn)程不會(huì )跟著(zhù)增加;
5、靈活性好,postfix是由超過(guò)一打的小程序組成的,每個(gè)程序完成特定的功能。你可以通過(guò)配置文件設置每個(gè)程序的運行參數。
6、安全性,postfix具有多層防御結構,可以有效地抵御惡意入侵者,可以運行在較低的權限之下;
五、編譯安裝PostFix
1、關(guān)閉服務(wù)器已有的郵件服務(wù)器,將其卸載。
2、安裝MySQL數據庫,并給root用戶(hù)設置好密碼。
3、編譯安裝postfix
安裝依賴(lài)包
yum install cyrus-sasl-devel -y
yum install cyrus-sasl-plain -y
創(chuàng )建用戶(hù)和組,postfix用于啟動(dòng)postfix服務(wù)器,postdrop(用于郵件投遞服務(wù));
groupadd -g 2525 postfix
useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
groupadd -g 2526 postdrop
useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop
解壓源碼包
tar xf postfix-2.11.6.tar.gz
cd postfix-2.11.6
編譯參數
make makefiles 'CCARGS=-DHAS_MYSQL -I /alidata/server/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I /usr/include/sasl -DUSE_TLS' 'AUXLIBS=-L /alidata/server/mysql/lib -lmysqlclient -lz -lm -L/usr/lib64/sasl2 -lsasl2 -lssl -lcrypto'
make
make install
參數說(shuō)明:
CCARGS 指定C編譯參數,指定鏈接的頭文件路徑。
-DHAS_MYSQL 啟用mysql連接功能,指定頭文件路徑
-DUSE_SASL_AUTH 啟用SASL認證
-DUSE_CYRUS_SASL -I 指定SASL頭文件路徑
-DUSE_TLS 啟用加密協(xié)議
AUXLIBS 輔助的庫文件路徑
-lz 表示壓縮庫文件
-lm 模塊文件
-lsasl2 -lssl -lcrypto 表示使用這些庫文件
啟動(dòng)postfix服務(wù)器
postfix start
會(huì )監聽(tīng)在tcp的25號端口,進(jìn)程名為master。
postfix配置文件:
master:/etc/postfix/master.cf
mail:/etc/postfix/main.cf
參數必須寫(xiě)在行的行首,以空白開(kāi)頭的行被認為是上一行的延續。
postconf 配置工具:
-d:顯示默認配置
-n:顯示修改過(guò)的配置
-m:顯示支持的查找表類(lèi)型
-A:顯示支持的SASL客戶(hù)端插件類(lèi)型
-e:Parameter=Value 更改參數配置信息,并保存至main.cf文件中;
smtp狀態(tài)碼:
1xx:純信息
2xx:正確
3xx:上一步操作尚未完成,需要繼續補充。
4xx:暫時(shí)性錯誤
5xx:永久性錯誤
當出現postfix無(wú)法讀取郵件別名的時(shí)候使用命令/usr/bin/newaliases,將別名文件aliases進(jìn)行hash散列;
可生成aliases.db文件;
演示telnet連接postfix smtp指令發(fā)郵件:
查看日志 /var/log/maillog
切換到本機tuchao用戶(hù)查看郵件
本文出自 “突破舒適區” 博客,請務(wù)必保留此出處http://tchuairen.blog.51cto.com/3848118/1684872
聯(lián)系客服