Сбой почты после установки

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

У меня есть почтовый сервер (mail.mydomain.com) с учётной записью postmaster@mydomain.com. После прочтения нескольких вопросов и ответов в поддержке выяснилось, что для mydomain.com могут потребоваться DNS-записи SPF и DKIM. Не упустил ли я это в инструкциях по установке?

Я нашёл и протестировал запись SPF, и она, похоже, в порядке.
Я могу отправлять письма со своей личной почты на postmaster@mydomain.com, и они успешно приходят.

Однако, если я отправляю тестовое письмо из Discourse, оно не доходит. Требуется ли DKIM? Если да, то как его настроить? Снова спрашиваю: не упустил ли я где-то этот шаг?

Заранее спасибо…

SPF и DKIM не должны препятствовать отправке исходящей почты с Discourse на ваш почтовый сервер. Проверьте /logs на вашем форуме и логи почтового сервера на наличие сообщений об ошибках.

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

Спасибо всем. Извините за задержку. Похоже, что тестовые исходящие письма попадают в черную дыру. Теперь я понимаю, что записи SPF и DKIM не являются обязательными. Вот что я вижу сейчас, войдя под учетной записью администратора:

В разделе /emails/settings я ввожу любой адрес электронной почты (свой или приглашенного пользователя; с домена хостинга или нет), и получаю следующее сообщение об ошибке:

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

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

В /logs/error логи пусты. Очевидная ошибка (выше), но она не была записана! Настройка «Логировать все сбои обработки почты» в [/logs] включена (проверено). Я не нашел ошибок на стороне домена хостинга.

Кроме того, у меня есть сайт на WordPress с установленным, но не активированным плагином WP Discourse. Может ли этот плагин как-то помочь?

Заранее спасибо.

Редактирование…
Я вернулся в панель управления и увидел следующее:

Не удалось выполнить 7 задач по отправке почты. Проверьте ваш app.yml и убедитесь, что настройки почтового сервера указаны правильно. [Посмотрите неудачные задачи в Sidekiq](https://talk.thesturdytree.com/sidekiq/retries)

Я нажал на Sidekiq и увидел 7 записей, которые являются дубликатами этих:

[через 3 часа](https://talk.thesturdytree.com/sidekiq/retries/1585096899.6700559-58d9041788be7dd98d743894) 15 [по умолчанию](https://talk.thesturdytree.com/sidekiq/queues/default) Jobs::InviteEmail {"invite_id"=>2, "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

[через 3 часа](https://talk.thesturdytree.com/sidekiq/retries/1585097052.665957-fc6f06d948e7d37ec15354cc) 15 [критические](https://talk.thesturdytree.com/sidekiq/queues/critical) Jobs::CriticalUserEmail {"type"=>"email_login", "user_id"=>1, "email_token"=>"da467ec8590f0ecb0220d3aed5b33c61", "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

На той же странице панели администратора написано: «Вы используете последнюю версию!», но при подключении по SSH к дроплету мне сообщают, что «доступно обновление для 55 пакетов». Требуется ли от меня какое-то действие?

Это разные проблемы. Панель администратора сообщает, что сам Discourse обновлен до актуальной версии. Сообщение при входе в droplet указывает на наличие обновлений для системного программного обеспечения. Вам, вероятно, следует изучить, как настроить автоматические обновления для этой системы.

Похоже, что ваш экземпляр Discourse не может подключиться к указанному почтовому серверу на указанном порту. Убедитесь, что ваша конфигурация верна, и что DO не блокирует исходящие соединения на порту, который вы пытаетесь использовать.

https://github.com/discourse/discourse/blob/master@{2020-03-24}/docs/INSTALL-cloud.md#post-install-maintenance

В Ubuntu используйте команду dpkg-reconfigure -plow unattended-upgrades.

Рекомендации в логическом порядке выполнения:

  1. Проверьте, может ли ваш дроплет подключиться к почтовому серверу через telnet.
  2. Проверьте, что учётные данные SMTP работают независимо от дроплета.

Если шаг 1 не удаётся, значит проблема в сети. DigitalOcean известен тем, что блокирует определённые исходящие порты, и в 85% случаев проблема именно в этом.

Если оба шага 1 и 2 успешны, проверьте ваш app.yml. Скорее всего, пароль содержит символ, который мешает его корректному парсингу (около 5% случаев), либо вы ввели его неправильно.

Что касается почтового сервера: если вы размещаете собственный почтовый сервер вместо использования одного из рекомендуемых провайдеров, SPF и DKIM определённо помогут с доставкой, но вы, скорее всего, столкнётесь с целым рядом проблем, связанных с почтой.

Спасибо всем за помощь.
Думаю, проблема заключалась в моем почтовом сервере, предоставленном GoDaddy. Мне так и не удалось точно определить причину сбоя. Похоже, что у GoDaddy много проблем с общими аккаунтами. В конечном итоге я решил, что это не стоит хлопот, и поискал рекомендуемых поставщиков почтовых услуг, выбрав mailjet.com. Я создал бесплатный аккаунт на mailjet и соответствующим образом отредактировал app.yml. Также потребовалась дополнительная настройка mailjet. Снова запустил тест электронной почты в Discourse: успешно. Мое сообщество Discourse невелико, поэтому ограничений на количество бесплатных писем от mailjet быть не должно. На данный момент всё выглядит хорошо, но я вижу, что впереди ещё много настроек.
Ещё раз спасибо…