私のホームページのサーバはGCP(Google Cloud Platform)を使用しているのですが、GCPではそのままだとインスタンスからメール送信ができません。なぜかというと、不正利用を防ぐためだそうです。公式で下記のとおりアナウンスされていますね。

“Google Compute Engine では、ポート 25、465、587 での送信接続は許可されません。これらの送信 SMTP ポートは、不正使用に利用されることが多いため、デフォルトでブロックされています。”
https://cloud.google.com/compute/docs/tutorials/sending-mail/?hl=ja

でもメールは送れないと困る!お問い合わせフォームとか!
そこで本日は、GCP上にインスタンスからwordpressでメールが送れるようにする手順をざっくりですが書いていきますね。

 

sendgridに登録する

「sendgrid」というクラウドサービスに登録すればメール送信できるようになります。
詳しい手順は下記が詳しいです。

公式ドキュメント
https://cloud.google.com/compute/docs/tutorials/sending-mail/using-sendgrid

こちらがスクショつきでわかりやすいので、公式ドキュメントとあわせてみると安心
http://kikutaro777.hatenablog.com/entry/2017/04/21/215228

 

SElinuxの設定

サーバでSELinuxの設定が有効になっていると、sendgridに登録しただけではメールが送れません。私はこれに気が付いておらず、なんでお問い合わせフォームからメールが送れないのだろう?と、postfixのログを見てみると、次のようなエラーが出ていました。ちなみにpostfixのログは /var/log/maillog です。

fatal: open /etc/postfix/main.cf: Permission denied

このエラー文でぐぐると、どうやらSELinuxの影響らしい。
そういえば自分のサーバSELinux有効化していたわ!
試しにSELinuxを無効化すると、フォームからメールが送信できました。

 

SELinuxが有効化されていても、メールが送れるように設定する

こちらを参考にさせてもらいました。
https://qiita.com/menonon/items/a5db682d934bcb36992b

# getsebool httpd_can_sendmail

で、httpd_can_sendmail値がoffになっていることがわかったので、

# setsebool -P httpd_can_sendmail=1

で、onにします。もちろんSELinuxを再度有効化。

ちなみにsetseboolコマンドでは ポリシーのON、OFFを行います。こちらを参考に。
http://www.yam-web.net/selinux/base.html

これでSELinuxを有効化したままメールが送れるようになりました!

 
 

WPFormsの設定

お問い合わせフォームのプラグインは「contact form 7」を使っていましたが、文字化けするし、フォームの幅もおかしいので、ついでにWPFormsに乗り換えることにしました。

やり方はこちらを参照させていただきました
https://www.onebizlife.com/wpforms-401

ふい~これでやっとお問い合わせフォームが使えるようになりました!
使えない状態なのに、なかなか気が付かず申し訳ないです。。

この記事が何かのお役に立つと良いのですが。ではまたー!

 

 

 

コメントを残す