您好,我正在服务器上使用自托管的 Discourse。我目前使用的是最新的开发版本:Commits · discourse/discourse · GitHub
我注意到 Discourse 在用户注册或收到私信等操作时会发送两次邮件。
当我注册一个新用户时,我可以重现这个问题。我不知道如何排查这个问题,或者确切的问题是什么,或者这是否是我的邮件服务器的问题……我找到了一些类似的主题,但它们都是几年前的了,所以我想开一个新帖。
感谢您的帮助!
您好,我正在服务器上使用自托管的 Discourse。我目前使用的是最新的开发版本:Commits · discourse/discourse · GitHub
我注意到 Discourse 在用户注册或收到私信等操作时会发送两次邮件。
当我注册一个新用户时,我可以重现这个问题。我不知道如何排查这个问题,或者确切的问题是什么,或者这是否是我的邮件服务器的问题……我找到了一些类似的主题,但它们都是几年前的了,所以我想开一个新帖。
感谢您的帮助!
您是否在您网站的“已发送邮件”日志中看到与这些邮件相关的任何信息?请注意,您可以使用该页面顶部的输入框按用户、收件人地址或邮件类型进行筛选:
如果这是一个 bug,那么了解重复发送的邮件具体是关于什么的将很有帮助。
用户注册时您收到的是哪种类型的邮件?是告诉您有用户需要批准吗?
关于与私信相关的邮件,这些是用户发送给您的邮件吗?
您好,
在该页面上,即使发送了两次,也只显示一次。
不过发生了一件奇怪的事。使用 protonmail.com 域名时,它没有发送两次,但使用 anonaddy.com 时却发送了两次电子邮件。这让我认为这个问题可能与邮件服务器有关,而不是 Discourse。
尽管我自己的域名/邮件服务器也会发送双重电子邮件。我们能相信,如果发送页面没有显示双重邮件,那么 Discourse 就 100% 没有发送双重电子邮件吗?
谢谢。
如果您查看双重电子邮件的标头,您应该能够判断问题发生在何处。
请特别检查收件人标头。
好的,如果我没记错的话,这两封邮件都来自 Discourse:
第一封邮件:
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)
第二封邮件(相同,重复,可以看到它们之间仅相隔几秒):
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)
这些是关键部分。
消息ID是否相同?
接下来检查邮件服务器日志,找出Discourse发送了一个消息还是两个消息,以及发送到anonaddy邮件服务器的ID为70F86100233和E34B6100233的邮件的历史记录。
消息 ID 不同。
第一个是:Message-ID: <6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community>
第二个是:Message-ID: <70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community>
我通过以下方式检查了我的邮件服务器日志:cat mail.log | grep 70297dae
输出:
Sep 30 13:20:18 yuno postfix/cleanup[1559656]: 7C0F03D047: message-id=<70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community>
Sep 30 13:20:38 yuno postfix/cleanup[1559656]: 88FE33D027: message-id=<70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community>
Sep 30 13:20:44 yuno dovecot: lda(nonrelated@x.x.me)<1559829><m0KuF3z2F2UVzRcAMzq6nQ>: sieve: msgid=<70297dae-5cb7-467b-980d-ef6dcfeea220@btt.community>: stored mail into mailbox 'INBOX'
使用其他消息 ID 也是如此:cat mail.log | grep 6172c966
输出:
Sep 30 13:20:43 yuno postfix/cleanup[1559799]: D3D4A3D059: message-id=<6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community>
Sep 30 13:20:49 yuno postfix/cleanup[1559656]: EFEBC3D027: message-id=<6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community>
Sep 30 13:20:49 yuno dovecot: lda(nonrelated@x.x.me)<1559834><Z0kBEIH2F2UazRcAMzq6nQ>: sieve: msgid=<6172c966-5777-44c2-988f-6acdd7ff33ff@btt.community>: stored mail into mailbox 'INBOX'
但在我的管理员面板中,它仍然显示只发送了一个:![]()
我之前遇到过一个类似的问题,是在运行 dovecot 的服务器上。dovecot 端的一个问题导致了重复发送。
我看看能不能找到相关信息。
编辑:还在找信息。我忘了我要搜索多少数据了。 ![]()
我想克劳迪娅找不到那个信息。如果您有任何关于如何精确定位和修复问题的其他建议,我将不胜感激,因为我一无所知。谢谢。![]()
您找到解决方案了吗?
我曾经也遇到过类似的行为。用户收到了大量的电子邮件,邮件服务器发送了这些邮件,但在 Discourse 的视图中它们并未发送。
我的假设是,Discourse 可能会将一项任务交给邮件服务器,而在此过程中发生了超时,这导致 Discourse 看起来像是失败了,即使邮件已发送。然后,失败的任务会被重复执行,从而导致发送新邮件。
我通过终止 Sidekiq 中的任务、重启邮件服务器以及调整 fail2ban 规则解决了这个问题。