如何設置 Google Cloud Platform 發送電子郵件

Google Cloud Platform Sending Email

Google Compute Engine 是不允使用 25 / 465 / 587 端口對外連接,也就說 google 不允許使用 PHP mail() 來發送郵件,因為這些端口已被大量濫用亂發廣告郵件。

在 Google Cloud Platform 主機上,WordPress 的聯絡表單可以正常發送郵件,只能使用 google 信賴的第三方提供商以 SMTP 傳輸協定方式,如 SendGrid、Mailgun 或 Mailjet 商家,這樣可以確保主機的安全及減輕壓力,並不會誤判為圾垃郵件,保護你的 IP 信譽

SendGrid

Delivering your transactional and marketing emails through the world's largest cloud-based email delivery platform. Send with confidence.

Mailgun

Google Cloud Platforms and Mailgun have partnered together to give you a set of powerful APIs so you can send, receive, and track email effortlessly.

Mailjet

Advertisement

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 端口。

再添加以下的配置,強制 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)

這是延續上一篇「如何設置 Google Cloud Platform 發送電子郵件」 的教學,如果不想用 SSH 登入主機打指令,最方便的方法就是安裝 WP Mail SMTP by WPForms 外掛。不想要在主機上設置 mailgun 帳號 / 密碼,可以安裝上面的外掛也能實現在 Google Cloud Platform VM 主機 SMTP 發送電子郵件。

2. 如何設置 Google Cloud Platform 發送電子郵件(3)

使用 Google Cloud Platform (GCP) VM 主機後,聯絡單無法使用,收不到讀者或客戶寫給您的信,真的很苦惱 ! VM 主機已將 25 port 強制關閉,你只能使用 google 所指定的 SMTP 第三方發信系統 (SendGrid, Mailgun, or Mailjet) 或購買 G Suite domain 方式以 486 和 587 port 來發信。

Featured Photo 攝影師:Marta Dzedyshko,連結:Pexels

Follow me

yungke

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師,其實是個打雜小弟,修電燈、水管也都是我的工作。
yungke
Follow me
Advertisement

Follow Me

查看本文
喜愛 Like 點擊數!!

Comments

  1. Shawn says:

    你好!请问这个教程是是解决GCP实例不能发邮件的问题吗?可是我按教程配置了,但搭在实例上的SSR依旧不能发送邮件。请问有什么方法可以结决这个问题吗?谢谢。

    • yungke says:

      這個教程你必須要先有 mailgun 帳號才行,申請 mailgun SMTP 發信,一個月 10000 封免費,記得要輸入信用卡才能激活。

  2. Shawn says:

    我都配置好了,测试邮件也收到了。可是挂SSR还是发不出邮件。

Back to top