Discourse отправляет двойные письма

Здравствуйте! Я использую собственную версию Discourse на своём сервере. У меня установлена последняя сборка для разработки: Commits · discourse/discourse · GitHub

Я заметил, что Discourse отправляет электронные письма дважды, когда пользователь регистрируется или получает личное сообщение и т. д.

Я могу воспроизвести эту проблему при регистрации нового пользователя. Не знаю, как её диагностировать, в чём именно проблема, или может ли это быть связано с моим почтовым сервером. Нашёл несколько похожих тем, но они были созданы несколько лет назад, поэтому решил открыть новую.

Спасибо за помощь!

Видите ли вы какую-либо информацию в логах отправленных писем вашего сайта, связанную с этими письмами? Обратите внимание, что с помощью полей ввода в верхней части этой страницы можно отфильтровать письма по пользователю, адресу получателя или типу письма:

Если это ошибка, было бы полезно точно знать, по какой причине дублируются эти письма.

Какой тип письма вы получаете при регистрации пользователя? Уведомляет ли оно вас о пользователях, требующих одобрения?

Что касается писем, связанных с личными сообщениями, относятся ли они к сообщениям, которые пользователи отправили вам?

Здравствуйте,

На той странице, даже когда письмо отправляется дважды, отображается только одно.

Хотя произошло одно странное. С доменом protonmail.com дубликат не отправился, а с anonaddy.com пришло два письма. Это заставляет меня подумать, что проблема, возможно, связана с почтовым сервером, а не с Discourse.

Хотя с моего собственного домена/почтового сервера я тоже получаю дубликаты писем. Можно ли доверять тому, что если письмо не отображается на странице «Отправленные», то это на 100% означает, что Discourse не отправляет дубликаты?

Спасибо.

Если вы посмотрите на заголовки дублирующихся писем, вы сможете определить, где именно возникла проблема.

Обратите особое внимание на заголовки Received-by.

Хорошо, похоже, что оба письма действительно пришли из 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)

Вот что интересно.

Одинаковый ли это Message-ID?

Далее проверьте логи почтового сервера, чтобы выяснить, отправил ли Discourse одно сообщение или два, и какова история писем, поступивших на почтовые серверы anonaddy с идентификаторами 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'

Но в моей панели администратора всё ещё отображается, что было отправлено только одно сообщение:
image

Я ранее сталкивался с похожей проблемой на сервере, работающем под управлением dovecot. Сбои со стороны dovecot вызывали повторную доставку.

Позвольте мне поискать информацию.

Редактирование: всё ещё ищу информацию. Я забыл, какой объём данных мне придётся просматривать. :slight_smile:

Похоже, Клаудия не может найти эту информацию. Будем признательны за любые другие предложения о том, как можно точно определить и исправить проблему, так как я совершенно не разбираюсь в этом. Спасибо. :slight_smile:

Вы нашли решение?

Однажды я сталкивался с похожей проблемой. Пользователи получали шквал писем, которые почтовый сервер отправлял, но в представлении Discourse они не были доставлены.

Моя гипотеза заключалась в том, что Discourse передаёт задачу почтовому серверу, и в процессе возникает тайм-аут. Из-за этого для Discourse это выглядит как неудача, хотя письмо было отправлено. Неудачная задача затем повторяется, что приводит к отправке нового письма.

Мне удалось решить проблему, убрав задачи в Sidekiq, перезапустив почтовый сервер и настроив правила fail2ban.