Discourse で二重メール送信

こんにちは。サーバーでセルフホスト型のDiscourseを使用しています。現時点での最新のdevビルドを使用しています: Commits · discourse/discourse · GitHub

ユーザーがサインアップしたり、プライベートメッセージを受信したりすると、Discourseがメールを2回送信することに気づきました。

新しいユーザーをサインアップすると、これを再現できます。この問題をどのようにトラブルシューティングすればよいか、または正確な問題が何であるか、あるいは私のメールサーバーの問題である可能性があるかどうかはわかりません。同様のトピックをいくつか見つけましたが、数年前のものだったので、新しいトピックを開きたいと思いました。

ご協力ありがとうございます!

これらのメールに関連する情報がサイトの送信済みメールログにありますか?ユーザー、宛先アドレス、またはメールタイプでメールをフィルタリングするために、そのページの先頭にある入力を使用できることに注意してください。

これがバグである場合、重複メールが具体的にどのような目的で送信されているのかを知ることが重要です。

ユーザーが登録する際にどのような種類のメールを受け取っていますか?承認が必要なユーザーがいることを知らせるものですか?

プライベートメッセージに関連するメールは、ユーザーがあなたに送信したメッセージに関するものですか?

「いいね!」 2

こんにちは。

そのページでは、ダブルで送信しても1つしか表示されません。

しかし、奇妙なことが起こりました。protonmail.comドメインではダブル送信されませんでしたが、anonaddy.comではダブルメールが発生します。これは、この問題がDiscourseではなく、メールサーバーに関連しているのではないかと考えさせられます。

ただし、自分のドメイン/メールサーバーからもダブルメールを受信しています。送信ページに表示されない場合、Discourseがダブルメールを送信していないと100%信頼できますか?

ありがとうございます。

二重に送信されたメールのヘッダーを確認すると、問題が どこで 発生したかを知ることができるはずです。

特に受信者ヘッダーを確認してください。

「いいね!」 2

承知いたしました。両方とも Discourse から来ているようですね。

1通目のメール:

Return-Path: <SRS0=ll8P=FH=anonaddy.com=b_na4w2nlvmv3gizdenmya_gq4wmodfhfrwm@Mail Server>
Delivered-To: Email Address
Received: from mail2.anonaddy.me (mail2.anonaddy.me [***.***.***.***])
	by Mail Server (Postfix) with ESMTPS id A9132370DA
	for Email Address; Sat, 23 Sep 2023 11:06:42 +0300 (+03)
Received: from mail2.anonaddy.me (mail2.anonaddy.me [127.0.0.1])
	by mail2.anonaddy.me (Postfix) with ESMTPS id 64958FA584
	for Email Address; Sat, 23 Sep 2023 09:06:41 +0100 (BST)
DKIM-Signature: [Truncated]
From: [Sender]
To: Email Address
Subject: =?utf-8?Q?=5BBilin=C3=A7li?= Teknoloji
 =?utf-8?Q?T=C3=BCketicileri=5D_Hesab=C4=B1n=C4=B1z=C4=B1_ona?=
 =?utf-8?Q?ylaman=C4=B1z_i=C3=A7in_an=C4=B1msat=C4=B1c=C4=B1?=
Feedback-ID: F:28f5e9fd-7ba5-4466-8b17-b52f087bd332:anonaddy
Message-ID: [Message ID]
Received: from Mail Server ([***.***.***.***]) by
 mail2.anonaddy.me (Postfix) with ESMTPS id 70F86100233 for
 Email Address; Sat, 23 Sep 2023 09:06:37 +0100 (BST)

2通目のメール(同じ内容の重複で、数秒間隔で送信されているのがわかります):

Return-Path: <SRS0=mdkr=FH=anonaddy.com=b_payts6dtgn5dkodznftq_my3tgntdgvqwk@Mail Server>
Delivered-To: Email Address
Received: from mail2.anonaddy.me (mail2.anonaddy.me [***.***.***.***])
	by Mail Server (Postfix) with ESMTPS id D2066370DA
	for Email Address; Sat, 23 Sep 2023 11:06:54 +0300 (+03)
Received: from mail2.anonaddy.me (mail2.anonaddy.me [127.0.0.1])
	by mail2.anonaddy.me (Postfix) with ESMTPS id 68CBC107D41
	for Email Address; Sat, 23 Sep 2023 09:06:54 +0100 (BST)
DKIM-Signature: [Truncated]
From: [Sender]
To: Email Address
Subject: =?utf-8?Q?=5BBilin=C3=A7li?= Teknoloji
 =?utf-8?Q?T=C3=BCketicileri=5D_Hesab=C4=B1n=C4=B1z=C4=B1_ona?=
 =?utf-8?Q?ylaman=C4=B1z_i=C3=A7in_an=C4=B1msat=C4=B1c=C4=B1?=
Feedback-ID: F:28f5e9fd-7ba5-4466-8b17-b52f087bd332:anonaddy
Message-ID: [Message ID]
Received: from Mail Server ([***.***.***.***]) by
 mail2.anonaddy.me (Postfix) with ESMTPS id E34B6100233 for
 Email Address; Sat, 23 Sep 2023 09:06:51 +0100 (BST)
「いいね!」 1

これらが興味深い部分です。

メッセージIDは同じですか?

次に、Discourseが1通のメッセージを送信したのか、2通送信したのか、そして70F86100233およびE34B6100233としてanonaddyのメールサーバーに到達したメールの履歴を調べるために、Mail Serverのログを確認してください。

「いいね!」 4

メッセージIDが異なります。

1つ目は: Message-ID: \u003c6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community\u003e
2つ目は: Message-ID: \u003c70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community\u003e

以下のようにメールサーバーのログを確認しました: cat mail.log | grep 70297dae

出力:

Sep 30 13:20:18 yuno postfix/cleanup[1559656]: 7C0F03D047: message-id=\u003c70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community\u003e
Sep 30 13:20:38 yuno postfix/cleanup[1559656]: 88FE33D027: message-id=\u003c70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community\u003e
Sep 30 13:20:44 yuno dovecot: lda(nonrelated@x.x.me)\u003c1559829\u003e\u003cm0KuF3z2F2UVzRcAMzq6nQ\u003e: sieve: msgid=\u003c70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community\u003e: stored mail into mailbox 'INBOX'

別のメッセージIDでも同様です: cat mail.log | grep 6172c966

出力:

Sep 30 13:20:43 yuno postfix/cleanup[1559799]: D3D4A3D059: message-id=\u003c6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community\u003e
Sep 30 13:20:49 yuno postfix/cleanup[1559656]: EFEBC3D027: message-id=\u003c6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community\u003e
Sep 30 13:20:49 yuno dovecot: lda(nonrelated@x.x.me)\u003c1559834\u003e\u003cZ0kBEIH2F2UazRcAMzq6nQ\u003e: sieve: msgid=\u003c6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community\u003e: stored mail into mailbox 'INBOX'

しかし、管理パネルでは1つしか送信されていないように見えます: image

以前、dovecot を実行しているサーバーで同様の問題が発生しました。dovecot 側に問題があり、再配信が発生していました。

情報を見つけられるか確認します。

編集:まだ情報を見つけようとしています。検索しなければならないデータ量がどれくらいか忘れていました。 :slight_smile:

「いいね!」 4

クラウディアはその情報を見つけられないようです。問題を特定して修正する方法について、他に何か提案があればありがたいです。私はお手上げです。よろしくお願いします。:slight_smile:

解決策は見つかりましたか?

以前、似たような挙動で苦労したことがあります。ユーザーはメールサーバーが送信したものの、Discourse上では送信されていないと見なされるメールを大量に受信していました。

私の仮説は、Discourseがメールサーバーにジョブを渡し、そのプロセス中にタイムアウトが発生する可能性があり、その結果、メールは送信されたにもかかわらず、Discourseには失敗したように見えるというものでした。失敗したジョブは再試行され、新しいメールにつながります。

Sidekiqのジョブを停止し、メールサーバーを再起動し、fail2banルールを調整することで、これを解決することができました。