
私はPostfixをリレーとして使ってメールを送信するRailsアプリケーションを実行しています。これがフローです
Rails -> Resque ワーカー -> Postfix -> SES -> クライアントへのメール送信
私の問題は、Rails と Postfix のログの関係を見つけて、1 通の電子メールも失われず、受信者に適切に送信されるようにしたいということです。
たとえば、レールログに「[メールアドレス]「その後、メールが送信されたログを確認できます[メールアドレス]、そして私は同じメールをPostfixでもチェックしたいです。もちろんそこにエントリがあるでしょうが、その特定のメールがPostifxを使用して送信されたかどうかを正確に正確に見つけるには?受信者が100通のメールを送信できるような[メールアドレス]、または 50 で、時間間隔が異なります。そのため、Postifx ログで追跡できるように、Rails アプリに特別なタグ、ID、または何かを追加するにはどうすればよいでしょうか。
問題が明確になったことを願います。
ありがとう
答え1
Rails が Postfix への接続に SMTP を使用している場合、250
応答に注目してください。
250 2.0.0 Ok: queued as 41F1A40412
Rails でこの ID をログに記録すると、後で何が起こったかを Postfix ログから簡単に見つけることができます。
$ grep 41F1A40412 /var/log/mail.log
postfix/smtpd[1900]: 41F1A40412: client=localhost[127.0.0.1]
postfix/cleanup[1903]: 41F1A40412: message-id=<[email protected]>
postfix/qmgr[29213]: 41F1A40412: from=<[email protected]>, size=299, nrcpt=1 (queue active)
postfix/smtp[1904]: 41F1A40412: to=<[email protected]>,
relay=example.net[198.51.100.51]:25, delay=14, delays=13/0.07/0.26/0.71, dsn=2.0.0,
status=sent (250 2.0.0 OK 5D47140412)
postfix/qmgr[29213]: 41F1A40412: removed
少なくとも、このdeliver.now!
メソッドは即時送信を強制するため、この応答が表示されます。通常のdeliver
メソッドでこれが発生しない場合は、SMTP の設計上、メッセージの配信の責任が誰にあるかが明確であるためと考えられます。次のホップが応答で責任を受け入れた場合にのみ、キューから削除されるはずです250 Ok
。