如何在Ubuntu環(huán)境下搭建郵件服務(wù)器(一)
在這個(gè)系列的文章中,我們將通過使用 Postfix、Dovecot 和 openssl 這三款工具來為你展示如何在 ubuntu 系統(tǒng)上搭建一個(gè)既可靠又易于配置的郵件服務(wù)器。
在這個(gè)容器和微服務(wù)技術(shù)日新月異的時(shí)代,值得慶幸的是有些事情并沒有改變,例如搭建一個(gè) Linux 下的郵件服務(wù)器,仍然需要許多步驟才能間隔各種服務(wù)器耦合在一起,而當(dāng)你將這些配置好,放在一起,卻又非??煽糠€(wěn)定,不會(huì)像微服務(wù)那樣一睜眼有了,一閉眼又沒了。 在這個(gè)系列教程中我們將通過使用 Postfix、Dovecot 和 openssl 這三款工具在 ubuntu 系統(tǒng)上搭建一個(gè)既可靠又易于配置的郵件服務(wù)器。
Postfix 是一個(gè)古老又可靠的軟件,它比原始的 Unix 系統(tǒng)的 MTA 軟件 sendmail 更加容易配置和使用(還有人仍然在用sendmail 嗎?)。 Exim 是 Debain 系統(tǒng)上的默認(rèn) MTA 軟件,它比 Postfix 更加輕量而且超級(jí)容易配置,因此我們?cè)趯淼慕坛讨袝?huì)推出 Exim 的教程。
Dovecot(LCTT 譯注:詳情請(qǐng)閱讀維基百科)和 Courier 是兩個(gè)非常受歡迎的優(yōu)秀的 IMAP/POP3 協(xié)議的服務(wù)器軟件,Dovecot 更加的輕量并且易于配置。
你必須要保證你的郵件通訊是安全的,因此我們就需要使用到 OpenSSL 這個(gè)軟件,OpenSSL 也提供了一些很好用的工具來測(cè)試你的郵件服務(wù)器。
為了簡單起見,在這一系列的教程中,我們將指導(dǎo)大家安裝一個(gè)在局域網(wǎng)上的郵件服務(wù)器,你應(yīng)該擁有一個(gè)局域網(wǎng)內(nèi)的域名服務(wù),并確保它是啟用且正常工作的,查看這篇“使用 dnsmasq 為局域網(wǎng)輕松提供 DNS 服務(wù)”會(huì)有些幫助,然后,你就可以通過注冊(cè)域名并相應(yīng)地配置防火墻,來將這臺(tái)局域網(wǎng)服務(wù)器變成互聯(lián)網(wǎng)可訪問郵件服務(wù)器。這個(gè)過程網(wǎng)上已經(jīng)有很多很詳細(xì)的教程了,這里不再贅述,請(qǐng)大家繼續(xù)跟著教程進(jìn)行即可。
一些術(shù)語
讓我們先來快速了解一些術(shù)語,因?yàn)楫?dāng)我們了解了這些術(shù)語的時(shí)候就能知道這些見鬼的東西到底是什么。 :D
- MTA:郵件傳輸代理(Mail Transfer Agent),基于 SMTP 協(xié)議(簡單郵件傳輸協(xié)議)的服務(wù)端,比如 Postfix、Exim、Sendmail 等。SMTP 服務(wù)端彼此之間進(jìn)行相互通信(LCTT 譯注 : 詳情請(qǐng)閱讀維基百科)。
- MUA: 郵件用戶代理(Mail User Agent),你本地的郵件客戶端,例如 : Evolution、KMail、Claws Mail 或者 Thunderbird(LCTT 譯注 : 例如國內(nèi)的 Foxmail)。
- POP3:郵局協(xié)議(Post-Office Protocol)版本 3,將郵件從 SMTP 服務(wù)器傳輸?shù)侥愕泥]件客戶端的的最簡單的協(xié)議。POP 服務(wù)端是非常簡單小巧的,單一的一臺(tái)機(jī)器可以為數(shù)以千計(jì)的用戶提供服務(wù)。
- IMAP: 交互式消息訪問協(xié)議(Interactive Message Access Protocol),許多企業(yè)使用這個(gè)協(xié)議因?yàn)猷]件可以被保存在服務(wù)器上,而用戶不必?fù)?dān)心會(huì)丟失消息。IMAP 服務(wù)器需要大量的內(nèi)存和存儲(chǔ)空間。
- TLS:傳輸套接層(Transport socket layer)是 SSL(安全套接層(Secure Sockets Layer))的改良版,為 SASL 身份認(rèn)證提供了加密的傳輸服務(wù)層。
- SASL:簡單身份認(rèn)證與安全層(Simple Authentication and Security Layer),用于認(rèn)證用戶。SASL進(jìn)行身份認(rèn)證,而上面說的 TLS 提供認(rèn)證數(shù)據(jù)的加密傳輸。
- StartTLS: 也被稱為伺機(jī) TLS 。如果服務(wù)器雙方都支持 SSL/TLS,StartTLS 就會(huì)將純文本連接升級(jí)為加密連接(TLS 或 SSL)。如果有一方不支持加密,則使用明文傳輸。StartTLS 會(huì)使用標(biāo)準(zhǔn)的未加密端口 25 (SMTP)、 110(POP3)和 143 (IMAP)而不是對(duì)應(yīng)的加密端口 465(SMTP)、995(POP3) 和 993 (IMAP)。
啊,我們?nèi)匀挥?sendmail
絕大多數(shù)的 Linux 版本仍然還保留著 /usr/sbin/sendmail 。 這是在那個(gè) MTA 只有一個(gè) sendmail 的古代遺留下來的痕跡。在大多數(shù) Linux 發(fā)行版中,/usr/sbin/sendmail 會(huì)符號(hào)鏈接到你安裝的 MTA 軟件上。如果你的 Linux 中有它,不用管它,你的發(fā)行版會(huì)自己處理好的。
安裝 Postfix
使用 apt-get install postfix 來做基本安裝時(shí)要注意(圖 1),安裝程序會(huì)打開一個(gè)向?qū)?,詢問你想要搭建的服?wù)器類型,你要選擇“Internet Server”,雖然這里是局域網(wǎng)服務(wù)器。它會(huì)讓你輸入完全限定的服務(wù)器域名(例如: myserver.mydomain.net)。對(duì)于局域網(wǎng)服務(wù)器,假設(shè)你的域名服務(wù)已經(jīng)正確配置,(我多次提到這個(gè)是因?yàn)榻?jīng)常有人在這里出現(xiàn)錯(cuò)誤),你也可以只使用主機(jī)名。
圖 1:Postfix 的配置。
Ubuntu 系統(tǒng)會(huì)為 Postfix 創(chuàng)建一個(gè)配置文件,并啟動(dòng)三個(gè)守護(hù)進(jìn)程 : master、qmgr 和 pickup,這里沒用一個(gè)叫 Postfix 的命令或守護(hù)進(jìn)程。(LCTT 譯注:名為 postfix 的命令是管理命令。)
- $ ps ax
- 6494 ? Ss 0:00 /usr/lib/postfix/master
- 6497 ? S 0:00 pickup -l -t unix -u -c
- 6498 ? S 0:00 qmgr -l -t unix -u
你可以使用 Postfix 內(nèi)置的配置語法檢查來測(cè)試你的配置文件,如果沒用發(fā)現(xiàn)語法錯(cuò)誤,不會(huì)輸出任何內(nèi)容。
- $ sudo postfix check
- [sudo] password for carla:
使用 netstat 來驗(yàn)證 postfix 是否正在監(jiān)聽 25 端口。
- $ netstat -ant
- tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
- tcp6 0 0 :::25 :::* LISTEN
現(xiàn)在讓我們?cè)俨倨鸸爬系?telnet 來進(jìn)行測(cè)試 :
- $ telnet myserver 25
- Trying 127.0.1.1...
- Connected to myserver.
- Escape character is '^]'.
- 220 myserver ESMTP Postfix (Ubuntu)
- EHLO myserver
- 250-myserver
- 250-PIPELINING
- 250-SIZE 10240000
- 250-VRFY
- 250-ETRN
- 250-STARTTLS
- 250-ENHANCEDSTATUSCODES
- 250-8BITMIME
- 250 DSN
- ^]
- telnet>
嘿,我們已經(jīng)驗(yàn)證了我們的服務(wù)器名,而且 Postfix 正在監(jiān)聽 SMTP 的 25 端口而且響應(yīng)了我們鍵入的命令。
按下 ^] 終止連接,返回 telnet。輸入 quit 來退出 telnet。輸出的 ESMTP(擴(kuò)展的 SMTP ) 250 狀態(tài)碼如下。 (LCTT 譯注: ESMTP (Extended SMTP),即擴(kuò)展 SMTP,就是對(duì)標(biāo)準(zhǔn) SMTP 協(xié)議進(jìn)行的擴(kuò)展。詳情請(qǐng)閱讀維基百科)
- PIPELINING 允許多個(gè)命令流式發(fā)出,而不必對(duì)每個(gè)命令作出響應(yīng)。
- SIZE 表示服務(wù)器可接收的最大消息大小。
- VRFY 可以告訴客戶端某一個(gè)特定的郵箱地址是否存在,這通常應(yīng)該被取消,因?yàn)檫@是一個(gè)安全漏洞。
- ETRN 適用于非持久互聯(lián)網(wǎng)連接的服務(wù)器。這樣的站點(diǎn)可以使用 ETRN 從上游服務(wù)器請(qǐng)求郵件投遞,Postfix 可以配置成延遲投遞郵件到 ETRN 客戶端。
- STARTTLS (詳情見上述說明)。
- ENHANCEDSTATUSCODES,服務(wù)器支撐增強(qiáng)型的狀態(tài)碼和錯(cuò)誤碼。
- 8BITMIME,支持 8 位 MIME,這意味著完整的 ASCII 字符集。最初,原始的 ASCII 是 7 位。
- DSN,投遞狀態(tài)通知,用于通知你投遞時(shí)的錯(cuò)誤。
Postfix 的主配置文件是: /etc/postfix/main.cf,這個(gè)文件是安裝程序創(chuàng)建的,可以參考這個(gè)資料來查看完整的 main.cf 參數(shù)列表, /etc/postfix/postfix-files 這個(gè)文件描述了 Postfix 完整的安裝文件。
下一篇教程我們會(huì)講解 Dovecot 的安裝和測(cè)試,然后會(huì)給我們自己發(fā)送一些郵件。