Ошибка "Discourse::NotFound" при клике на поле "Email Type" в admin/email/bounced

Полагаю, что при клике на поле «Тип письма», например user_watching_first_post, должно отображаться подробное описание сообщения о недоставке, полученного от адресата.

Однако на моём самостоятельно размещённом сайте появляется указанное выше сообщение об ошибке. Что я могу сделать, чтобы это исправить?

Спасибо.

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

Спасибо. Для исходящей почты я использую Mailgun. Думаю, я использовал рекомендуемые настройки Discourse.

Для входящей почты я использую это: Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver Но я никогда не обновлял его после установки — может быть, в этом проблема? Так как для Discourse используется ./launcher rebuild app, то для mail-receiver это ./launcher rebuild mail-receiver?

Да, именно так его обновляют. Прошло уже довольно много времени с момента последнего обновления, но хорошим первым шагом будет обновление его и Discourse.

Я обновил оба компонента, но ошибка сохраняется, в том числе (как мне кажется) для писем, полученных после обновления. Есть ли какие-то дополнительные идеи?

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

Да, скорее всего, Discourse не получает его от Mailgun. Я не знаю, как работают вебхуки, но подозреваю, что они просто сообщают Discourse о временной или постоянной ошибке, не отправляя само сообщение об ошибке доставки.

Есть ли способ заставить эту функцию Discourse работать с Mailgun?

Должна быть возможность отображать хотя бы код ошибки и сообщение:

Код ошибки SMTP и сообщение об ошибке SMTP сохраняются
“code”: 550,
“address”: “'baz@example.com”,
“error”: “Сообщение не принято — недопустимый почтовый ящик. Локальный почтовый ящик 'baz@example.com недоступен: пользователь не найден”

https://documentation.mailgun.com/en/latest/api-bounces.html#examples

Если нет, то хотя бы нужно разумное сообщение об ошибке, объясняющее, почему ссылка не работает :slight_smile:

Проводились ли какие-либо работы по этому вопросу? Я был бы очень признателен, если бы это было так :slight_smile:

Я использую Digital Ocean и Mailgun (то есть основные рекомендуемые сервисы), поэтому предполагаю, что я не единственный, у кого возникла эта проблема.

После собственных тестов я заметил, что во многих случаях уведомления о недоставке (bounces) вообще не доходят до получателя письма. (Я обнаружил попытку подключения только для одного такого случая, и она была немедленно прервана). Я также не вижу, чтобы заголовок Return-Path устанавливался вообще (должен ли он быть?), что заставляет меня думать, что в большинстве случаев они даже не отправляются обратно.

Здесь тоже всё ещё проблема. Несмотря на моё предыдущее утверждение, теперь выясняется, что ни одна из этих ссылок не работает, начиная с запуска сайта. Изначально это, казалось, влияло только на отклонённые письма, полученные до того, как мы начали корректно обрабатывать такие случаи (Configure VERP to handle bouncing e-mails).

Я только что заметил в логе ошибок множество предупреждений следующего вида:

Email can not be processed: Email::Receiver::AutoGeneratedEmailError

Received: from ...
	for <bounce+f7e463.5f70e9-...@forum.example.com>; ...
Subject: Your message couldn't be delivered

Возможно, именно поэтому в Discourse нет никаких деталей о недоставленных письмах.

Я не вижу этих ошибок в логах, но проблема сохраняется. Когда я нажимаю на значение типа электронной почты для записи в списке отклонённых писем, появляется сообщение «Произошла ошибка: Discourse::NotFound».

А если отметить «Предупреждение»?

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

У меня та же проблема с Mailgun. Хост другой, так что дело не в этом!

Интересно, нет ли ошибки в инструкциях по настройке Mailgun для VERP:

Это уже какое-то время присутствовало в системе, но проблемы начались только сейчас, когда я решил выяснить, почему у меня так много возвратов писем.

Проблема, похоже, в том, что в столбце «Тип письма» нет ссылки, а за иконкой :information_source: (красные стрелки) ничего нет:

При клике на них я получаю следующее:

Просмотрев код страницы, я обнаружил, что в HTML-тегах ссылок полностью отсутствует атрибут href:

У меня настроен VERP для Mailgun, и в остальном всё работает хорошо.

Это ожидаемое поведение, когда отклонённый ответ не был обработан Discourse. Функция работает корректно, если Discourse получает отклонения, иначе он будет показывать этот ответ для всех отклонений.

Можете ли вы перепроверить и запустить тест согласно Configure VERP to handle bouncing e-mails ?

В таком случае было бы хорошо иметь более точное сообщение.

Я полагаю, вы имеете в виду, что если Discourse узнаёт об отклонении только через веб-хук Mailgun, то детали отклонения никогда не передаются в Discourse. Так ли это?

Если это так — существует ли способ передавать эти детали в Discourse, чтобы они записывались и отображались в том же месте, что и отклонения, полученные напрямую Discourse? Я думаю, что API Mailgun это позволяет ("Discourse::NotFound" error when click "Email Type" field on admin/email/bounced - #8 by Jonathan5).

При каких обстоятельствах Discourse обрабатывает отклонения вместо внешнего почтового сервиса? (Я знаю, что Discourse может отклонять или блокировать письма, но речь идёт об обработке уведомлений об отклонениях, полученных от получателей.)

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