services:
  mailserver:
    image: mailserver/docker-mailserver:latest
    container_name: mailserver
    # Provide the FQDN of your mail server here (Your DNS MX record should point to this value)
    hostname: mail.example.com
    # More information about the mail-server ports:
    # https://docker-mailserver.github.io/docker-mailserver/latest/config/security/understanding-the-ports/
    ports:
      - "25:25"    # SMTP  (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465/587 instead)
      - "143:143"  # IMAP4 (explicit TLS => STARTTLS)
      - "465:465"  # ESMTP (implicit TLS)
      - "587:587"  # ESMTP (explicit TLS => STARTTLS)
      - "993:993"  # IMAP4 (implicit TLS)
      - "110:110"  # POP3
      - "995:995"  # POP3  (with TLS)
    volumes:
      - /etc/localtime:/etc/localtime:ro
      # - ./mail-server/mail-data/:/var/mail/
      # - ./mail-server/mail-state/:/var/mail-state/
      # - ./mail-server/mail-logs/:/var/log/mail/
      - ./mail-server/config/:/tmp/docker-mailserver/
      - ./mail-server/config/dovecot/10-auth.conf:/etc/dovecot/conf.d/10-auth.conf
      - ./mail-server/config/dovecot/10-ssl.conf:/etc/dovecot/conf.d/10-ssl.conf
      - ./tls:/tmp/dms/tls:ro
    environment:
      - ENABLE_POP3=1
      - ENABLE_SASLAUTHD=1
      - SASLAUTHD_MECHANISMS=rimap
      - SASLAUTHD_MECH_OPTIONS=127.0.0.1
      - SSL_TYPE=manual
      - SSL_CERT_PATH=/tmp/dms/tls/cert
      - SSL_KEY_PATH=/tmp/dms/tls/key
    restart: always
    stop_grace_period: 1m
    healthcheck:
      test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
      timeout: 3s
      retries: 0
  netserver:
    build: .
    container_name: netserver
    network_mode: "host"
    volumes:
      - ./tls:/etc/tls:ro