如何設置 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

Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!

Mailjet

Simple to install and set up, the Mailjet x Google Cloud integration will help you create, send and track all your emails.
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

視咖啡如命的癮君子,沒有厲害的技術,只會小打小鬧的電腦工程師。WooWP Managed WordPress hosting 與 Kinsta 合作,推出最優惠、穩定的 GCP 主機方案,了解更多>>
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