質問: 新規でレンタルサーバ(専用サーバ)を借りて、Web上(CGI)からメールの送信を行えるようにしたいのですが、Apacheを経由するとメールの送信に失敗してしまいます。 コマンドラインからPHP(cli)を実行した場合は問題なくメールを送る事ができているのですが、Web経由だとPerlとPHPのどちらもエラーになってしまいました。 phpのメール送信関数は念のため mail() 関数、および mb_send_mail() 関数の2つでテストしています。 また、PerlCGIからも送信テストを行っています。 エラー内容(sendmailのエラーログ)はPerl、PHPの場合ともにsendmailのエラーログだけ取得でき、同じ内容になりました。 apacheのエラーログは何も出力されませんでした。 ■動作確認済み(正常にメールが送信できました) -コマンドライン 1. > php -f mail.php 2. > echo '' | php ※ mail.php にメールを送るサンプルスクリプトを記述しています。 別環境(Localのテストサーバ)では正常に動作しているのを確認しました ■ 動作環境 ・レンタルサーバ(専用サーバ) OS: Red Hat Enterprise Linux ES release Apache version: 2.0.52 PHP version: 5.2.9 Perl version : 5.8.8 SELinux: Disabled suEXEC: 利用しない サーバドメイン:(ドメイン取得前のため、まだサーバ名と一致していません) PHP: mail() および mb_send_mail()関数はインストールされています sendmail: 通常のメール送受信は確認済みです(初期設定のまま触っていません) ・エラーログ クライアント画面(Web):PHP, perl共にエラーや警告なし apacheのエラーログ: なし sendmailのエラーログ: Mar 31 02:26:23 c15rx2b3 sendmail[7354]: n2UHQLdN007354: to=(メールアドレス), ctladdr=apache (48/48), de lay=00:00:02, xdelay=00:00:02, mailer=relay, pri=30095, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error Mar 31 02:26:23 c15rx2b3 sendmail[7354]: n2UHQLdN007354: n2UHQLdO007354: DSN: Data format error 「stat=Data format error」と「DSN: Data format error」がエラーメッセージの該当箇所になります。 コマンドラインで実行すると上記のエラーは出ずに正常にメールが送信できているので、原因が特定できず困っています。 気になる箇所としては 1.Server名が取得前ドメインになっているため、一致していない 2.sendmail のエラーログで relay=127.0.0.1 と自アドレスになっている (コマンドラインから実行した場合は relayのアドレスは外部のサーバになります) どのような設定変更が必要か、ご教授頂ければと思います。 足りない情報がありましたらご指摘ください。 よろしくお願い致します。
回答: php.iniのsendmail_pathの設定はどうなっていますか? あとctladdr=apache となっているのも気になります。 (apacheのメールアドレスがあれば問題ないかも) 例えば mb_send_mail の additional_parameter を # mb_send_mail(to@example.co.jp, 'SUBJECT', 'MESSAGE', "From: from@example.co.jp", "-ffrom@example.co.jp"); 指定したり、変わることがないならphp.iniのsendmail_pathで指定してはどうでしょうか? 参考URL: