qmailでのメール配信についての質問です。


PHPスクリプトからメールを配信すると、
deferral: Sorry,_I_wasn't_able_to_establish_an_SMTP_connection._(#4.4.1)

となりメールキューに内にメッセージが溜まってしまい、一行に配信されません。
そこで、以下を実行すると、配信されます。

kill -ALRM pid

配信エラーになる考えられる原因、また回避方法を教えてください。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2008/12/02 17:23:56
  • 終了:2008/12/09 17:25:03

回答(5件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/02 17:56:42

ポイント23pt

まずは原因を探ります。以下をご確認ください。

  1. 正しいメールアドレスを指定していますか?(他のメーラーで送信可能なアドレスですか?)
  2. 特定のドメイン(メールサーバ)に対してエラーが出るということはありませんか?
  3. ご利用のプロバイダ、またはPHPが動作しているレンタルサーバでOutbound Port 25 Blockingを実施していませんか?
  4. FireWall(含・iptable)の設定でブロックされていませんか?
  5. sendmailが生きていませんか?
id:uniom

1.について

kill -ALRM コマンドで配信できるものについては正しいです。

2.について

kill -ALRM コマンドで送信できないメールアドレスのドメイン対して同様のエラーが出ます。

3.について

当方、専用サーバでの運用ですが、設定しておりません。

4.について

ブロックしていません。

5.について

落としています。

現在kill -ALRM コマンドを定期的に実行しているのですが、kill -ALRM コマンドを実行しなくても配信されるようにする方法を教えてください。

2008/12/04 17:21:21
id:skipsstep No.2

skipsstep回答回数161ベストアンサー獲得回数32008/12/03 04:58:03

ポイント23pt

smtpと接続できていません。http://hatena

id:uniom

smtp接続できるようにする方法を教えてください。

2008/12/04 17:16:49
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/12/04 18:20:16

ポイント22pt

#1のコメントについて確認ですが――

kill -ALRM コマンドで送信できないメールアドレスのドメイン対して同様のエラーが出ます。

つまり、kill -ALRM を実行したとしても、あるドメインに対してはメールが送信できない(相手側で受信していない)ということですね。


次の確認事項です。

  1. 先方が、貴サイトからの配信を拒否していませんか? たとえば、先方がInbound Port 25 Blockingを実施しているということはありませんか?
  2. メール送信関数は何を使っていますか?(例:mail, mb_send_mail, PEAR::Mail)
  3. メール送信時にエラートラップをかけていますか?
id:uniom

kill -ALRM を実行したとしても、あるドメインに対してはメールが送信できない(相手側で受信していない)

→その通りです。


以下、確認事項につての回答です

1.当方、静的IPアドレスでの運用ですのでInbound Port 25 Blockingによってブロックされることはないと思われます。

  また、DNSの逆引きも設定しております。他の拒否方法については確認できていません。

2.sfMail(PHPMailer)です。

3.「failure notice」メールが返ってきたときの処理はしておりません。

2008/12/05 11:04:35
id:pahoo No.4

pahoo回答回数5960ベストアンサー獲得回数6332008/12/05 12:40:41

ポイント22pt

通信経路がクリアで、セキュリティ設定も無いとすると、おそらく相手の受信サーバが死んでいます。

DNSで引けても相手が死んでいる可能性があるので、pingを打ってみてください。


qmail-send は単純にSMTP送信するだけのようなので、あらかじめサーバの生存確認をしてからメールを発信した方が良いかもしれません。


qmail をハングアップさせないための対症療法としては、キューの生存時間を短くする方法が考えられます。

具体的な手順は、「メッセージがキューにとどまる期間を指定したい」をご覧下さい。


なお、いままで何度も kill しているとすると、キューが溜まりっぱなしになっており、それもハングアップの原因になっているかもしれません。

id:uniom

「メッセージがキューにとどまる期間を指定したい」

は大変参考になりました。


問題は「相手サーバが生きているにも関わらずSMTP接続できないこと」なのですが、

以下のようなフローで

PHP送信スクリプト実行→キューに溜まる→qmail-sendより送信→SMTP接続エラー→kill -ALRMで送信→送信される


qmail-sendからだとSMTP接続エラーになり、kill -ALRMで送信完了されるのはどのような理由でしょうか?

2008/12/05 15:50:19
id:pahoo No.5

pahoo回答回数5960ベストアンサー獲得回数6332008/12/05 16:13:46

ポイント10pt

#4のコメント

qmail-sendからだとSMTP接続エラーになり、kill -ALRMで送信完了される

「kill -ALRM を実行したとしても、あるドメインに対してはメールが送信できない」ということですから、送信完了できていないのではないでしょうか。

もしくは、kill -ALRM で送信完了したように見えても、キューに送信できないドメインのメールが残っているのではないでしょうか。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません