Я перенёс рабочую тестовую среду с DigitalOcean на домашний Linux-сервер (Ubuntu), но у меня возникают трудности с настройкой входящей почты. Я настроил проброс порта 25 на своём роутере и вижу, что письма приходят, судя по логам почты (в логах отображаются поля To: и From:). Проблема возникает, когда получатель почты пытается отправить POST-запрос с письмом в Discourse, и я получаю тайм-аут. Подозреваю, что это связано с тем, что мой провайдер не разрешает циклическую маршрутизацию через роутер: если в команде POST используется публичное доменное имя экземпляра Discourse, запрос зависает, так как роутер просто отбрасывает пакеты, и ответа нет.
Из-за этого я также не мог просматривать сайт Discourse на машине, где он запущен… пока не понял, что могу добавить строку в файл /etc/hosts, указывающую публичное доменное имя на внутренний IP-адрес сети. С тех пор я могу открывать экземпляр Discourse в Firefox.
Предполагаю, что, возможно, есть какой-то трюк, чтобы контейнер mail-receiver мог делать нечто подобное. Судя по тому, что я читал, он не использует файл /etc/hosts, и это может быть источником проблемы. Я пробовал добавлять строки в файл mail-receiver.yml, чтобы разрешить параметр extra_hosts:, но, похоже, это не регистрируется. Если я захожу в приложение mail-receiver и пытаюсь добавить ещё одну строку в файл /etc/hosts (с помощью cat >>), то, хотя строка и появляется, проблема остаётся.
Вот строка из логов, где показано неудачное выполнение POST-запроса (обратите внимание: домен в этом примере вымышленный):
<23>Feb 23 01:00:31 receive-mail[133]: Recipient: abc@example-discourse.org.uk<19>Feb 23 01:01:31 receive-mail[133]: Failed to POST the e-mail to https://example-discourse.org.uk/admin/email/handle_mail: execution expired (Net::OpenTimeout)<19>Feb 23 01:01:31 receive-mail[133]: /usr/lib/ruby/2.7.0/net/http.rb:960:in `initialize’
Есть какие-то идеи?