Photo by Solen Feyissa on Unsplash
Google Compute Engine 是不允使用 25 / 465 / 587 端口對外連接,也就說 google 不允許使用 PHP mail() 來發送郵件,因為這些端口已被大量濫用亂發廣告郵件。
在 Google Cloud Platform 主機上,WordPress 的聯絡表單可以正常發送郵件,只能使用 google 信賴的第三方提供商以 SMTP 傳輸協定方式,如 SendGrid、Mailgun 或 Mailjet 商家,這樣可以確保主機的安全及減輕壓力,並不會誤判為圾垃郵件,保護你的 IP 信譽。
SendGrid
Mailgun
https://www.mailgun.com/google
Mailjet
https://www.mailjet.com/google
mailgun 發信
我是申請 mailgun 帳號,每個月有 10000 封郵件免費使用量,設定上不會太難。
在 GCP VM 電子郵件發送有兩種設置方式,一個是用 SSH 在主機裡設置,另一個是在 WordPress 中安裝 WP Mail SMTP by WPForms 外掛。
不管用哪個方法,都要先去 mailgun 申請帳號,把你的域名設置好,設置的方法,google 上有很多教學。
第一種方法
安裝 Postfix 郵件套件:
apt-get update && apt-get install postfix libsasl2-modules -y
編輯 main.cf 文件
vi /etc/postfix/main.cf
註釋掉以下 2 行
# default_transport = error
# relay_transport = error
在文件最下面添加 Mailgun SMTP 服務
relayhost = [smtp.mailgun.org]:2525
注意:必須使用 2525 port。
再添加以下的配置,強制 SSL / TLS 支持,並請求 STMP 認證。
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
存檔 main.cf 文件並關閉
生成 SASL 密碼:
ps. 將 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD 改成你的 mailgum 的域名的 SMTP 帳號及密碼
cat > /etc/postfix/sasl_passwd << EOF
[smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
EOF
用 postmap 方式生成一個 .db 文件
postmap /etc/postfix/sasl_passwd
ls -l /etc/postfix/sasl_passwd*
刪除密碼憑證
rm /etc/postfix/sasl_passwd
給予 .db 文件權限
chmod 600 /etc/postfix/sasl_passwd.db
ls -la /etc/postfix/sasl_passwd.db
回應 -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
重啟 postfix
/etc/init.d/postfix restart
測試上面的配置,寄一封信給自己
apt-get install mailutils -y
echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
用上面的配置,WordPress 安裝 Contact Form 7 外掛後,就可以正常發信了。
Google Cloud Platform 發送電子郵件教學系列文章:
1. 如何設置 Google Cloud Platform 發送電子郵件(2)
https://yungke.me/how-google-cloud-platform-sending-email-2/
2. 如何設置 Google Cloud Platform 發送電子郵件(3)
https://yungke.me/how-google-cloud-platform-sending-email-3/
發佈留言