返回部落格

在 Ubuntu 20.04 上安裝與設定 Postfix 作為僅發送的 SMTP 伺服器

在 Ubuntu 20.04 上安裝與設定 Postfix 作為僅發送的 SMTP 伺服器

Postfix 是一款受歡迎的免費且開源軟體,用作郵件傳輸代理(MTA)。Postfix 的工作是路由和遞送電子郵件。除了經典用途外,Postfix 還可以配置為僅由本地應用程式發送電子郵件。

Postfix 的這種應用是在各種情況下部署的實用技巧。例如,它可用於定期發送電子郵件通知、與外發流量受限的第三方電子郵件服務提供商合作等。與任何功能齊全的 SMTP 伺服器相比,Postfix 是一個更輕量級的替代方案,同時保留了必要的功能。

在本教學中,請查看 如何在 Ubuntu 上安裝和配置 Postfix 作為僅發送的 SMTP 伺服器。

先決條件

為了遵循本指南,您需要滿足以下先決條件:

安裝 Postfix

滿足前提條件後,伺服器就準備好部署 Postfix 了。安裝 Postfix 最簡單的方法是安裝 mailutils 套件。它可直接從官方 Ubuntu 套件庫中取得。

首先,啟動終端機,並更新 APT 套件資料庫:

Package Update

然後,您可以安裝 Postfix:

Install MailUtils

在安裝過程中,會彈出以下配置視窗。預設選項是 Internet Site。要確認選擇,請按 TAB 鍵將游標移至下一部分。然後,按下 Enter:

Mail Server Config

下一步將要求輸入系統郵件名稱(System mail name)。它將是建立伺服器時分配給伺服器的名稱。如指令碼中所述,如果本機主機的郵件地址為「foo@example.org」,則系統郵件名稱將為 example.org:

Mail Name Config

請注意,稍後也可以隨時使用以下命令觸發配置指令碼:

配置 Postfix

在此步驟中,Postfix 將被配置為僅發送和接收來自 localhost 的電子郵件。這需要 Postfix 監聽 loopback 介面。這是伺服器用於內部通訊的虛擬網路介面。接下來,使用您選擇的文字編輯器開啟 Postfix 配置文件:

inet_interface 的值變更為 loopback-only:

Inet Interface

您必須變更的另一個指令是 mydestination。它定義了透過 local_transport 郵件遞送傳輸進行遞送的網域清單。預設值將類似於這樣:

Mydestination Old

將其值變更為以下內容:

Mydestination

如果您的網域實際上是子網域,且您希望電子郵件看起來像是從主網域發送的,請在 Postfix 配置的末尾新增以下指令。它將從電子郵件地址中移除子網域:

Postfix Masquerade Domains

要使變更生效,請重新啟動 Postfix:

restart_postfix

測試 SMTP 伺服器

假設配置過程順利,現在是測試它的時候了。為此,請檢查 Postfix 是否可以使用 mail 命令向外部電子郵件帳戶發送電子郵件。它是 mailutils 套件的一部分:

郵件應該會寄達指定的電子郵件地址。此時,所有傳送的電子郵件都是未加密的。服務供應商通常會將此類電子郵件標記為垃圾郵件,因此請務必檢查垃圾郵件區以確認郵件是否寄達。

如果 mail 指令回報錯誤,或者電子郵件在很長一段時間後仍未寄達,請重新檢查 Postfix 設定,並確保伺服器名稱和主機名稱設定正確。使用此設定,電子郵件看起來將從以下地址傳送:

在這裡,username 將是執行 mail 指令的伺服器使用者的使用者名稱。

轉寄系統郵件

我們已成功驗證電子郵件伺服器已正確設定且功能正常。現在必須將其設定為轉寄 root 的電子郵件。所有傳送到伺服器的系統產生郵件都將轉寄到外部電子郵件地址。對於電子郵件收件者, /etc/aliases 檔案包含替代名稱清單。使用您選擇的文字編輯器開啟它:

預設情況下,它看起來像這樣:

Postfix Aliases

在檔案末尾,新增以下行:

Postfix Newaliases

它表示傳送到 root 的電子郵件將被轉寄到某個電子郵件地址。要使變更生效,請執行以下指令。它將重建 mail 指令所使用的別名資料庫:

sudo newaliases

接下來,您需要測試變更是否成功。傳送一封測試電子郵件到 root:

電子郵件應該會寄達指定的電子郵件地址。別忘了檢查垃圾郵件資料夾,因為目前尚未設定加密。

啟用 SMTP 加密

以未加密格式傳送電子郵件是冒險的舉動。為了確保安全,必須啟用 SMTP 加密。為此,我們將向 Let’s Encrypt 申請您網域的免費 TLS 憑證。

對於 Ubuntu,是由 Certbot 工具來執行此工作。幸運的是,它可以直接從官方 Ubuntu 套件庫中取得。使用以下指令安裝 Certbot:

Postfix Install certbot

假設 伺服器已設定 UFW,則必須開啟連接埠 80,以便進行網域驗證。執行以下指令來啟用它:

ufw allow Postfix

現在,執行 Certbot 來產生憑證。它會指示 Certbot 發行帶有 4096 位元 RSA 金鑰的憑證。驗證將透過連接埠 80  (HTTP) 進行:

輸出將會像這樣:

金鑰將儲存在以下目錄中:

現在您的憑證已生成,請在文字編輯器中開啟 Postfix 設定檔:

尋找以下區段 TLS 參數:

Postfix tls conf old

之後,修改以下指令的值 smtpd_tls_cert_file 以及 smtpd_tls_key_file:

Postfix tls conf

接下來,儲存並關閉檔案。若要使變更生效,請重新啟動 Postfix:

最後,再次傳送一封測試郵件到目標電子郵件地址:

該電子郵件現在應該會像其他電子郵件一樣正常顯示。如果您檢查該電子郵件的技術資訊,它將顯示為已加密。

結語

恭喜!您已成功設定由 Postfix 支援的僅傳送電子郵件伺服器。電子郵件傳輸也已使用適當的加密金鑰進行安全保護。

若要瞭解更多優化電子郵件傳輸的方法,請參考此教學課程 使用 Google SMTP 伺服器的最佳方法.

祝您電腦使用愉快!

author

Pranay Kapgate

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。