Назад | Перейти на главную страницу

exim4 не передает сообщения почтальону через LMTP

Я пытаюсь настроить 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