ログの詳細を切り取らずにすべて表示する方法

突然、すべてのメールが返送されるようになりました。完全なログの詳細が必要です。Discourse の表示は省略記号で切り捨てられています。どうすれば全エントリを確認できますか?この問題の解決に緊急に必要です。

Reporting-MTA: dsn; a27-22.smtp-out.us-west-2.amazonses.com

Action: failed
Final-Recipient: rfc822; keith.jones@du.edu
Diagnostic-Code: smtp; 554 Blocked - see https://ipcheck.proofpoint.com/?ip=54.240.27.22
Sta…

メールサーバーのログを確認する必要があります。Discourse はメールを送信しているようですが、メールサーバー側で配信を拒否されているようです。

ここで困っています。メールには Amazon SES を使用しています。コンテナ内で bash にログインしましたが、Discourse のメール関連のログがどこにあるのかわかりません。/var/log には関連するものが何も表示されません。完全な無知で申し訳ありません。Discourse の /logs URL では少なくともログを確認できましたが、なぜディスク上では見つからないのでしょうか。データベース内にあるのでしょうか?

こんにちは @Andro

Discourse では、Rails の Action Mailer が Sidekiq ジョブとしてスケジューリングされた後にメールを送信します。

通常、Rails の production ログにジョブの例外エラーが記録されます。例えば以下のようなものです。

linux# docker exec -it your-app bash
your-app:/# cd /shared/log/rails


your-app:/shared/log/rails# grep -i SMTP *

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. m7sm3825233oou.11 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. 63sm3561399otx.2 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. z63sm4258403otb.20 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. q18sm3815880ood.35 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. h2sm4265076otn.15 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. y84sm4346372oig.36 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. 8sm4343514oii.45 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. t18sm722516otc.64 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. j22sm1840062otp.45 - gsmtp

したがって、上記のように Rails の production ログから手がかりが見つかる可能性があります。

では、お役に立てれば幸いです。

追伸:もう一つ確認すべき小さな点として、あなたのユースケースでは役立たないかもしれませんが、Rails コンソールから以下を実行してみてください。

EmailLog.where(bounced:true).count

あるいは、さらに簡単には:

EmailLog.bounced.count

また、付け加えるのを忘れていましたが、より多くのログが必要な場合は、Rails を設定してメーラー情報をより詳細にログ出力させることができます。

config.action_mailer にはいくつかの設定オプションがあります。

config.action_mailer.logger は、Log4r のインターフェースに従うロガー、またはデフォルトの Ruby Logger クラスを受け取り、Action Mailer の情報をログに記録します。ログ出力を無効にするには nil に設定します。

Discourse では、デフォルト(OOTB)でこの設定はログ出力を行わない nil に設定されています。

[5] pry(main)> Rails.application.config.action_mailer.logger
=> nil

例えば、セクション 3.10 Action Mailer の設定 を参照してください。

問題は、Amazon Simple Email Service (SES) を使用しており、そこでのログ表示方法が見つからないことです。おそらく、このサービスにはログ機能自体が存在しないのだと思います。

@neounix さん、こんにちは。大変ありがとうございます。日付付きの production.log ファイルでメールの詳細をすべて確認できました。Amazon SES からの完全なレスポンスも確認できており、まさに必要な情報が揃っています。本当に助かりました。心から感謝申し上げます。

@Andro

どういたしまして。問題の根本原因を特定するお手伝いができて光栄です。

良いお年をお迎えください。これからも上へ上へと進んでいきましょう!