Привет! У меня возникла странная проблема: я настроил всё согласно руководству, и всё работает отлично! Однако что-то пошло не так с исходящей почтой, и я думал, что это не должно быть затронуто. Sidekiq выдаёт следующую ошибку для каждой попытки отправки письма (все они застряли в списке «Retries») после включения mail-receiver:
Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading
Мои поиски заставляют предположить, что это как-то связано с TLS. Я раскомментировал строки, связанные с TLS, в файле .yml, но повторное закомментирование не исправило проблему. Я попробовал инструкции из руководства по разрешению конфликтов Postfix, но, похоже, у меня нет Postfix? (Директория /etc/postfix из руководства отсутствует на моём экземпляре, и служба postfix не распознаётся.) И согласно результатам netstat, порт 25 использует только docker-proxy.
Мы используем Gmail в качестве исходящего SMTP-сервиса, и фактически мы использовали Gmail для входящей проверки POP3 до этого. Я удалил множество MX-записей, указывающих на Google, но в руководстве сказано было сделать именно это.
Вот мой файл mail-receiver.yml, разумеется, с определёнными данными, закрашенными:
## это шаблон контейнера для входящей почты
##
## После внесения изменений в этот файл вы ОБЯЗАТЕЛЬНО должны выполнить
## /var/discourse/launcher rebuild mail-receiver
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## посетите http://www.yamllint.com/, чтобы при необходимости проверить этот файл
base_image: discourse/mail-receiver:release
update_pups: false
expose:
- "25:25" # SMTP
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## Куда должна отправляться почта на ваш форум. В целом, вполне допустимо
## использовать здесь тот же домен, что и сам форум.
MAIL_DOMAIN: discourse.[mydomain].org
# раскомментируйте эти строки (и объём ниже!), чтобы включить поддержку TLS
POSTCONF_smtpd_tls_key_file: /letsencrypt/discourse.[mydomain].org/discourse.[mydomain].org.key
POSTCONF_smtpd_tls_cert_file: /letsencrypt/discourse.[mydomain].org/fullchain.cer
POSTCONF_smtpd_tls_security_level: may
## Базовый URL для этого экземпляра Discourse.
## Это будет URL вашего сайта Discourse. Например,
## https://discourse.example.com. Если вы используете настройку с подпапкой,
## обязательно учтите это (например, https://example.com/forum).
DISCOURSE_BASE_URL: 'https://discourse.[mydomain].org'
## Главный API-ключ вашего форума Discourse. Его можно получить
## на вкладке «API» в панели администратора.
DISCOURSE_API_KEY: [myapikey]
## Имя пользователя, используемое для обработки входящей почты. Если вы
## не переименовывали пользователя `system`, оставьте это значение без изменений.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# раскомментируйте для поддержки TLS
- volume:
host: /var/discourse/shared/standalone/letsencrypt
guest: /letsencrypt
Технологии работы с почтой немного выходят за рамки моих знаний, поэтому я буду благодарен за любой совет, даже если это просто указание на то, что я упустил что-то очевидное при настройке. Спасибо!