Я помогаю пользователю решить проблему с неполучением писем и обнаружил в логах его учётной записи действие «отозвать email». Как можно отменить или откатить это действие?
Кроме того: если email пользователя отозван, отражается ли это в логах «Отправлено» или «Пропущено»? Или только в действии «Отозвать email»?
Действие «Отзыв email» срабатывает, когда несколько писем, отправленных пользователю, возвращаются с ошибкой (не доставляются). Каждый раз при возврате письма счётчик «ошибок доставки» пользователя увеличивается на значение, установленное в параметрах вашего сайта soft bounce score или hard bounce score. Как только счётчик ошибок доставки пользователя достигает значения параметра bounce score threshold вашего сайта (по умолчанию 4), срабатывает действие «Отзыв email».
Вы можете отменить это действие, перейдя на страницу администратора пользователя и нажав кнопку «Сбросить», которая находится в строке «Счётчик ошибок доставки» в верхней части страницы.
Если вы не нажмёте кнопку «Сбросить», Discourse автоматически очистит счётчик ошибок доставки пользователя по истечении периода времени, заданного параметром reset bounce score after days. По умолчанию это значение составляет 30 дней. После истечения этого периода Discourse снова попытается отправить письма пользователю.
Если письмо не отправлено пользователю, превысившему порог bounce score threshold вашего сайта, в логах «Пропущено» будет добавлена запись. Причина пропуска будет установлена как «Превышен порог bounce_score_threshold».
Спасибо. То есть, если я вижу «Exceeded bounce_score_threshold» в журнале пропущенных сообщений для недавнего письма пользователю X, я могу предположить, что ранее для этого пользователя было выполнено действие «Отозвать email», и наоборот?
Контекст: один из моих пользователей не получает письма от нашего экземпляра Discourse. Он довольно компетентен, поэтому я доверяю его сообщениям о том, что он проверил папку «Спам» и так далее. Я сбрасывал его счётчик отскоков некоторое время назад, но только сегодня случайно обнаружил в логе запись «Revoke Email» для него.
Это интересно. Я предполагал, что показатель отказов будет сбрасываться для тех, чьи адреса электронной почты ещё не отключены (как это работает в Mailman). Похоже, ближайший вариант — установить эту настройку примерно на 10 лет!
Насколько я понимаю, Discourse всегда сбрасывает счётчик отказов пользователя, а затем пытается повторно отправить ему электронные письма. Единственное различие в обработке временных и постоянных отказов заключается в том, что при постоянных отказах счётчик отказов увеличивается на значение по умолчанию 2 (установленное параметром сайта hard bounce score), а не на значение по умолчанию 1 (установленное параметром сайта soft bounce score).
Это сработало бы, но могло бы привести к непредвиденным последствиям. Например, пользователям, у которых превышен порог счётчика отказов из-за недавнего сбоя в работе Gmail, пришлось бы ждать 10 лет, чтобы их счётчик отказов был автоматически сброшен.
В Mailman 2 по умолчанию установлены более высокие пороги для настроек отскоков, но при их достижении вы автоматически отписываетесь. Аргументы можно привести в пользу любого подхода. Редакция: я не помню деталей, но, кажется, в какой-то момент вам предлагают ответить на административное письмо, что сбрасывает ваш счётчик отскоков и сохраняет вашу подписку.
Многие, кто разворачивает Discourse самостоятельно, вероятно, используют Mailgun, который добавляет адрес в свой список подавления после одного «необратимого сбоя» и поэтому игнорирует более мягкий подход Discourse.
Похоже, что с помощью API Mailgun можно получить этот список подавления, и, возможно, также можно синхронизировать его с настройками Discourse.
Сегодня я получил письмо от Google, в котором недвусмысленно сообщалось, что кто-то получил доступ к моему паролю — «Google стало известно, что ваш пароль известен другому лицу» — поэтому я задаюсь вопросом, не связано ли это с «сбоем»…
Речь идёт об удалении настройки bounce_score_threshold_deactivate. Интересно, не была ли это ошибка. Если значение по умолчанию было слишком труднодостижимым, правильным решением было бы его снизить.
Одним из непредвиденных последствий этого удаления для крупного форума может стать попытка регулярно отправлять письма на всё большее количество некорректных адресов в течение многих лет. Это может привести к проблемам с внешним сервисом (например, Mailgun, который блокирует адрес после единичного отказа с кодом permanent fail) или к ухудшению репутации IP-адреса.
В текущем виде, если я не ошибаюсь, Discourse считает, что отправляет письма, которые Mailgun просто отказывается доставлять из-за своего списка блокировок, и синхронизировать подход Discourse с политикой Mailgun невозможно.
Я забыл об этом. Не уверен, что настройка bounce_score_threshold_deactivate действительно предотвращала попытки Discourse отправлять письма на невалидные адреса. Проблема в том, что как только пользователь достигает порога bounce score threshold, Discourse прекращает отправку ему писем до тех пор, пока не истечёт период, установленный настройкой reset bounce score after days. После этого счётчик возвратов пользователя сбрасывается, и процесс начинается заново.
Не уверен, какое решение будет наилучшим. Если я правильно понимаю ситуацию, то со временем сайт на Discourse действительно будет пытаться отправлять письма на всё большее количество невалидных адресов.
У этого вопроса как минимум две стороны. Первая — какая политика будет оптимальной для Discourse, при условии, что отправитель электронной почты (например, localhost) согласится на это. Вторая — как синхронизировать процессы с сервисом отправки почты, который не поддержит такое решение (например, Mailgun).
По-моему, в Discourse уже есть сообщение примерно следующего содержания: «Пожалуйста, проверьте свой адрес электронной почты, так как у нас возникли проблемы с отправкой писем на него». Возможно, Discourse нуждается в более решительном подходе к отключению адресов, на которые письма возвращаются, в сочетании с неотключаемым уведомлением на сайте о проблемах с отправкой почты.
Синхронизация с внешними отправителями будет сложнее. Mailgun заявляет, что можно получить их список подавленных адресов через API , но я пока не знаю, можно ли также удалять адреса через API. Если возможно сделать и то, и другое, то Discourse мог бы отключать адрес сразу после его попадания в список подавленных и удалять его из этого списка после выполнения ручного действия в Discourse администратором или пользователем (например, ответа на письмо с подтверждением). Другая проблема, связанная с этим, заключается в том, что у каждого провайдера, вероятно, свои правила.