WordPressに問い合わせフォームを設置した時に苦戦したのでまとめておきます。
OSはCentOS7です。
Contact Form 7 インストール
問い合わせフォームを簡単に設置できるプラグイン Contact Form 7 をインストールしました。
設定をしてテストをしてみるとこんなエラーが発生↓
メッセージの送信に失敗しました。後でまたお試しください。 |
送信できない( ノД`)シクシク…
WP-Mail-SMTP インストール
PHPのメールパッケージをインストールしていないので、 mail()関数 が使えないのかなと思い、
mail() の代わりに wp_mail() を使ってメールを送信してくれるプラグイン WP-Mail-SMTP をインストールしました。
WP-Mail-SMTP の設定をして意気揚々とフォームからメール送信をしたところ、またしても同じエラー↓
メッセージの送信に失敗しました。後でまたお試しください。 |
送信できない┐(´-`)┌マイッタネ
SELinuxの設定
設定は間違っていないはずなので、セキュリティ系で制限されているのだと思い試しに SELinux を無効にしてみました。
# setenforce 0
SELinux を無効にした後でフォームからメール送信をしたところ、送信に成功しました。
ありがとうございます。メッセージは送信されました。 |
メール送信エラーの原因は SELinux だということが分かったので、SELinux のどのブールパラメータを変更すればよいか調べました。
変更すべきパラメータは httpd_can_sendmail でした。
先ほど無効にした SELinux を有効にして、ブールパラメータを変更
# setenforce 1 ←SELinux 有効
# getsebool httpd_can_sendmail ←httpd_can_sendmail のパラメーターを確認
httpd_can_sendmail –> off ←off だとApache経由でメール送信ができない
# setsebool -P httpd_can_sendmail=1 ←httpd_can_sendmail のパラメーターを on にする
# getsebool httpd_can_sendmail ←httpd_can_sendmail のパラメーターを確認
httpd_can_sendmail –> on ←on になっている事を確認
無事に、SELinuxが有効な場合でもメールが送信できるようになりました。