如何在 Ubuntu 環境下搭建郵件伺服器(一)
![](https://linuxstory.org/wp-content/uploads/2024/06/170142s5225bb70hfc0f9c-800x400.jpg)
在這個系列的文章中,我們將通過使用 Postfix、Dovecot 和 openssl 這三款工具來為你展示如何在 ubuntu 系統上搭建一個既可靠又易於配置的郵件伺服器。
在這個容器和微服務技術日新月異的時代,值得慶幸的是有些事情並沒有改變,例如搭建一個 Linux 下的郵件伺服器,仍然需要許多步驟才能間隔各種伺服器耦合在一起,而當你將這些配置好,放在一起,卻又非常可靠穩定,不會像微服務那樣一睜眼有了,一閉眼又沒了。 在這個系列教程中我們將通過使用 Postfix、Dovecot 和 openssl 這三款工具在 ubuntu 系統上搭建一個既可靠又易於配置的郵件伺服器。
Postfix 是一個古老又可靠的軟體,它比原始的 Unix 系統的 MTA 軟體 sendmail 更加容易配置和使用(還有人仍然在用sendmail 嗎?)。 Exim 是 Debain 系統上的默認 MTA 軟體,它比 Postfix 更加輕量而且超級容易配置,因此我們在將來的教程中會推出 Exim 的教程。
Dovecot(LCTT 譯註:詳情請閱讀[維基百科](https://en.wikipedia.org/wiki/Dovecot_(software))和 Courier 是兩個非常受歡迎的優秀的 IMAP/POP3 協議的伺服器軟體,Dovecot 更加的輕量並且易於配置。
你必須要保證你的郵件通訊是安全的,因此我們就需要使用到 OpenSSL 這個軟體,OpenSSL 也提供了一些很好用的工具來測試你的郵件伺服器。
為了簡單起見,在這一系列的教程中,我們將指導大家安裝一個在區域網上的郵件伺服器,你應該擁有一個區域網內的域名服務,並確保它是啟用且正常工作的,查看這篇「使用 dnsmasq 為區域網輕鬆提供 DNS 服務」會有些幫助,然後,你就可以通過註冊域名並相應地配置防火牆,來將這台區域網伺服器變成互聯網可訪問郵件伺服器。這個過程網上已經有很多很詳細的教程了,這裡不再贅述,請大家繼續跟著教程進行即可。
一些術語
讓我們先來快速了解一些術語,因為當我們了解了這些術語的時候就能知道這些見鬼的東西到底是什麼。 😀
- MTA: 郵件傳輸代理 ,基於 SMTP 協議(簡單郵件傳輸協議)的服務端,比如 Postfix、Exim、Sendmail 等。SMTP 服務端彼此之間進行相互通信(LCTT 譯註 : 詳情請閱讀維基百科)。
- MUA: 郵件用戶代理 ,你本地的郵件客戶端,例如 : Evolution、KMail、Claws Mail 或者 Thunderbird(LCTT 譯註 : 例如國內的 Foxmail)。
- POP3: 郵局協議 版本 3,將郵件從 SMTP 伺服器傳輸到你的郵件客戶端的的最簡單的協議。POP 服務端是非常簡單小巧的,單一的一台機器可以為數以千計的用戶提供服務。
- IMAP: 互動式消息訪問協議 ,許多企業使用這個協議因為郵件可以被保存在伺服器上,而用戶不必擔心會丟失消息。IMAP 伺服器需要大量的內存和存儲空間。
- TLS: 傳輸套接層 是 SSL( 安全套接層 )的改良版,為 SASL 身份認證提供了加密的傳輸服務層。
- SASL: 簡單身份認證與安全層 ,用於認證用戶。SASL進行身份認證,而上面說的 TLS 提供認證數據的加密傳輸。
- StartTLS: 也被稱為伺機 TLS 。如果伺服器雙方都支持 SSL/TLS,StartTLS 就會將純文本連接升級為加密連接(TLS 或 SSL)。如果有一方不支持加密,則使用明文傳輸。StartTLS 會使用標準的未加密埠 25 (SMTP)、 110(POP3)和 143 (IMAP)而不是對應的加密埠 465(SMTP)、995(POP3) 和 993 (IMAP)。
啊,我們仍然有 sendmail
絕大多數的 Linux 版本仍然還保留著 /usr/sbin/sendmail
。 這是在那個 MTA 只有一個 sendmail 的古代遺留下來的痕迹。在大多數 Linux 發行版中,/usr/sbin/sendmail
會符號鏈接到你安裝的 MTA 軟體上。如果你的 Linux 中有它,不用管它,你的發行版會自己處理好的。
安裝 Postfix
使用 apt-get install postfix
來做基本安裝時要注意(圖 1),安裝程序會打開一個嚮導,詢問你想要搭建的伺服器類型,你要選擇「Internet Server」,雖然這裡是區域網伺服器。它會讓你輸入完全限定的伺服器域名(例如: myserver.mydomain.net)。對於區域網伺服器,假設你的域名服務已經正確配置,(我多次提到這個是因為經常有人在這裡出現錯誤),你也可以只使用主機名。
![Postfix](/data/attachment/album/201612/28/170142zczxz01hbwa1ankd.png "Postfix")
圖 1:Postfix 的配置。
Ubuntu 系統會為 Postfix 創建一個配置文件,並啟動三個守護進程 : master
、qmgr
和 pickup
,這裡沒用一個叫 Postfix 的命令或守護進程。(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 內置的配置語法檢查來測試你的配置文件,如果沒用發現語法錯誤,不會輸出任何內容。
$ sudo postfix check
[sudo] password for carla:
使用 netstat
來驗證 postfix
是否正在監聽 25 埠。
$ netstat -ant
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp6 0 0 :::25 :::* LISTEN
現在讓我們再操起古老的 telnet
來進行測試 :
$ 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>
嘿,我們已經驗證了我們的伺服器名,而且 Postfix 正在監聽 SMTP 的 25 埠而且響應了我們鍵入的命令。
按下 ^]
終止連接,返回 telnet。輸入 quit
來退出 telnet。輸出的 ESMTP(擴展的 SMTP ) 250 狀態碼如下。 (LCTT 譯註: ESMTP (Extended SMTP),即擴展 SMTP,就是對標準 SMTP 協議進行的擴展。詳情請閱讀維基百科)
- PIPELINING 允許多個命令流式發出,而不必對每個命令作出響應。
- SIZE 表示伺服器可接收的最大消息大小。
- VRFY 可以告訴客戶端某一個特定的郵箱地址是否存在,這通常應該被取消,因為這是一個安全漏洞。
- ETRN 適用於非持久互聯網連接的伺服器。這樣的站點可以使用 ETRN 從上游伺服器請求郵件投遞,Postfix 可以配置成延遲投遞郵件到 ETRN 客戶端。
- STARTTLS (詳情見上述說明)。
- ENHANCEDSTATUSCODES,伺服器支撐增強型的狀態碼和錯誤碼。
- 8BITMIME,支持 8 位 MIME,這意味著完整的 ASCII 字符集。最初,原始的 ASCII 是 7 位。
- DSN,投遞狀態通知,用於通知你投遞時的錯誤。
Postfix 的主配置文件是: /etc/postfix/main.cf
,這個文件是安裝程序創建的,可以參考這個資料來查看完整的 main.cf
參數列表, /etc/postfix/postfix-files
這個文件描述了 Postfix 完整的安裝文件。
下一篇教程我們會講解 Dovecot 的安裝和測試,然後會給我們自己發送一些郵件。
via: https://www.linux.com/learn/how-build-email-server-ubuntu-linux
作者:CARLA SCHRODER 譯者:WangYihang 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive