Я пытаюсь настроить SMTP для групп, но постоянно получаю следующее сообщение об ошибке.
При этом я использую тот же 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”
Я выполнил несколько захватов трафика с помощью tcpdump, чтобы понять, что происходит, и заметил три различных сценария поведения. В первых двух случаях ситуация точно соответствует описанной в этой теме.
Обычное использование
Пользователи создают темы, отвечают и т. д., и другие пользователи получают уведомления по электронной почте, как и ожидалось. Также при отправке тестового письма через административный интерфейс проблем нет: письмо успешно отправляется и доставляется.
С помощью tcpdump видно, что происходит корректная последовательность действий: подключение через STARTTLS и т. д.
Discourse-doctor и rake
При использовании discourse-doctor или rake emails:test
Письмо не отправляется, и возникает ошибка: 503 5.5.1 Invalid command: Command not supported
Группа smtp
При тестировании отправки через группу smtp сразу после завершения TCP-рукопожатия от Discourse приходит пакет с фрагментом “DATA”, на который SMTP-сервер отвечает строкой 220 xxxxxxx ESMTP OpenSMTPD, а затем сообщением 500 5.5.1 Invalid command: Pipelining not supported.
К сожалению, это не работает.
При снятии галочки «Использовать SSL для SMTP» я получаю следующее сообщение об ошибке:
Это странно, так как я знаю, что мои учётные данные верны.
При анализе с помощью tcpdump поведение соответствует тому, что я описывал для случая «Discourse-doctor и rake».
Обмен данными между Discourse и SMTP-сервером выглядит следующим образом: