MAMPを使ったローカルホストでは問題なかったのですが、クライアントのサーバーにアップしてテスト送信したところ、メール完了画面で「エラーが発生しました。~」とメッセージが表示されてしまいました。
色々試してみたのですが、原因はMW WP Formではなくサーバー側の設定の問題でした。
稀なケースだと思いますがやった事を纏めました。
サーバーのOS:Centos
メールソフト:Postfix
行った事
・これが必須なのかわかりませんが設定を変更しました。
①
/etc/postfix/main.cfというファイルを開き
#inet_interfaces = all
inet_interfaces = localhost
となっている箇所を
inet_interfaces = all
#inet_interfaces = localhost
と、allのコメントを取ってlocalhostをコメントアウトしました。
②
サーバーにsshで接続し、以下のコマンドを打ちました。
まずは①で設定をいじったのでpostfixを再起動します。
postfix stop
postfix start
と順番に実行し
postfix status
と、ステータスを見てちゃんと動いている事を確認します。
setsebool -P httpd_can_sendmail=1
その後上記のコマンドを打って完了です。
直ってみたら簡単な事でしたが、1時間近く原因がわからず色々試してしまいました。
Postfixのmain.cfについて
▼参考にしたサイト。
postfixでメール送信ができない
「inet_interfaces」というのはPostfixがやり取りする範囲の指定のようです。デフォルトはlocalhostになっていてサーバー内部でのメールしか出来ないようです。
なので
/etc/postfix/main.cfというファイルを開き
#inet_interfaces = all
inet_interfaces = localhost
となっている箇所を
inet_interfaces = all
#inet_interfaces = localhost
に変更しました。この設定が必須なのかどうかちょっとよくわかりませんが
こちらのページでも変更しているので、変更する分には大丈夫なのではないかと。
Postfixによる、セキュリティに配慮したメールサーバの構築方法
httpd_can_sendmailの設定を有効にする
inet_interfacesをallに変更しても状況が変わらなかったので、サーバーに残っているログを確認してみました。
/var/log/maillog
ログにエラーが出てました
fatal: open /etc/postfix/main.cf: Permission denied
fatal: open /etc/postfix/main.cf: Permission denied
fatal: open /etc/postfix/main.cf: Permission denied
fatal: open /etc/postfix/main.cf: Permission denied
fatal: open /etc/postfix/main.cf: Permission denied
Ohh…
エラー内容をググったら見つけました
▼参考にしたサイト。
メールフォームからの送信を有効にする方法
httpd_can_sendmailについて調べてみたのですが、なるほどと思う情報が見つかりませんでした。
取り敢えずメール送信する許可がデフォルトでOFFになってるからONにする的にざっくり理解しました。
-Pオプションは再起動後も有効にするという意味があるようで重要です。
setsebool -P httpd_can_sendmail=1
無事直ってよかった。