Skip to content

Docker Mailserver

Basic Info

  • Docker를 사용하여 메일 서버를 쉽고 간단히 구현할 수 있는 프로젝트
  • 기본적으로 Postfix와 Dovecot 사용, Rspamd를 비롯한 많은 필터와 OpenDKIM과 같은 보안 기능 제공

Compose

  • Docker compose 파일과 env 파일 다운로드

    $ curl https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master/compose.yaml -o compose.yaml
    $ curl https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master/mailserver.env -o mailserver.env 
    
  • compose.yaml 설정 // 2024.12.10

    # original: https://github.com/docker-mailserver/docker-mailserver/blob/master/compose.yaml
    services:
      mailserver:
        image: ghcr.io/docker-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을 알맞게 수정
        # hostname: mail.example.com
        hostname: mail.test.example.com 
        env_file: mailserver.env
        # 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)
        volumes:
          - ./docker-data/dms/mail-data/:/var/mail/
          - ./docker-data/dms/mail-state/:/var/mail-state/
          - ./docker-data/dms/mail-logs/:/var/log/mail/
          - ./docker-data/dms/config/:/tmp/docker-mailserver/
          - /etc/localtime:/etc/localtime:ro
        restart: always
        stop_grace_period: 1m
        # Uncomment if using `ENABLE_FAIL2BAN=1`:
        # cap_add:
        #   - NET_ADMIN
        healthcheck:
          test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
          timeout: 3s
          retries: 0
    
  • Compose

    $ docker compose up --detach
    $ docker exec -it mailserver /bin/bash
    root@mail:/$
    

Configuration

  • 기본 설정

    # 이메일 추가
    $ setup email example@test.example.com {password}
    # Alias 추가
    $ setup alias postmaster@test.example.com example@test.example.com