- 締切済み
sendmailのエラーを知りたい
こんにちわ。 sendmailを使って、メールの自動送信を行っています。 その際に、送れなかったsendmailのエラーは どのようにすれば取得できるのでしょうか? ------ ちなみに、レンタルサーバーで、pos.toネット というところを使用しています。 (www.pos.to) perl はバージョン 5.005_03 のようです。 sendmailは、sendmailと互換のMTAである qmail というものだそうです。 補足もいたしますので、よろしくお願いします。 参考サイトの紹介も大歓迎いたします。 _
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nipotan
- ベストアンサー率59% (134/227)
失礼。typo でした。 system("/usr/sbin/sendmail -t < $tmpfile") == 0 || die "sendmail failed. REASON=$?";
- nipotan
- ベストアンサー率59% (134/227)
> その際に、送れなかったsendmailのエラーは > どのようにすれば取得できるのでしょうか? ログレベルでなくてもいいって事なら、sendmail コマンドの -f スイッチを使用してください。 例えば your_addr@example.domain というメールアドレスにエラーステータスメッセージを返したければ、 open(MAIL, '| /usr/sbin/sendmail -t -fyour_addr@example.domain'); のようにすれば、envelope-from に、特定のアドレスをセットすることが可能です。 もし、sendmail コマンド発行時にコケた (何らかの要因でコマンド実行が失敗した) ものを捕まえたければ、perl 5.6.x だったら、パイプ出力 open のステータスで undef を返し $! にエラーがセットされるんですが、perl 5.005_03 の場合は undef を返さないので、この方法が使えません。 `` 演算子や system 関数を使用してコマンドを発行し、$? を見れば、即時に判定する事も可能です。 ただし、system 関数で sendmail を使用する場合は、メールの内容を RFC822 形式で、先にファイルに落としておく必要がありますが。。。 system("/usr/sbin/sendmail -t < $tmpfile) == 0 || die "sendmail failed. REASON=$?";
- asuca
- ベストアンサー率47% (11786/24626)
レンタルサーバでのメールの場合はログを見れない可能性もありますね。 pos.toネットのFAQにはなにもそういった記述はありませんでしたが一度直接問い合わせてみるしかないかと思います。
- asuca
- ベストアンサー率47% (11786/24626)
/var/log/maillog の中に「sendmail」というヘッダーで残っていると思うんですが。 これはsendmailでもqmailでも同じだと思います。 参考にするなら参考URLの所はどうですか? http://www.y-min.or.jp/~nob/qmail/
補足
早速のご回答ありがとうございます。 教えていただきたいのですが、まず、/var というディレクトリが見あたりません。 レンタルサーバーなので、もしかしたら、 「/var」というのは、わたしがアクセスできないところにあるのかも知れません。 例えば、CGIでそこのファイル(/var/log/maillog) を開いてブラウザに表示させるなどすることはできるのでしょうか? 例えば、 $mailfile='/var/log/maillog'; open(test,"$mailfile"); @testdbs=<test>; print @testdbs; として実行してみたのですが、何も表示されませんでした。 他にも思い当たるパスは書いてみて試したのですが、どうもうまくいきません。 ちなみに、sendmailのパスは、 $sendmail = '/usr/sbin/sendmail'; と記述しています。 なにかおわかりになりましたら、よろしくお願いします。