phpでメールを送ろうと思ったらとあるエラーで躓いたので調査&対応のメモ
結果たいしたことない問題だったんですけど汗
先に結果だけ書いておくと
qmailが正常に入っているサーバだったのでqmailでのsendをしてほしかったわけですが
このときはpostfixが動いてないってエラーを見て
postfixをなんとか動かそうって方向で四苦八苦してしまいました。。お恥ずかしい。。的な感じですw
postfixが何者かほとんど知らなかったってことも起因してますが。。
MTAについてはこのサイトがわかりやすいです
sendmail、qmail、Postfixのそれぞれの良さと違い
状況
メール送るプログラムと叩いてみたエラーはこんな感じです
vi mail.php
<?php $to = 'hoge@hoge.com'; $subject = 'test'; $message = 'body'; $headers = 'From: hoge@hoge.com' . "\n" . 'Reply-To: hoge@hoge.com' . "\n" . 'X-Mailer: PHP/' . phpversion(); mb_send_mail($to, $subject, $message, $headers); ?>
叩いた結果
# php mail.php sendmail: fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix
正常にqmailがインストールされている確認も含めてechoでメール出してみるテスト
# echo to: hoge@hoge.com | /var/qmail/bin/qmail-inject
→正常にメールが来た
# echo to:hoge@hoge.com | /var/qmail/bin/sendmail -t
→正常にメールが来た
# php -r "mail('hoge@hoge.com', 'subject', 'body');"
sendmail: fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix
→ダメちなみにpostfixはこんな感じ
sudo /etc/init.d/postfix status master が停止していますが PID ファイルが残っています
このあたりからpostfixについて
設定やら起動やらを試行錯誤して正常に動かそうとしてたわけですが
整理すると
・qmailでsendしたいのに動かない
・postfixは使わないようにしたい
なのでphpが使うMTAをqmailにすればいいだけじゃんと気づきましたw
php.iniを確認する
※locate
/usr/local/php/lib/php.ini
/usr/local/php/lib/php.ini.20131124
/usr/local/php/lib/php.ini.20131126
/usr/local/src/php-5.4.14/php.ini-development
/usr/local/src/php-5.4.14/php.ini-production
/usr/local/src/php-5.4.14.20131207/php.ini-development
/usr/local/src/php-5.4.14.20131207/php.ini-production
・・・省略・・・
※いっぱいでてきてアレなのでphpコマンドで
# php -i | grep php.ini
Loaded Configuration File => /usr/local/php/lib/php.ini
※php.iniのsendmail_pathを確認
# cat /usr/local/php/lib/php.ini | grep sendmail_path
;sendmail_path =
※コメントアウトされたままな上に指定してないのでqmailのpathを指定
# vi
--vi編集--
;sendmail_path =
↓
sendmail_path = "/var/qmail/bin/qmail-inject"
----------
※設定が変わったかを確認
# php -i | grep sendmail_path
sendmail_path => /var/qmail/bin/qmail-inject => /var/qmail/bin/qmail-inject
※phpコマンドでメール確認
# php -r "mail('hoge@hoge.com', 'subject', 'body');"
→無事送れた!