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 上面,這樣寄信的傳送者就是 xxxx@kttsite.com 這樣具有獨特性,如果想要綁訂到 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@EXAMPLE.COM“最好是 gmail ,只要能收信的都 OK

echo ‘Test passed.’ | mail -s Test-Email EMAIL@EXAMPLE.COM

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

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

 

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

發表迴響