內容介紹

Postfix是一套郵件傳輸代理(簡稱MTA),用於傳送並接收郵件。在本教程中,我們將安裝並配置Postfix,並利用它僅為本地應用傳送郵件——所謂本地應用,即與Postfix安裝於同一伺服器的應用。

為什麼有這樣的需求?

如果大家已經在使用第三方郵件服務方案發送並收取郵件,則無需執行自己的郵件伺服器。然而,如果大家管理一套雲伺服器,且其中安裝的應用需要傳送郵件通知,那麼執行一套本地只發送SMTP伺服器則更為理想。

在本教程中,我們將瞭解如何安裝並配置Postfix以作為只發送SMTP伺服器。

先決條件

要完成教程,大家需要:

請注意,我們的伺服器主機名稱應當與域名或者子域名相匹配。大家可以在命令提示中輸入hostname驗證伺服器的主機名稱。輸出結果應當與Droplet建立時我們為其提供的名稱相匹配。

第一步——安裝Postfix

在此步驟中,我們將瞭解如何安裝Postfix。在這裡,我們選擇最為高效的安裝方式,即安裝mailutils軟體包。

首先更新該軟體包資料庫:

  • sudo apt-get update

安裝mailtuils將安裝Postfix以及其它一些Postfix所必需的程式。

  • sudo apt install mailutils

在安裝過程末尾,大家會看到如下圖所示的螢幕,其中預設選項為Internet Site。本教程亦推薦該預設選項,因此按下TAB再按回車。

在此之後,大家會看到另一個容器,如下所示。System郵件名稱應該與我們在建立伺服器時為其分配的名稱保持一致。如果其顯示subdomain.example.com這樣的子域名,則將其變更為example.com。完成後,按下TAB再按回車。

第二步——配置Postfix

在這裡,我們需要配置Postfix,要求其僅處理執行所在伺服器上的郵件,即localhost。

Postfix需要在配置中監聽loopbackinterface,即該伺服器用於內部通訊的虛擬網路介面。要實現變更,開啟主Postfix配置檔案:

  • sudo nano /etc/postfix/main.cf

開啟之後,找到以下部分:

/etc/postfix/main.cf

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

將inet_interfaces = all行變更為inet_interfaces = loopback-only。

/etc/postfix/main.cf

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

另外我們還需要修改mydestination指令,其用於指定通過local_transport郵件交付傳輸進行交付的域名列表。在預設情況下,其值如下所示:

/etc/postfix/main.cf

. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .

此場景下的推薦預設值如下所示,請大家根據實際情況進行修改:

/etc/postfix/main.cf

. . .
mydestination = $myhostname, localhost.$mydomain, $mydomain
. . .

儲存並退出。

如果大家在單一伺服器上託管多個域名,則其它域名同樣可以利用mydestination指令被髮送至Postfix。

最後,重啟Postfix。

  • sudo systemctl restart postfix

第三步——測試SMTP伺服器

在這裡,我們將測試Postfix是否能夠利用mail命令向外部郵件賬戶傳送郵件。

傳送測試郵件:

  • echo “This is the body of the email” | mail -s “This is the subject line” your_email_address

在執行測試時,大家可能需要使用對其中的對應部分進行調整,從而滿足自己的實際情況。

現在檢查傳送測試訊息的目標郵箱地址。大家應該能夠在收件箱中看到對應訊息——如果沒有,請檢查垃圾郵件箱。

注意,在此配置中,From欄位內的地址應為[email protected],其中sammy為Linux使用者名稱,而域名部分則為該伺服器的主機名稱。如果大家變更使用者名稱,則其中的From地址也應當對應變更。

第四步——轉發系統郵件

最後設定轉發機制,這樣我們就能夠將指向系統root的郵件轉發至自己的個人外部郵箱了。

要實現這一功能,我們需要編輯/etc/aliases檔案。

  • sudo nano /etc/aliases

此檔案的預設內容如下:

/etc/aliases

# See man 5 aliases for format
postmaster:    root

在此設定下,系統生成的郵件會被髮送至root使用者。這裡我們需要將其重新路由至自己的郵箱,變更後為:

/etc/aliases

# See man 5 aliases for format
postmaster:    root
root:          your_email_address

執行以下命令使變更生效:

  • sudo newaliases

再次傳送郵件以進行測試:

  • echo “This is the body of the email” | mail -s “This is the subject line” root

大家應該能夠正常收取到郵件。

總結

這就是Postfix只發送郵件伺服器的全部設定流程。大家可能還需要採取一些額外步驟來保護自己的域名免受垃圾郵件打擾。

如果大家在單一地址接收來自伺服器的通知,那麼大家可能需要將其納入白名單以避免其被列為垃圾郵件。不過,如果大家希望向潛在站點使用者傳送郵件,則應當設定SPF記錄及以確保伺服器郵件合法性。

如果配置正確,這些額外的步驟能夠讓我們的伺服器郵件被更多郵件服務視為合法。

翻譯:diradw

.