天天看點

搭建Postfix郵箱伺服器

一、為什麼選擇Postfix?

Postfix 是一種電子郵件伺服器,它是由任職于IBM沃森研究中心(T.J. Watson Research Center)的荷蘭籍研究員Wietse Venema為了改良sendmail郵件伺服器而産生的MTA(郵件傳輸代理)軟體。最早在1990年代晚期出現,是一個輕量級開放源代碼的軟體。postfix的産生是為了替代傳統的sendmail,相較于sendmail,postfix在速度、性能和穩定性上都更勝一籌。如今許多的主流郵件服務事實上都在采用postfix。Postfix具備有以下幾個特點。

1. 免費:

    postfix想要作用的範圍是廣大的Internet使用者。試圖影響大多數的Internet上的電子郵件系統,是以它是免費的。

2. 更快:

    postfix在性能上大約比sendmail快三倍。一部執行postfix的台式PC每天能夠收發上百萬封郵件。

3. 相容性好:

    postfix是相容sendmail的,進而使sendmail使用者能夠非常友善地遷移到postfix。Postfix支援/var/spool/mail、/etc/aliases、 NIS、和 ~/.forward 檔案。

4. 更健壯:

postfix被設計成在重負荷之下仍然能夠正常工作。當系統執行超出了可用的記憶體或磁盤空間時,postfix會自己主動降低執行程序的數目。當處理的郵件數目增長時,postfix執行的程序不會跟着添加。

5. 更靈活:

postfix是由一組子產品成,每一個程式擁有特定的功能。你能夠通過配置檔案設定每一個程式的執行參數。

6. 安全性

postfix具有多層防禦結構,能夠有效地抵禦惡意入侵者。如大多數的postfix程式能夠在較低的權限下運作。

二、 Postfix工作原理

1. 郵件相關協定

SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協定,工作在TCP的25端口。它是一組用于由源位址到目的位址傳送郵件的規則,由它來控制信件的中轉方式。跟名字一樣smtp非常簡單,無法做到認證,郵件存放等功能。

POP3(Post Office Protocol)郵局協定第3版,工作在TCP的110端口。本協定主要用于支援使用用戶端遠端管理在伺服器上的電子郵件。POP 協定支援“離線”郵件處理。其具體過程是:郵件發送到伺服器上,電子郵件用戶端調用郵件客戶機程式以連接配接伺服器,并下載下傳所有未閱讀的電子郵件。這種離線通路模式是一種存儲轉發服務,将郵件從郵件伺服器端送到個人終端PC機上。一旦郵件發送到 PC 機上,郵件伺服器上的郵件将會被删除。但目前的POP3郵件伺服器大都可以“隻下載下傳郵件,伺服器端并不删除”,也就是改進的POP3協定。

IMAP4(Internet Mail Access Protocol)網際網路郵件通路協定第4版,工作在TCP的143端口。IMAP4協定與POP3協定一樣也是規定個人計算機如何通路網上的郵件的伺服器進行收發郵件的協定,但是IMAP4協定同POP3協定相比更進階。IMAP4支援協定客戶機線上或者離開通路并閱讀伺服器上的郵件,還能互動式的操作伺服器上的郵件。IMAP4協定更人性化的地方是不需要像POP3協定那樣把郵件下載下傳到本地,使用者可以通過用戶端直接對伺服器上的郵件進行操作(這裡的操作是指:線上閱讀郵件 線上檢視郵件主題 大小 發件位址等資訊)。使用者還可以在伺服器上維護自己郵件目錄(維護是指移動)建立 删除重命名共享 抓取文本 等操作)。IMAP4協定彌補了POP3協定的很多缺陷。

2. 郵件相關名詞

一般情況下,我們把電子郵件程式分解成使用者代理、傳輸代理和投遞代理三部分。使用者代理用來接受使用者的指令,将使用者的信件傳送至信件傳輸代理,而投遞代理則從信件傳輸代理取得信件傳送至最終使用者的郵箱;當使用者試圖發送一封電子郵件的時候,他并不能直接将信件發送到對方的機器上,使用者代理必須試圖去尋找一個信件傳輸代理,把郵件送出給它。信件傳輸代理得到了郵件後,首先将它儲存在自身的緩沖隊列中,然後,根據郵件的目标位址,信件傳輸代理程式将找到應該對這個目标位址負責的郵件傳輸代理伺服器,并且通過網絡将郵件傳送給它。對方的伺服器接收到郵件之後,将其緩沖存儲在本地,直到電子郵件的接收者檢視自己的電子信箱。

1)MTA(Mail Transfer Agent)

郵件傳輸代理,通過SMTP協定所指定的伺服器,就可以把E-mail寄到收信人的伺服器上了,整個過程隻要幾分鐘。SMTP伺服器則是遵循SMTP協定的發送郵件伺服器,用來發送或中轉發出的電子郵件。常用的MTA有:

SendMail:郵件的鼻祖。

Qmail:一個數學家開發,作為Linux下面主流的郵件系統核心,大量著名的商業郵件系統都是在Qmail核心下開發,比如Hotmail。

Postfix:IBM安全專家開發,子產品化設計,并且比sendmail相容效率更高。

Exim:是基于GPL協定的開放源代碼軟體,由英國劍橋大學的Philip Hazel開發。

Exchange:微軟公司的一套電子郵件服務元件,是個消息與協作系統。

2)MDA(Mail Delivery Agent)

郵件投遞代理,投遞代理則從信件傳輸代理取得信件傳送至最終使用者的郵箱。常用的MDA有:

ProcMail:Postfix預設的郵件投遞工具。

MailDrop:相對比較專業的投遞代理工具。

3)MRA(Mail Retrieval Agent)

郵件取回代理,使用POP3或IMAP4協定工作。一般用于從使用者信箱取回郵件到郵件使用者代理用戶端。常用的MRA有:

Dovecot:是一個開源的支援IMAP和POP3協定的收郵件伺服器(自帶SASL功能)。

4)MUA(Mail User Agent)

郵件使用者代理工具。常用的MUA有:

OE:Windows舊版本自帶的工具。

Outlook:Office套件帶的工具。

FoxMail:騰訊公司的郵件用戶端工具。

Thunderbird:雷鳥是Linux下的用戶端工具。

Mutt:Linux下的字元界面用戶端工具。

5)WebMail

基于Web的電子郵件收發系統,扮演郵件使用者代理角色,一般而言,WebMail系統提供郵件收發、使用者線上服務和系統服務管理等功能。WebMail的界面直覺、友好,不需要借助用戶端,免除了使用者對E-mail客戶軟體(如:Foxmail、Outlook等)進行配置時的麻煩,隻要能上網就能使用WebMail,友善使用者對郵件進行接收和發送。WebMail使得E-mail在Internet上的應用廣泛。常用的Webmail有:

Openwebmail:台灣開發的。

Squirrelmail:Centos系統自帶。

Extmail,Extman:國内開發的也被稱為EMOS系統。

6)Mail Relay

郵件中繼,先要明白一個概念,一封郵件隻要不是發送給本域内使用者的,比如從目前域發送到另一個域,或從目前域發送到另一個域然後轉到另外一個域的,這就屬于中繼。但是一般郵件伺服器都會允許本地或本域内的使用者進行中繼。不然就隻能在本域内發送郵件而不能給外部郵箱發送郵件。Postfix預設隻能基于IP位址做中繼認證。

7)SASL(simple authentication secure layer)

簡單認證安全層,是一種用來擴充C/S模式驗證能力的機制。在Postfix可以利用SASL來判斷使用者是否有權使用轉發服務,或是辨認誰在使用你的伺服器。

常用的Sasl有:

cyrus-sasl:Redhat系列自帶的SASL認證架構。

dovecot-sasl:dovecot元件帶的SASL認證架構。

courier-authlib:這是一個帶有MTA,MDA以及SASL認證的軟體,但是一般隻是用它的SASL功能。

3. Postfix的工作原理

郵件伺服器工作在兩種情況下:一種是相同域内轉發;二是不同域内轉發。是以MTA(postfix)内部一般都會有smtpd(服務端)、smtp(用戶端)和MDA(郵件投遞代理)。smtpd郵件伺服器非常簡單,隻負責轉發郵件别的什麼功能也沒有,并且發送方不管是什麼位址都可以從smtpd伺服器轉發到目标位址。

搭建Postfix郵箱伺服器

①相同域内轉發:使用者A通過工具連接配接到SMTPD服務端,然後發送一份郵件,而目标收件人是B使用者。當SMPTD收到郵件後判斷發現是同域内的使用者,就會直接啟動MDA程序把郵件投進使用者郵箱中,當使用者通過MUA工具(如mail指令)就可以直接收到郵件。

②不同域内轉發:使用者A通過工具連接配接到SMTPD服務端,然後發送一份郵件,而目标收件人是C使用者。當SMPTD收到郵件後判斷發現是不同域内使用者,就會啟動SMTP用戶端來轉發此郵件。SMTP收到請求後就會解析對方MX記錄,然後連接配接對方SMTPD伺服器并把郵件發送過去。當對方SMTPD發現此郵件就是本域内的郵件後也會調用MDA程序把郵件投遞進使用者郵箱中,當使用者通過MUA工具(如mail指令)就可以直接收到郵件。

三、 安裝Postfix

安裝postfix

# yum install postfix

四、 Postfix子產品解析

postfix是一個非常安全高效免費開源的郵件伺服器,在redhat6之後的系統預設安裝的郵件伺服器,之是以高效是因為采用子產品化設計,由多個具有不同功能的半駐留程序組成,并且在這些程序中并無特定的程序間父子關系,大多數的postfix程序由一個程序統一進行管理,該程序負責在需要的時候調用其他程序,這個管理程序就是master程序。該程序也是一個背景程式。

Postalias             用于構造、修改和查詢别名表

Postmap             用于構造、修改或者查詢别名表

Postconf             用于顯示和編輯main.cf配置檔案

Postfix                 用于啟動、停止postfix,但是要求root權限

Postqueue          用于管理郵件隊列,一般使用者使用

Postsuper           用于管理郵件隊列,root使用者使用

五、配置Postfix

/etc/postfix/master.cf            master主程式的配置檔案

/etc/postfix/main.cf               postfix服務的配置檔案

* postconf   [選項]           #檢視目前有效的配置

-n                 #檢視非預設配置

-d                 #檢視預設配置

-e                 #直接編輯某個配置的參數

* postfix check #檢查配置

* postfis reload  #重新加載配置

需要重點掌握的幾個參數

inet_interfaces:postfix監聽的接口,預設localhost

myorigin:郵件的發送者所在的域

mydestination:postfix接收郵件時的收件人域名

mynetworks:受信任的網絡或主機,即你所在網絡的網絡位址,postfix通過該值來判定使用者是遠端還是本地的,如果是本地網絡使用者則允許其通路

myhostname:我的主機名

mydomain:我的域名,即我負責的郵件域,E-mail位址“@”後面的部分

relayhost:中繼主機的位址

home_mailbox = Maildir/:指定使用者郵箱檔案夾

注意:位址的最後有沒有”/”決定了使用mailbox格式還是maildir格式,沒有”/”表示mailbox。Mailbox格式是所有郵件都在一個檔案裡,而Maildir是每個郵件都是單獨的一個檔案。

六、發送第一封郵件

1. 發送郵件

# mail -s “hello world”[email protected]

2. 檢視郵件

輸入mail,就進入了目前使用者的收件箱

繼續閱讀