Mailgun иногда не отправляет письма

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

На следующем изображении видно, что некоторые пользователи зарегистрировались 3 дня назад, а некоторые — даже 7 дней назад, но так и не получили письмо о регистрации (в красной рамке указано «время отправки последнего письма»).

Я знаю, что настройки электронной почты настроены правильно, потому что я получаю письма (например, я могу протестировать это, нажав на «Забыли пароль», и мне придёт письмо с инструкциями). Я понимаю, что Mailgun — это другая компания, но не уверен, что проблема с их стороны. В чём может быть дело?

РЕДАКТИРОВАНО: Я также попробовал зарегистрироваться сам, и система сообщила, что Discourse отправил мне письмо о регистрации, но его нет в моём почтовом ящике (проверил все папки, спам и корзину). Я также проверил раздел «Отправленные» в админ-панели и не нашёл записи о регистрации для этого пользователя. Пожалуйста, помогите, так как кажется, что новые пользователи могут регистрироваться на нашем форуме.

Проверьте логи Mailgun.

Спасибо за быстрый ответ :slight_smile:
Я проверил логи — даже попыток отправить регистрационное письмо не обнаружено. Вот почему я подумал, что проблема может быть в Discourse (возможно, он не может запросить у Mailgun отправку письма?). Есть какие-то идеи?

Вы уверены, что ваш хостинг-провайдер не блокирует порт, который вы используете для отправки электронной почты?

Некоторые провайдеры (включая DigitalOcean) блокируют порты 25, 465 и 587, чтобы предотвратить спам с новых серверов. Если вы столкнулись с этой проблемой, попробуйте использовать Mailgun с портом 2525 (измените порт в файле app.yml и выполните пересборку).

Простой способ проверить, заблокирован ли ваш порт, — использовать команду telnet:
telnet smtp.mailgun.com <port>

Спасибо за ваш ответ.
К сожалению, у меня не установлен telnet. Я попытался изменить порт на 2525 (вместо 587), но похоже, что письма с регистрацией всё равно не отправляются. Я использую DigitalOcean и видел, что это может быть проблемой, но если они блокируют порт, разве Discourse не должен записать это в admin->mail logs в разделе неудачных попыток?

Вы набираете talnet?

Что вы видите по адресу /sidekiq?

Вы недавно перезагружали систему?

Да, я вводил. Также я пробовал which talnet, но он ничего не возвращает. (Разве это не команда Linux, помимо того что это протокол?)

Я попытался проверить /sidekiq (я видел эту рекомендацию в похожих темах). Ошибок нет, и упоминаний о попытке отправки письма активации тоже нет. Я недавно перезагружал систему и попробовал изменить порт почты на 2525, как предлагалось ранее.

Это

telnet

Не talnet

Ой, извините, какая глупая ошибка :sweat_smile:
Похоже, что оба варианта верны:

Значит, проблема не в DigitalOcean или Mailgun, верно?

Со стороны Discourse проблем не обнаружено.
Можете проверить example.com/logs, чтобы увидеть, есть ли что-то конкретное, связанное с электронной почтой? Также проверьте /sidekiq, чтобы убедиться, что нет неудачных заданий.

В логах у меня следующее:

image

Не думаю, что они связаны с проблемой почты, но если кто-то знает, как их исправить, буду рад услышать.
В sidekiq я не вижу ни неудачных, ни застрявших задач.
Кстати, просто хотел сказать спасибо всем за попытку помочь :slight_smile:

Это кажется странным, и я действительно не могу придумать причину. Видите ли вы отправку писем в логах Mailgun? Работают ли другие письма нормально? Можете ли вы без проблем отправить тестовое письмо из Discourse на такие адреса?

Единственные письма, которые я вижу отправленными, это:

Последний автоматический сводный отчет был отправлен мне два дня назад (пока у нас небольшой форум, поэтому писем не так много).
Я только что попробовал протестировать отправку этого отчета мне, и он действительно отправляется (кстати, сводный отчет отправляется только администратору, верно? Потому что я пробовал с обычным пользователем, и это не сработало).
Есть ли способ отправить тестовое письмо на адрес не-администратора?

Ага! Я вижу проблему!

Вы ограничили настройку сайта disable_emails?

Если установлено значение «Да» или «Только для сотрудников», то на стороне Discourse отключаются все письма, поэтому они фактически не отправляются никому, кроме действующих сотрудников.

Да, именно так!
Я об этом не думал (возможно, потому что мои настройки написаны наполовину на английском, наполовину на иврите).
Это правильный ответ. Отлично, теперь всё работает :sweat_smile:
Спасибо всем за помощь :slight_smile: