Ubuntu Postfix Mail Server 設定筆記 (四) MSA (Dovecot SMTP 認證)

本系列第四篇: 設定 MSA (Mail Submission Agent)
讓使用者透過伺服器發送郵件

一般使用者的發送 Email 的流程,不是 Webmail 就是用 SMTP。
這裡 SMTP 清晰一點是 SMTP Submission,即是 MUA 透過 MSA 委托 MTA 代為傳送郵件 (Relay)。
而 SMTP Submission 當然需要有登入設定,不然肯定會成為 Spam Mail 的 Open Relay了。
現在的 Postfix 預設設定已經不允許 Open Relay,所以必需先設定登入機制才能外部使用。

Postfix 使用模組化的設計,各部分都是分開的。
換句話說您可以使用很多不同的登入插件,
SASL (Simple Authentication and Security Layer) 就提供 Postfix 和 登入插件間的溝通。

Postfix 目前支援 Cyrus 和 Dovecot 的 SASL 實作。

本部分是為了將 SMTP 的 MSA 登入驗證整合到 Dovecot。

2017-04-26 更新: 更新文章格式

1. 啟用 SMTP Submission Port 587

之前提到很多 ISP 封鎖了 Port 25 的連線,所以要改用協議中定義的 Port 587 來收件。

修改 /etc/postfix/master.cf,把這一行 Uncomment 就好了。

當然不要忘記設定 Firewall 允許 Port 587 連線通過。

2. Dovecot SASL / Postfix 整合

啟用 Dovecot 內建的 SASL,修改 /etc/dovecot/conf.d/10-master.conf
Uncomment “#Postfix smtp-auth” 下面一段,並加入 user 及 group。

Dovecot 建議只在 SMTP Submission (Port 587) 啟用 SASL 驗證,
原因是當 Dovecot SASL 不可用時,也不至於連收信都失敗。
我們就按指引完成:

修改 /etc/postfix/master.cf,把之前指定在 main.cf 的設定都搬過來,並指定 SASL Socket Path

這個 master.cf 的格式 非常嚴格,我修改時錯了很多次:

  • = 前後都不能有空格
  • -o 前面必需有空格
  • 每項 Option 的 Value 必不能有空格
  • 不能換行,smtpd_recipient_restrictions 要用逗號隔開

修改完成用 Telnet 測試:

如果有沒有出現 220 Response 的話,恭喜中獎了

失敗的話,看看 Log 紀錄那邊出錯吧

設定成功後, 使用您最熟識的 SMTP Client 測試遠端登入是否成功。
我直接用 PHPMailer 測試,記得 Port 是 587。

結果:

透過外部 SMTP 發送成功了,Email 當然還帶有前面設定過的 SPF 和 DKIM。

到了這裏,只要設定 Dovecot 的 User,
SMTP、IMAP、POP3 都會使用同一個 Username & Password,
而且收信地址也會跟 Username 一樣,實在太美好了…

Ubuntu 其實有提供一個 Package “dovecot-postfix” 整合套件,直接完成以上的東西。
這跟 Windows 下的 XAMPP 和手動安裝 Apache, MySQL, PHP 然後手動整合一樣,
手動設定會學到比較多原理,Debug 比較容易吧。

One Reply to “Ubuntu Postfix Mail Server 設定筆記 (四) MSA (Dovecot SMTP 認證)”

Leave a Reply

Your email address will not be published.