Google Cloud Platform + MailGun + Postfix 設定

最近把自己的網站主機搬到 Google Cloud Platform 位在彰化,至於為什麼要搬到 Google 底下則會在另一篇說明,這篇就只專注於怎麼讓 GCP 可以向外寄信

GCP 在這篇文檔中寫明了  就是不讓使用者使用 port 25 寄信

對於伺服器摸得比較熟的人可能就會說 “鎖 port ? 換個 port 就可以啦”

如果對於一些當然是這樣沒錯,之前有朋友去香港出差要用我的VPN

結果第一次連線正常之後就開始一直斷線,後來換成 80 port 跟 443 port 就順順用

當然爾,我也換 port 了…結果就是不斷的 Connect timeout

後來發現 Google 不只把從 port 25 進來的流量鎖住,就連連線到第三方的 port 25 mail 服務也被鎖

變成只能使用 465 跟 587,這次使用的第三方寄信服務叫做 MailGun

MailGun每個月可以有10000封免費信件的額度,而且還受到Google Cloud Platform的推薦,只不過介面就只有英文,不會英文的可能要辛苦一點XDD

 1.先到首頁點擊左上角 SIGN UP 申請帳號

2.填入基本的資料
第一個只是你的帳戶名稱類似暱稱,不是帳號,登入的帳號是使用Email
而這邊就是第二個門檻,MailGun可能怕使用者隨意發送大量信件超過額度又收不到錢,所以會要求綁訂一張有效的信用卡簽帳金融卡
來來來來~~解釋解釋….
信用卡是刷卡”當下”不用付錢沒錯,但是在月初or月中or月底會寄帳單到家裡要你繳費的,申辦信用卡比較建議有正常工作及穩定收入的人,這樣比較容易過(銀行才收的到錢阿 ㄏㄏ)
簽帳金融卡是只是滿 20 歲(未滿要雙親同意哦) 去銀行開一個戶頭,一般開戶都是 “金融卡” 只能領錢存錢的塑膠片,可是可以向銀行提出要開啟 “信用卡功能” ,就從塑膠片變身成為”魔法小卡卡”(?)
而簽帳金融卡也是刷卡當下不用付錢,但是你的戶頭的錢就會馬上被圈住,假如你有 2000 元在戶頭,刷了 1000 元的點數,雖然你去查戶頭餘額一定跟你說有 2000 ,但是後頭會補注”可動用金額” 1000 元,這其實也是保障自己(這樣就不怕刷過頭啦 ㄏㄏ….)

3.申請完帳號後會看到下面的畫面,預設 MailGun 會給一個長得要命的預設 Email,如果像丁丁我這樣有自己的網域,只要到 DNS 設定一些 TXT、dkim、CNAME、MX 紀錄就可以綁訂網域到 MainGun 上面,這樣寄信的傳送者就是 [email protected] 這樣具有獨特性,如果想要綁訂到 Gmail 用 SMTP 收發信也可以設定

4.設定完後點進去你要設定的網域,看到 Domain Information ,把 “Default SMTP Login” 跟 “

Default Password” 記起來,在主機上要設定這個!

5.接下來到 GCP 的主機,我這邊是使用 Centos 7 + Postfix 沒有安裝的可能要先行安裝一下

sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y

vi /etc/postfix/main.cf

把下方兩句註解掉變成這樣

# default_transport = error
# relay_transport = error

然後在檔案最下面新增以下

relayhost = [smtp.mailgun.org]:2525

smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

別問我為啥是 port 2525 是 Google 說的!!!!真的!!!當初我還設定 465 跟 587 就一直寄不出去,害我差點崩潰(?)

之後新增一個檔案

vi  /etc/postfix/sasl_passwd

新增以下內容,這邊就要把帳號密碼填進去啦!

[smtp.mailgun.org]:2525 (Default SMTP Login):(Default Password)

存檔後輸入以下指令生成資料檔

postmap /etc/postfix/sasl_passwd

確定有生成後就把原始檔案刪除,避免密碼外流,修改 sasl_passwd.db 權限為 600 ,併重新啟動 postfix

ls -l /etc/postfix/sasl_passwd*
rm /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db
postfix reload

接下來做測試,看能不能真的寄信成功,要安裝 mailx  套件

yum install mailx -y

輸入以下指令做測試,”[email protected]“最好是 gmail ,只要能收信的都 OK

echo ‘Test passed.’ | mail -s Test-Email [email protected]

如果有收到信就表示設定完成囉~可以正常寄信拉~(灑花

如果沒收到的話要看 maillog 判斷哪邊出現問題哦~

 

參考資料:
Sending Email with Mailgun(GCP Documentation)

發表迴響