Хотя я считаю, что ошибка @kvsf уже исправлена или в вашей конфигурации были внесены какие-то фундаментальные изменения, я хотел бы продолжить эту тему, опубликовав свою собственную конфигурацию, свои дальнейшие шаги и свой поиск помощи в той же проблемной области.
Базовая конфигурация
- Google Workspace Business Starter
- Настройка маршрутизации Gmail > SMTP-релей с: i) только зарегистрированными пользователями из домена, ii) белым списком IP-адресов с IP-адресом сервера хостинга форума и принудительной аутентификацией SMTP, iii) принудительным использованием TLS
- Установка Discourse через Docker согласно документации Discourse
- Конфигурация
app.yml согласно:
expose:
- "80:80" # http
- "443:443" # https
env:
DISCOURSE_HOSTNAME: "forum.mydomain.com"
DISCOURSE_DEVELOPER_EMAILS: 'dev@mydomain.com'
DISCOURSE_SMTP_ADDRESS: "smtp-relay.gmail.com"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "user@mydomain.com"
DISCOURSE_SMTP_PASSWORD: "mypass"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPEN_TIMEOUT: 25
DISCOURSE_SMTP_READ_TIMEOUT: 25
DISCOURSE_SMTP_DOMAIN: "mydomain.com"
DISCOURSE_NOTIFICATION_EMAIL: "noreply@mydomain.com"
LETSENCRYPT_ACCOUNT_EMAIL: dev@mydomain.com
Мои тесты
При запуске ./discourse-doctor эта конфигурация приводит к ошибке:
Testing sending to ...
SMTP server connection successful.
Sending to artificial.testadress@gmail.com. . .
Sending mail failed.
end of file reached
Затем я сначала проверил различные журналы Discourse и электронной почты
Ручное тестирование того же процесса внутри Docker (подключившись с помощью docker exec -it <CONTAINER_ID> bash) через
openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
не вызывает проблем и работает нормально. Поэтому я считаю, что либо мои параметры конфигурации в app.yml странные, либо внутри Discourse есть какая-то нестыковка в скриптах, либо… так много возможностей. ^^
Чтобы не выполнять ./launcher rebuild app каждый раз после изменения app.yml для проверки различных настроек, я начал напрямую редактировать /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb, изменив существующий код на:
class SMTP
attr_accessor :settings
DEFAULTS = {
:address => 'smtp-relay.gmail.com',
:port => 587,
:domain => 'mydomain.com',
:user_name => 'user@mydomain.com',
:password => 'mypass',
:authentication => 'login',
:enable_starttls => nil,
:enable_starttls_auto => true,
:openssl_verify_mode => 'peer',
:ssl => nil,
:tls => nil,
:open_timeout => 25,
:read_timeout => 25
}
def initialize(values)
self.settings = DEFAULTS #.merge(values)
end
что приводит к тому же поведению, что и выше (с учетом настроенных параметров app.yml).
Поиск помощи
И теперь я застрял. Конечно, я мог бы поэкспериментировать с оставшимися настройками (и даже вернуться к использованию только SSL, хотя это устарело в Discourse), но я хотел бы:
- научиться глубже и детальнее анализировать эту проблему
- понять, что на самом деле происходит и в чём заключается проблема
- исправить это и использовать всё гладко (+наконец-то запустить форум корректно)
Заранее благодарю за помощь.