原由
目前已經在 “樹梅派” 上架設了網頁伺服器, MySQL, DNS, 在好奇心的驅使之下, 我也架了郵件伺服器, 其設定複雜之程度遠遠勝過我的好奇心! 盡管如此, 還沒有死心, 已經硬磕三天了, 先記錄一部份 – “郵件中繼” (relayhost), 作為日後參考。個人認為設定一定還有不到位的地方, 如果不做紀錄, 以目前的年紀, 忘的很快, 沒有太多的時間可以再摸索, 其他部分 “DNS record”, 憑證, 郵件加密, 垃圾郵件…相關設定等等, 抽空再補上。經驗是要靠積累的, 但不做紀錄的話是會流失的, 甚至消失!
基本安裝和設定
在樹梅派安裝 “postfix”, “dovecot”, 在Windows 11安裝 “Thunderbird” 做為郵件工具, 以便進行驗證測試, 參考文件如下
個人網路分享器 tplink ax50 的設定,如下

參考 : 埠號 25, 465, 587 的分別
個人郵寄伺服器剛架好之初, 基本上, 收信件功能, 除了阻擋垃圾郵件的設定之外, 不需費太多的心思。我從 Gmail, Hotmail 分別寄出測試信件, 很容易就收到了
發送信件倒是遇到很多問題
未使用 port 587 (中繼), 直接使用 port 25 (smtp)
使用 telnet + helo 命令送信給 Gmail, Gmail 會收到, 但會被直接放進垃圾郵件 使用 Thunderbird 送信給 Gmail, 會被彈回來 使用 telnet + helo 命令送信給 Hotmail, 會被彈回來 使用 Thunderbird 送信給 Hotmail, 會被彈回來
情況如下

看來, 使用SMTP中繼 (port 587) 是免不了了, 於是找 “free SMTP relay” 試試
參考 : 9 Paid and Free SMTP Server Solutions for Marketers and Developers [2022]
其實, 這一些 “free” 的似乎並沒有我想的那麼 “free”! 註冊第一關我就被 ban 掉了, 不接受 Gmail, Hotmail, …等 public mail當帳號, 於是想說用個人剛架好的郵件伺服器帳號試試看, 一樣不接受, 堅持一定要正式公司的email! 試了好幾個 (socketlabs, smtp2go, ….), 都一樣! 真的587 (我白癡, 被 “free” 耍了)!
最後, 還是 “谷歌” 可愛!
不過一開始, 我也弄錯一件事, 直接拿 Gmail的帳號密碼來使用, 似乎又 “傻” 了一小段 [因為根據搜尋都說個人Gmail 能當中繼(relay)], 最後終於發現密碼是要用 “應用程式密碼”
申請Gmail應用程式密碼
申請Gmail應用程式密碼, 以便Gmail 能夠充當 “郵件中繼站” 進行郵件轉寄, 中繼主機名稱為 smpt.gmail.com (不能直接使用個人的Gmail帳戶密碼), 請參考 “如何串接Gmail免費SMTP服務來發送電子郵件提醒?“, 過程如下 :





在應用程式密碼產出之後, 於個人郵件伺服器 (樹梅派), 修改 /etc/postfix/main.cf , 加入
| relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt |
詳細作法, 參考 “在 Ubuntu 18.04 透過 postfix 來使用 Gmail 寄信”
中繼測試
目前個人的樹梅派有兩組帳號, pi 和 rich, 個人郵寄伺服器已架設使用 Gmail做為郵件寄送中繼, 在Thunderbird 郵件工具新增一組帳號 rich, 再做一次郵寄中繼測試, 以便獲得更多一點的了解
在Thunderbird 新增帳號


先郵寄一封給個人伺服器的自己測試一下, 沒問題的話, 再寄一封到 Hotmail 試試看 (伺服器會採Gmail 中繼的方式), 如下

Hotmail 有收到郵件, 寄件者的郵件地址呈現為我的Gmail帳號地址, 而非我個人郵件網域地址,不過郵件並沒有被歸類為垃圾郵件, 如下

郵件地址替換
郵件地址替換做法和設定有很多種, 參考如下
- Forcing the from address when postfix relays over smtp
- Postfix relays via gmail, FROM email is wrong
參考裡的文章內容說明有點硬, 很難磕, 留著日後再研究, 選擇直接從 Gmail 設定下手 (目前個人郵件伺服器也只有我個人在使用, 只有兩個帳號 pi 和 rich而以 ),告知 Gmail 轉寄時要替換郵寄地址, 作法如下
在 Gmail 個人帳戶新增一組郵寄地址, 以對應個人郵件伺服器的帳號 rich@rurupapa.ddns.net, 這樣中繼出去的郵件, 郵件地址才會呈現個人郵件伺服器的帳號地址, 操作如下


注意! 這裡埠號請選25, 不要 587


Gmail 會寄 “確認碼” 到個人伺服器帳號, 此時郵件工具 Thunderbird 會收到來自 Gmail 的郵件, 如下, 先填確認碼, 之後再按連結進行確認

填確認碼

按 Thunderbird 郵件中的連結進行確認

確認Gmail帳戶已新增郵寄地址

使用郵件工具 Thunderbird 再寄一次測試郵件給 Hotmail

Hotmail 收到, 但這一次郵件被歸類為垃圾郵件 (總比被 “彈” 掉要好), 至於如何避免被列為垃圾信, 還需要再研究研究
![p rich huang o Test email from Test email from rich@rurupapa using Thunderbird - 2 Hotmail cf_rich_huang@hotmail... test mail test mail 10:59 FF 10:06 C]](https://rurupapa.tplinkdns.com/wp-content/uploads/2022/06/p-rich-huang-o-test-email-from-test-email-from.png)
不過, “郵件地址” 已經改為個人郵件伺服器的帳號地址了

垃圾郵件認定測試
這麼辛苦架設郵件伺服器, 發送的郵件當然不想被人視為 “垃圾” 啊!
Further email testing
If all went well your email has been sent and you can do one more test
- Go to the following site – www.mail-tester.com
- Copy the email address
- Send an email from your newly created account to that address
- Make the email look ‘normal’, do not just put a single word, and do not attach anything
- Click on Then check your score
- Look at the result, it will tell you what looks not right in your email
結果:

ddns網域的郵件基本會被視為垃圾郵件, 在設定上還需要繼續擦脂抹粉(masquerade)一下, 參考 Postfix masquerading or changing outgoing SMTP email or mail address
我需要實際線上實測, 歡迎來信
- rich@rurupapa.ddns.net
- pi@rurupapa.ddns.net
結論
“免費的最貴!“, 它沒你的吃錢, 但它吃你的時間, Free Try之前要慎重!
