Я пытаюсь настроить mailman3
с помощью exim4
для запуска моих списков рассылки. Если я попытаюсь отправить электронное письмо в один из моих списков, оно будет доставлено в exim4
instance, который затем продолжает попытки доставить электронное письмо самому себе снова и снова, пока в конечном итоге не прервет процесс, поскольку обнаружит, что он находится в цикле. Ни при каких обстоятельствах он не пытается доставить письмо по адресу mailman-core
, насколько я могу судить по логам.
Я пытался все настроить в соответствии с документация для подключения MTA к почтальону.
Вся моя установка использует docker
, поэтому я использую почтальона образы докеров и документация. Внутренняя сеть работает нормально для всего, так что проблем с этим быть не должно. Единственное, о чем я могу думать, это то, что exim неправильно загружает конфигурацию, но я не знаю, как это проверить, кроме как посылать ему электронные письма и наблюдать, что происходит (и пока они просто застревают в почте петля).
Вот соответствующие разделы в моем docker-compose.yml
файл:
pg:
image: postgres:11-alpine
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
environment:
POSTGRES_DB: mailman
POSTGRES_USER: "${PG_USER}"
POSTGRES_PASSWORD: "${PG_PASS}"
mailman-core:
image: quay.io/maxking/mailman-core:0.2
volumes:
- mm-core-data:/opt/mailman
depends_on:
- pg
- exim
networks:
- backend
environment:
MTA: "exim"
MM_HOSTNAME: "mailman-core"
SMTP_HOST: "exim"
HYPERKITTY_API_KEY: "${HYPERKITTY_API_KEY}"
DATABASE_URL: "postgres://${PG_USER}:${PG_PASS}@pg:5432/mailman"
DATABASE_TYPE: "postgres"
DATABASE_CLASS: "mailman.database.postgresql.PostgreSQLDatabase"
mailman-web:
image: quay.io/maxking/mailman-web:0.2
volumes:
- mm-web-data:/opt/mailman-web-data
networks:
- backend
environment:
UWSGI_STATIC_MAP: /static=/opt/mailman-web-data/static
SERVE_FROM_DOMAIN: mailman.example.com
HYPERKITTY_API_KEY: "${HYPERKITTY_API_KEY}"
MAILMAN_ADMIN_USER: "${MAILMAN_ADMIN_USER}"
MAILMAN_ADMIN_EMAIL: "${MAILMAN_ADMIN_EMAIL}"
SECRET_KEY: "${MAILMAN_SECRET_KEY}"
DATABASE_URL: "postgres://${PG_USER}:${PG_PASS}@pg:5432/mailman"
SMTP_HOST: "exim"
exim:
build: ./exim
networks:
- backend
volumes:
# exim4 needs access to the mailman binaries apparently
# https://mailman.readthedocs.io/en/release-3.0/src/mailman/docs/MTA.html
- mm-core-data:/opt/mailman/core
ports:
- "25:25"
Вот exim Dockerfile
(на основе tianon/exim4
:
FROM tianon/exim4
COPY 25_mm3_macros /etc/exim4/conf.d/main/25_mm3_macros
COPY 455_mm3_router /etc/exim4/conf.d/router/455_mm3_router
COPY 55_mm3_transport /etc/exim4/conf.d/transport/55_mm3_transport
А вот файлы конфигурации exim (и я проверил их наличие):
25_mm3_macros
:
# Colon-separated list of domains served by mailman
domainlist mm3_domains=lists.example.com
# the LMTP host is the mailman instance running at mailman-core
# for the config of this, see mailman-core/mailman.cfg
MM3_LMTP_HOST=mailman-core
MM3_LMTP_PORT=8024
# exim needs access to mailman-core data, which we have mounted
# at /opt/mailman/core. This is configured in docker-compose.yml.
MM3_HOME=/opt/mailman/core/var
################################################################
# The configuration below is boilerplate:
# you should not need to change it.
# The path to the list receipt (used as the required file when
# matching list addresses)
MM3_LISTCHK=MM3_HOME/lists/${local_part}.${domain}
455_mm3_router
:
mailman3_router:
driver = accept
domains = +mm3_domains
require_files = MM3_LISTCHK
local_part_suffix_optional
local_part_suffix = -admin : \
-bounces : -bounces+* : \
-confirm : -confirm+* : \
-join : -leave : \
-owner : -request : \
-subscribe : -unsubscribe
transport = mailman3_transport
55_mm3_transport
:
mailman3_transport:
debug_print = "Email for mailman"
driver = smtp
protocol = lmtp
allow_localhost
hosts = MM3_LMTP_HOST
port = MM3_LMTP_PORT
rcpt_include_affixes = true