ひでメモ

プログラムについて勉強したことを書きます。たぶん。

Docker 環境の Mailhog で詳細なログを出力する

今回 SMTP を使っての APサーバ <=> SMTPサーバ 間のメール送信処理がうまくいってないようだったのでその部分の詳細なログを取得したくて調べていました。

Mailhog で詳細なログを出力する

開発環境では Mailhog というツールを使っています。
SMTPサーバとして指定するとメールを受け取って実際には送信せず、通常のメーラのように Mailhog が用意した画面に表示してくれます。

docker-compose.yaml に以下のように logging という設定を追加するだけで出力できました。

mailhog:
  image: mailhog/mailhog
  logging: # ここを追加!
    driver: 'none'  
  ports:
    - '8025:8025'

docker compose up-dオプションをつけないで立ち上げるとログをコンソールに出し続けてくれ、そこに Mailhog のログも出力されるようになりました!

以下のようにSMTP のセッションが始まってから FROM はどのアドレスで〜という詳細が出力されます。

hoge-mailhog-1  | 2022/12/01 01:12:02 [SMTP 172.21.0.4:60546] Starting session
hoge-mailhog-1  | 2022/12/01 01:12:02 [SMTP 172.21.0.4:60546] [PROTO: INVALID] Started session, switching to ESTABLISH state
hoge-mailhog-1  | 2022/12/01 01:12:02 [SMTP 172.21.0.4:60546] Sent 35 bytes: '220 mailhog.example ESMTP MailHog\r\n'
<以下略>

これで解決できるといいのですが…!

参考

verbose logging using docker image · Issue #56 · mailhog/MailHog · GitHub