Что ж, для начала: это рабочая среда, и я не могу отправить первое письмо с подтверждением регистрации.
Я уверен, что мои настройки SMTP верны.
Я могу выполнить ping и telnet на мой почтовый сервер через используемый порт, но как только я отправляю команду «EHLO mailserver», соединение закрывается удалённым хостом.
Я попытался убедиться, что мои настройки SMTP верны, поэтому запустил /var/discourse/discourse-doctor, но он не может проверить мои настройки. Он выводит:
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
Однако мой YAML-файл (./containers/app.yml) выглядит абсолютно корректным:
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
DISCOURSE_SMTP_ADDRESS: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar, я скрыл реальный почтовый сервер, чтобы не раскрывать его на публичном форуме. Но я могу гарантировать, что настройки верны, так как я скопировал их из своего почтового клиента (работающего) и также сравнил их с настройками SMTP моего реального почтового сервера.
Спасибо за предложение помочь. Я думаю, что проблема в записях SPF/DKIM, поэтому я пытаюсь исправить их.
Тем не менее, discourse-doctor всё ещё должен корректно её парсить. Не совсем понятно, что происходит, так как я сам не редактировал этот файл в vim/nano. Для ясности: YAML был сгенерирован с помощью discourse-setup.
И я думаю, что Discourse сейчас не поддерживает протокол на порту 465. Если ваш почтовый сервер поддерживает порт 587, вы можете изменить его на 587. К сожалению, мой почтовый сервер не может использовать порт 587, поэтому я добавил почтовый прокси вне Discourse.
@irwinstar, если это верно, то это крайне важная информация, которая могла бы объяснить, почему не работает моя настройка электронной почты. У вас есть источник этой информации?
Я не уверен в этом, но я пробовал порт 465 несколько раз. В конце концов я использовал Docker-образ «hieulq/mailproxy» в качестве почтового прокси. Для Discourse я применил следующие настройки в app.yml:
Я пытаюсь избежать покупки облачных почтовых серверов или использования прокси (потому что, если бы я хотел грязное решение, я бы просто взломал учётную запись администратора), когда у меня уже есть почтовый сервер на HostGator.
Я уверен, что SPF-записи настроены для IP-адреса моего сервера Discourse. Сейчас я просто пытаюсь проверить DKIM-записи.
Если кто-то сможет подтвердить, что порт 465 не разрешён, это будет отличной новостью, так как это остановит меня от углубления в кроличью нору проблемы, которой на самом деле нет. Порт 465 был проблемой, об этом указано в сообщении ниже.
Я добился некоторого прогресса в настройке установки.
Используя порт 587, я успешно выполнил telnet-подключение для отправки полного письма и прошел аутентификацию без проблем. Поэтому я переключился на него.
Теперь при отправке письма я получаю следующую ошибку:
Delivered mail d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251.0ms)
Job exception: hostname "mail.redacted.com" does not match the server certificate
Однако я заметил, что это больше не тайм-аут соединения (который срабатывал после полных 60 секунд), а другое исключение, возникающее за 250 мс.
Именно это было причиной. Решение заключалось в изменении настройки SSL-согласования, что подсказало мне отключить этот параметр в файле app.yml: DISCOURSE_SMTP_ENABLE_START_TLS: false # (опционально, по умолчанию true)
Это отключит шифрование TLS, в то время как «единственная» проблема заключается в том, что вы используете неверное имя хоста: сервер почты представляет сертификат, в котором указано что-то другое, а не mail.redacted.com. Многие почтовые серверы часто известны под несколькими разными именами хостов; вам нужно лишь выяснить, какое из них используется в их сертификате.
Вы можете попытаться узнать, какое имя хоста он заявляет, и соответственно настроить вашу конфигурацию.