SMTP для группы: ошибка неправильной версии SSL

Здравствуйте,

Я пытаюсь настроить SMTP для групп, но постоянно получаю следующее сообщение об ошибке.

image

При этом я использую тот же SMTP-сервер, что и экземпляр, и получаю ту же ошибку, даже если применяю те же учётные данные, указанные в моём файле app.yml… Не понимаю, почему он ведёт себя иначе: письма отправляются идеально с учётными данными по умолчанию.

В логах моего SMTP-сервера я вижу подключение от сервера Discourse, а затем следующее сообщение:

smtp bad-input result=“500 5.5.1 Invalid command: Pipelining not supported”
smtp disconnected reason=“io-error: Connection reset by peer”

Я подозреваю, что Discourse пытается подключиться к SMTP-серверу с использованием TLS вместо STARTTLS.

Можете ли вы сделать скриншот соответствующих настроек?

Пожалуйста, удалите конкретные имена хостов и имена пользователей, но оставьте информацию о портах и другие настройки.

Конфигурация довольно стандартная: используется обычный порт 587, а параметр starttls установлен в true (значение по умолчанию)

Общая конфигурация:

Конфигурация для группы smtp:

Я выполнил несколько захватов трафика с помощью tcpdump, чтобы понять, что происходит, и заметил три различных сценария поведения. В первых двух случаях ситуация точно соответствует описанной в этой теме.

  1. Обычное использование

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

С помощью tcpdump видно, что происходит корректная последовательность действий: подключение через STARTTLS и т. д.

  1. Discourse-doctor и rake

При использовании discourse-doctor или rake emails:test
Письмо не отправляется, и возникает ошибка: 503 5.5.1 Invalid command: Command not supported

  1. Группа smtp

При тестировании отправки через группу smtp сразу после завершения TCP-рукопожатия от Discourse приходит пакет с фрагментом “DATA”, на который SMTP-сервер отвечает строкой 220 xxxxxxx ESMTP OpenSMTPD, а затем сообщением 500 5.5.1 Invalid command: Pipelining not supported.

587 поддерживает STARTTLS, но не TLS (на этапе подключения).

Необходимо изменить параметры здесь, чтобы разрешить STARTTLS.

Работает ли это, если снять галочку «Использовать SSL для SMTP»?

К сожалению, это не работает.
При снятии галочки «Использовать SSL для SMTP» я получаю следующее сообщение об ошибке:

image

Это странно, так как я знаю, что мои учётные данные верны.

При анализе с помощью tcpdump поведение соответствует тому, что я описывал для случая «Discourse-doctor и rake».
Обмен данными между Discourse и SMTP-сервером выглядит следующим образом:

< 220 [redacted] ESMTP ready
> EHLO [redacted]
< 250-[redacted]
< 250-PIPELINING
< 250-SIZE 36700160
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command : commande not supported

Как будто Discourse не пытается инициировать STARTTLS; это точно так, как описано в сообщении, на которое я ссылался в своём предыдущем посте.

У меня возникла та же проблема при настройке SMTP в Discourse для работы с адресом электронной почты ImprovMX.

Есть какие-то идеи, @supermathie?