1. 程式人生 > >Linux下開源郵件系統Postfix+Extmail+Extman環境部署記錄

Linux下開源郵件系統Postfix+Extmail+Extman環境部署記錄

描述 美國 tom 即使 工作 mic ati exp pen

一、基礎知識梳理
MUA (Mail User Agent)
MUA 既是"郵件使用者代理人",因為除非你可以直接利用類似 telnet 之類的軟件登入郵件主機來主動發出信件,否則您就得要透過 MUA 來幫你送信到郵件主機上頭去。 最常見的 MUA 像是 Mozilla 推出的Thunderbird ( 雷鳥 ) 自由軟件, 或者是 Linux 桌面 KDE 常見的 Kmail ,及Windows 內件的 Outlook Express (OE) 等 。MUA 主要的功能就是收受郵件主機的電子郵件,以及提供用戶瀏覽與編寫郵件的功能!

MTA (Mail Transfer Agent)
MUA 幫用戶傳送郵件到郵件主機上,那這部郵件主機如果能夠幫用戶將這封信寄出去, 那它就是一部郵件傳送主機 (MTA) 啦!這個 MTA 就是『郵件傳送代理人』的意思。也來顧名思義一下,既然是『傳送 代理人』, 那麽使用者寄出的信,與使用者要收信時,就是找它 (MTA) 就對啦!基本上, MTA 的功能有這些:
1)收受信件:使用簡單郵件傳送協議 (SMTP)


MTA 主機最主要的功能就是將來自客戶端或者是其它 MTA 的來信收下來,這個時候 MTA 使用的是 Simple Mail Transfer Protocol (SMTP) ,它使用的是25端口。
2) 轉遞信件
如果該封信件的目的地並不是本身用戶,且該封信的相關數據符合使用 MTA 的權力, 那麽MTA 就會將該封信再傳送到下一部主機上。這即是所謂的轉遞 (Relay) 的功能。
3)響應使用者的收信要求
POP 或 IMAP 協定用戶可以透過 MTA 主機提供的郵政服務協議 (Post Office Protocol, POP) 來收下自己的信件, 也可以透過IMAP (Internet Message Access Protocol) 協議將自己的信件保留在郵件主機上面, 並進一步建立郵件數據匣等進階工作。

總之,一般提到的 Mail Server 就是 MTA !而嚴格來說, MTA 其實僅是指 SMTP 這個協議而已。 而達成 MTA的 SMTP 功能的主要套件包括老牌的 sendmail ,後起之秀的 postfix ,還有qmail等等。

MDA (Mail Delivery Agent)
字面上的意思是『郵件遞送代理人』的意思。事實上,這個 MDA 是掛在 MTA 底下的一個小程序, 最主要的功能就是: 分析由 MTA 所收到的信件表頭或內容等數據, 來決定這封郵件的去向。 所以說,上面提到的MTA 的信件轉遞功能,其實是由 MDA 達成的。 舉例來說,如果 MTA 所收到的這封信目標是自己,那麽MDA 會將這封信給它轉到使用者的信箱 (Mailbox) 去, 如果不是呢?那就準備要轉遞出去了。此外, MDA 還有分析與過濾郵件等功能喔!如:過濾垃圾郵件,自動回復,自動轉發等……。

各主要的 MTA 程序 (sendmail,postfix...) 都有自己的 MDA 功能,不過有些外掛的程序功能更強大, 舉例來說 procmail就是一個過濾的好幫手,另外 Mailscanner + Spamassassion 也是可以使用的一些 MDA 喔。

Mailbox
就是電子郵件信箱!簡單的說,就是某個賬號專用的信件收受檔案。我們的 Linux 系統默認的信箱都是放在 /var/spool/mail/ 使用者賬號 中! 若 MTA 所收到的信件是本機的使用者, MDA 就會將信件送到該 mailbox 當中去!

POP3
(Post Office Protocol 3)即郵局協議的第3個版本,它規定怎樣將個人計算機連接到Internet的郵件服務器和下載電子郵件的電子協議。它是因特網電子郵件的第一個離線協議標準,POP3允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的。

IMAP
Interactive Mail Access Protocol(交互式郵件存取協議)是由美國華盛頓大學所研發的一種郵件獲取協議。它的主要作用是郵件客戶端(例如MS Outlook Express)可以通過這種協議從郵件服務器上獲取郵件的信息,下載郵件等。無論是POP3還是IMAP都是描述如何從郵箱取出郵件。

請註意:POP3/IMAP和SMTP可以組建在不同的服務器上,經常使用MUA的用戶肯定記得軟件的設置中經常將POP3/IMAP和SMTP進行分開設置。

——————————SMTP、POP3、IPMAP三者說明——————————

簡單來說:SMTP是郵件發送協議;POP3和IMAP是郵件接收協議。其中:

1)SMTP
全稱是"Simple Mail Transfer Protocol",目標是向用戶提供高效、可靠的郵件傳輸。它是一組用於由源地址到目的地址傳送郵件的規則,
通過它來控制郵件的中轉方式。SMTP協議屬於TCP/IP 協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。

SMTP服務器就是遵循SMTP協議的發送郵件服務器。 SMTP認證,簡單地說就是要求必須在提供了賬戶名和密碼之後才可以登錄SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。 

增加SMTP認證的目的是為了使用戶避免受到垃圾郵件的侵擾。

2)POP3
POP3是Post Office Protocol 3的簡稱,即郵局協議的第3個版本,它規定怎樣將個人計算機連接到Internet的郵件服務器和下載電子郵件的電子協議。
它是因特網電子郵件的第一個離線協議標準,POP3允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的
郵件,而POP3服務器則是遵循POP3協議的接收郵件服務器,用來接收電子郵件的

3)IMAP
IMAP全稱是Internet Mail Access Protocol,即交互式郵件存取協議,它是跟POP3類似郵件訪問標準協議之一。不同的是,開啟了IMAP後,您在電子
郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操作都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會做相應
的動作。所以無論從瀏覽器登錄郵箱或者客戶端軟件登錄郵箱,看到的郵件以及狀態都是一致的。

====================POP3和IMAP的區別====================
POP3協議允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作(如移動郵件、標記已讀等),不會反饋到服務器上,比如通過客戶端收取了
郵箱中的3封郵件並移動到其他文件夾,郵箱服務器上的這些郵件是沒有同時被移動的 。

而IMAP提供webmail 與電子郵件客戶端之間的雙向通信,客戶端的操作都會反饋到服務器上,對郵件進行的操作,服務器上的郵件也會做相應的動作。
同時,IMAP像POP3那樣提供了方便的郵件下載服務,讓用戶能進行離線閱讀。IMAP提供的摘要瀏覽功能可以讓你在閱讀完所有的郵件到達時間、主題、
發件人、大小等信息後才作出是否下載的決定。此外,IMAP 更好地支持了從多個不同設備中隨時訪問新郵件。

技術分享圖片

總之:
IMAP 整體上為用戶帶來更為便捷和可靠的體驗。POP3 更易丟失郵件或多次下載相同的郵件,但 IMAP 通過郵件客戶端與webmail 之間的雙向同步功能很好地避免了這些問題。

註意:
若在web郵箱中設置了“保存到已發送”,使用客戶端POP服務發信時,已發郵件也會自動同步到網頁端“已發送”文件夾內。

網易163免費郵箱相關服務器信息:

技術分享圖片

Maildirs
Maildirs是使用非常廣泛的e-mail郵件存儲格式。也可以說是一種基於目錄的郵件存儲格式。它在添加,移動或刪除時並不依賴於應用程序級的文件鎖定來維護消息的完成性。每一個消息(每一封郵件)被保存在一個獨立的且名稱唯一的文件中。所有的更改均使用基於文件系統的原子操作(atomic filesystem operations )因此文件系統來控制文件鎖定從而避免一致性問題。通常Maildir為一個目錄(名稱為Maildir)其下包含三個子目錄,分別為tmp,new和cur。

Courier IMAP
Courier IMAP server 是使用Maildir存儲格式的高速,可擴展,企業級 IMAP 服務器。許多E-mail提供商使用Courier IMAP server來處理幾十萬的郵件用戶,使用它建立IMAP和POP3集合代理,可以說Courier IMAP server 簡直具有無限的水平擴展能力。在代理配置環境中,一些Courier 服務器提供IMAP和POP3服務,它們等待客戶端登陸請求,查找並操作郵件用戶的mailbox,與服務器建立代理連接,所有的這些操作都在一個單獨的,無縫連接的進程中。

Courier-IMAP主要特點:
- 小巧而高效;
- 提供多種用戶認證模塊和方式;
- 支持虛擬郵箱;
- 可限制IMAP同時登錄的總數目及同一個IP地址同時登錄的數目,能有效保護系統在受到拒絕服務(Denial-of-service)攻擊時不致因超載而癱瘓;

maildrop
具有過濾功能的郵件投遞代理(MDA)。

Courier-Authlib
Courier authentication library 為其他 Courier 應用程序提供驗證服務。

SASL
SASL的英文全稱是Simple Authentication and Security Layer,即簡單驗證和安全層。SMTP 協議並沒有提供用戶驗證功能,很容易匿名中轉郵件。即使限制了可以轉發的網段,也不安全。他的定義是: a method for adding authentication support to connection-based protocols,為基於連接的協議提供認證功能。SASL是一個膠合(glue)庫,通過這個庫把應用層 與 形式多樣的認證系統整合在一起。這有點類似於PAM,但是後者是認證方式,決定什麽人可以訪問什麽服務,而SASL是認證過程,側重於信任建立過程,這個過程可以調用PAM來建立信任關系。

Open-Relay是什麽?
Open-Relay(開放轉發或匿名轉發)是指由於郵件服務器不理會郵件發送者或郵件接受者的是否為系統所設定的用戶,而對所有的入站郵件一律進行轉發(RELAY)的功能。通常,若郵件服務器的此功能開放,則我們一般稱此郵件服務器是Open-Relay的。

由於Internet E-mail采用開放式標準,所以MTA、MDA、MUA等不同角色,可分別由許多不同的軟件包來扮演。實現相同協議的不同包,可以彼此互相交流,而不管它們是在什麽系統上運行。如果將一個完整的E-mail郵件系統集中在一起,可以發現的是處理SMTP的是一套軟件,處理POP/IMAP的是另一套軟件。但郵件系統中的每一種角色,都有許多不同的軟件可以選擇。

二、Postfix+Extmail+Extman環境部署過程
1)基礎環境準備

[root@mail ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)

[root@mail ~]# ifconfig|grep addr|grep Bcast|cut -d":" -f2|awk -F" " ‘{print $1}‘
192.168.10.202

[root@mail ~]# hostname                                                          
mail.kevin.com

[root@mail ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.202 mail.kevin.com

[root@mail ~]# /etc/init.d/iptables stop
[root@mail ~]# setenforce 0
[root@mail ~]# getenforce 
[root@mail ~]# cat /etc/sysconfig/selinux
......
SELINUX=disabled


軟件部署說明
------------------------------------------------------------------------------
軟件名稱                 功能
Postfix                  MTA
MySQL                    存儲postfix虛擬用戶信息
courier-authlib          搭配SASL做驗證
cyrus-sasl               把應用(E-Mail)與驗證(courier-authlib)結合在一起
courier-imap             結合postfix提供imap/imaps與pop3/pop3s服務
perl                     解釋器
pcre                     安裝Imap需要-- Perl兼容正則表達式
httpd                    web服務器
Extmail                  webmail服務器
Extman                   結合extmail管理郵件用戶
Clamav                   殺毒軟件
amavisd-new              掃描郵件病毒
Spamassassin             防垃圾郵件

Linux下開源郵件系統Postfix+Extmail+Extman環境部署記錄