SMTP 503 5.5.1 Ошибка: аутентификация не включена

Я использую локальный Postfix SMTP и получаю следующую ошибку:

503 5.5.1 Ошибка: аутентификация не включена

DISCOURSE_SMTP_ADDRESS: mail.xxx.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: resources@xxx.net
DISCOURSE_SMTP_PASSWORD: password123?
DISCOURSE_SMTP_ENABLE_START_TLS: true # (опционально, по умолчанию true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_AUTHENTICATION: “plain”

Я добавил последние два параметра в качестве последней меры, но это не помогло.

SMTP-сервер работает во всех инструментах тестирования, которые я использовал, например, openssl или swaks внутри контейнера Docker.


root@resources-app:/# swaks --to resources@xxx.net --server mail.xxx.net:587 -tls
=== Попытка подключения к mail.xxx.net:587...
=== Подключено к mail.xxx.net.
<-  220 mail.xxx.net ESMTP Postfix (Ubuntu)
 -> EHLO resources-app
<-  250-mail.xxx.net
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250-DSN
<-  250-SMTPUTF8
<-  250 CHUNKING
 -> STARTTLS
<-  220 2.0.0 Готово к запуску TLS
=== TLS запущен с шифром TLSv1.3:TLS_AES_256_GCM_SHA384:256
=== Локальный сертификат для TLS не установлен
=== DN узла TLS "/CN=*.xxx.net"
 ~> EHLO resources-app
<~  250-mail.xxx.net
<~  250-PIPELINING
<~  250-SIZE 10240000
<~  250-VRFY
<~  250-ETRN
<~  250-ENHANCEDSTATUSCODES
<~  250-8BITMIME
<~  250-DSN
<~  250-SMTPUTF8
<~  250 CHUNKING
 ~> MAIL FROM:<root@resources-app>
<~  250 2.1.0 Ok
 ~> RCPT TO:<resources@xxx.net>
<~  250 2.1.5 Ok
 ~> DATA
<~  354 Конец данных с <CR><LF>.<CR><LF>
 ~> Date: Tue, 03 Aug 2021 11:04:12 +0000
 ~> To: resources@xxx.net
 ~> From: root@resources-app
 ~> Subject: test Tue, 03 Aug 2021 11:04:12 +0000
 ~> Message-Id: <20210803110412.593268@resources-app>
 ~> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/
 ~>
 ~> Это тестовое письмо
 ~>
 ~>
 ~> .
<~  250 2.0.0 Ok: поставлено в очередь как 1C4ED8AA
 ~> QUIT
<~  221 2.0.0 Bye
=== Соединение с удаленным хостом закрыто.

Ошибка может означать, что в конфигурации postfix у вас отсутствует строка smtp_sasl_auth_enable = yes. Какой вывод даёт команда postconf -n? Содержит ли она указанную выше строку? Если нет, пожалуйста, раскомментируйте или отредактируйте файл /etc/postfix/main.cf и сообщите о результатах.

У меня настроено:
smtp_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous noplaintext
smtpd_tls_security_level = encrypt
smtpd_use_tls = yes

По-моему, эти два параметра противоречат друг другу. Чтобы всё работало, в Discourse нужно указать правильный метод аутентификации.

Всё логично, я не использую SASL, поэтому установил эти опции для повышения безопасности.
Какие методы доступны?
Также почему SASL является обязательным? Раньше я его отключал, и SMTP работал во всех остальных приложениях, таких как Nextcloud и Thunderbird.

SASL нужен только для отправки писем на удалённые серверы, но этот сервер работает только локально.

Спасибо.

Мое понимание может быть неверным, но, я думаю, SASL необходим, потому что контейнер Docker логически отделен от хоста, на котором запущен Postfix.

Может быть, стоит попробовать ослабить настройки защиты Postfix и посмотреть, что лучше всего подойдет для вас?

Этот файл должен дать вам представление о том, как работают эти настройки

discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub

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

Удаление параметров безопасности всё ещё не решает проблему.
Нужно ли мне выполнить пересборку приложения-загрузчика перед повторным запуском discourse-doctor?

Спасибо

Обратите внимание на d.

Discourse на самом деле должен требовать только параметры, начинающиеся с smtp, а не smtpd.

У меня есть только
smtp_sasl_auth_enable = yes

никаких других ограничений…