Проблема с SMTP-почтой: Net::Timeout

Здравствуйте! Я пытаюсь решить проблему с SMTP: письма не отправляются, а при запуске команды ./discourse-doctor возникает ошибка Net::Timeout.

Заранее спасибо за помощь.

Раздел SMTP в файле app.yml:

DISCOURSE_SMTP_ADDRESS: plesk.oxide.host
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: no-reply@kyekillerbot.xyz
DISCOURSE_SMTP_PASSWORD: password
DISCOURSE_SMTP_ENABLE_START_TLS: true # (опционально, по умолчанию true)
DISCOURSE_SMTP_AUTHENTICATION: login

Я пробовал использовать telnet, и соединение с доменом SMTP устанавливается успешно.

Вы пробовали закомментировать эту строку? Мне кажется, что порт 465 не поддерживает STARTTLS.

Что касается порта 465, см. RFC8314:

Согласно этому RFC, оба порта 465 и 587 являются допустимыми портами для агента отправки почты SMTP (MSA).

Порт 465 требует согласования TLS/SSL при установлении соединения, а порт 587 использует STARTTLS, если выбрано согласование TLS.

Регистр IANA был обновлён, чтобы разрешить легитимное использование порта 465 для этой цели.

Для ретрансляции почты SMTP используется только порт 25, поэтому STARTTLS — единственный способ использовать TLS при ретрансляции почты.

@kyekiller, если вы планируете использовать порт 465, вам стоит попробовать следующее настройку (установить в false):

DISCOURSE_SMTP_ENABLE_START_TLS: false

Комментирование этого параметра, скорее всего, не поможет, поскольку по умолчанию в файлах контейнера Discourse это значение равно true; следовательно, даже если закомментировать эту строку, параметр останется установленным в true:

#DISCOURSE_SMTP_ENABLE_START_TLS: true    # (опционально, по умолчанию true)

Надеемся, это поможет.

Также (из RFC):

Когда устанавливается TCP-соединение для службы “submissions” (порт по умолчанию 465), сразу начинается рукопожатие TLS. Клиенты ОБЯЗАНЫ реализовать механизм проверки сертификатов, описанный в [RFC7817]. После установления сессии TLS обмен данными протокола отправки сообщений [RFC6409] осуществляется как прикладные данные TLS на протяжении всего TCP-соединения. (Примечание: имя службы “submissions” определено в разделе 7.3 этого документа и следует общепринятой конвенции: имя службы, работающей поверх неявного TLS, формируется из имени службы без TLS с добавлением буквы “s”.) Механизм STARTTLS на порту 587 широко распространён из-за ситуации с портом 465 (обсуждается в разделе 7.3). Это отличается от служб IMAP и POP, где неявный TLS на серверах распространён больше, чем STARTTLS. Желательно со временем перейти к использованию неявного TLS для основных протоколов, используемых программным обеспечением MUA, как ради единообразия, так и по дополнительным причинам, обсуждаемым в Приложении A. Однако для максимального использования шифрования при отправке сообщений желательно поддерживать оба механизма передачи сообщений через TLS в течение переходного периода в несколько лет. В результате клиенты и серверы ДОЛЖНЫ реализовать как STARTTLS на порту 587, так и неявный TLS на порту 465 в течение этого переходного периода. Обратите внимание, что между свойствами безопасности STARTTLS на порту 587 и неявного TLS на порту 465 нет существенной разницы, если реализации корректны и если как клиент, так и сервер настроены на обязательное успешное согласование TLS перед отправкой сообщений.

Примечание: в настройках по умолчанию Discourse есть два параметра, связанных с TLS:

# механизм аутентификации smtp
smtp_authentication = plain

# включить шифрование TLS для соединений smtp
smtp_enable_start_tls = true

# режим проверки сертификатов сервера smtp
# для отключения установите значение 'none'
smtp_openssl_verify_mode =

# принудительное использование неявного TLS согласно RFC 8314 3.3
smtp_force_tls = false

Также см.: