Всем привет,
Я хочу перенести давно существующий форум с phpBB3 на Discourse. Мне удалось настроить Docker, и я получил доступ к начальной настройке. К сожалению, письма не отправляются, поэтому я не могу завершить инициализацию.
Я провёл отладку, но не смог найти причину, поэтому обращаюсь к вам за помощью.
Моя конфигурация следующая: я настроил apache2 как обратный прокси для Docker, и это работает. Мой почтовый сервер — это mailcow в Docker на той же машине. Почтовый сервер тщательно протестирован и работает стабильно ежедневно через SMTP с STARTTLS на порту 587 и через веб-почту.
Конфигурация в моём файле app.yml выглядит так:
DISCOURSE_SMTP_ADDRESS: mail.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: discourse@example.com
DISCOURSE_SMTP_PASSWORD: "password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (опционально, по умолчанию true)
#DISCOURSE_SMTP_DOMAIN: mail.example.com
DISCOURSE_NOTIFICATION_EMAIL: discourse@example.com
При запуске ./discourse-doctor я получаю:
==================== ТЕСТ ПИСЬМА ====================
Для надёжного теста получите адрес на http://www.mail-tester.com/
Или просто отправьте тестовое письмо себе.
Адрес электронной почты для теста? ('n' чтобы пропустить) [admin@example.com]:
Отправка письма на admin@example.com. . .
Проверка отправки на admin@example.com через mail.example.com:587, пользователь: discourse@example.com с обычной аутентификацией.
=======================================
ОШИБКА
========================================
НЕОЖИДАННАЯ ОШИБКА
Невозможно назначить запрошенный адрес - connect(2) для [правильный IPv6]:587
======================================
РЕШЕНИЕ
=======================================
Это не распространённая ошибка. Рекомендуемого решения не существует!
Пожалуйста, сообщите точное сообщение об ошибке выше на https://meta.discourse.org/
(И решение, если вы его найдёте!)
Не найдя в интернете людей с аналогичными сообщениями об ошибках, я обратился к этой теме.
Я легко смог подключиться к почтовому серверу с помощью telnet извне контейнера.
Что я попробовал внутри контейнера:
getent hosts mail.example.com
вернул правильный IPv6-адрес.
Но затем начали появляться ошибки:
openssl s_client -connect mail.example.com:587 -starttls smtp
140124593714496:error:0200206E:system library:connect:Connection timed out:../crypto/bio/b_sock2.c:110:
140124593714496:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=110
openssl s_client -6 -connect "[правильный IPv6]:587" -starttls smtp
139918557709632:error:02002063:system library:connect:Cannot assign requested address:../crypto/bio/b_sock2.c:110:
139918557709632:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=99
openssl s_client -connect smtp.gmail.com:587 -starttls smtp
работает отлично.
Когда я пытаюсь выполнить
openssl s_client -connect mail.example.com:587 -starttls smtp
извне контейнера, всё работает тоже отлично.
В логах my mailcow/postfix ничего нет…
Я в тупике. Можете подсказать, куда смотреть дальше?