今のさくらVPSのサーバに変えてから、初のmb_send_mail()。
phpをインストールした段階で、mbstringは抜かりなく使用できるようにしていたから、すんなりメールが届くはず!
・・・はず・・・だった。
なんでですかね。
PHPからmb_send_mail()を実行するとtrueが返ってくるのに、待っても待ってもメールが届かないわけですよ。
もちろん、エラーログを見てもなにも記述無し。
iptablesでメール用にportを開く
よく考えたら、サーバの設定時にメール用のportを開いていないなぁと思い当たる。
過去記事の【iptablesを設定する】に沿って、メール関連のportである「25」「110」を開く。
ファイルの場所。
sudo vi /etc/sysconfig/iptables
これを追記。
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 25 -j ACCEPT
【説明】
110:POP(受信メール)の許可
25:SMTP(送信メール)の許可
設定ファイルの再読み込み。
sudo /sbin/service iptables restart
sudo /etc/init.d/httpd restart
だが、まだメールは届かない。
メールログを確認(maillog)
メールログの場所はここ。
sudo vi /var/log/maillog
ログの内容は、
~ stat=Deferred: Connection refused by [127.0.0.1] ※1
※1「Deferred: Connection refused by 【localhost】」=「遅延:【ローカルホストが】接続を拒否しました」
接続がrefuse(拒絶)されてるやんけ! ガ━━(゚д゚;)━━ン!!
一体何をしたら、ローカルさんから出禁食らうわけさ・・・?
ガクガク(((;゚Д゚)))ブルブル
sendmailの再起動
若干、頭が混乱したまま、「mb_send_mail()は内部処理でsendmail()を使用している」という事を思い出し、とりあえずsendmailのサービス再起動をかけてみる。
/etc/init.d/sendmail restart
Shutting down sendmail: [FAILED]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
【結果】
動いた!!!
メールが送られてくるようになった!!(喜)
メールログを確認すると、もちろん「Sent」(送信完了)
~ stat=Sent (OK ~
結論
再起動時に、Shutting down sendmail:FAILEDってことは、たぶん今までsendmailがサービスとして立ち上がってなかったんでしょうね。(遠い目)
という事で、何事も再起動してみるもんだ。sendmailも、OSも、人生も。
ちなみに
わたしはダイレクトにsendmailのrestartをかけてしまったけど、そういうわけにもいかない環境の場合、まずはsendmailのサービス状況を確認するコマンドはこちら。
/etc/init.d/sendmail status
そして、chkconfigユーティリティで、サーバ起動時に自動でsendmailサービスが開始するよう設定。
設定:
chkconfig sendmail on
設定確認:
chkconfig --list