Docker 메일 서버 구축
- Docker를 사용한 기본적인 메일 서버 환경 구축
- SMTP/IMAP3 - Docker Mailserver 프로젝트 사용
- Web GUI - Roundcube 프로젝트 사용
Prerequirements
- DNS 서버 설정
- test.example.com.
- A 10.1.0.10
- MX 10 mail.test.example.com
- mail.test.example.com.
- A 10.1.0.10
- test.example.com.
- 서버 시스템 설정
- Rocky Linux/EPEL
dnf install docker docker-compose -y
- Arch linux
pacman -Sy docker docker-compose
- Debian
apt install docker docker-compose -y
- Rocky Linux/EPEL
Docker Mailserver
Roundcube
통합 설정
-
Docker Mailserver의 compose와 Roundcube의 compose를 합쳐 하나의 Docker Compose로 실행 가능
services: # Roundcube roundcubemail: image: roundcube/roundcubemail:latest container_name: roundcubemail # restart: unless-stopped volumes: - ./www:/var/www/html - ./db/sqlite:/var/roundcube/db ports: - 9002:80 environment: - ROUNDCUBEMAIL_DB_TYPE=sqlite - ROUNDCUBEMAIL_SKIN=elastic - ROUNDCUBEMAIL_DEFAULT_HOST=tls://mail.test.example.com - ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.test.example.com # Docker Mailserver 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: mail.test.example.com 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
-
이후 설정은 개별 설정과 동일
Test
-
로그인
-
메인 화면
-
메일 전송
-
메일 수신 (example)
-
메일 수신 (cju)