“Docker로 Mail server 구축 “
Docker의 Mail Server의 오픈 소스로 Mailcow, Cuttlefish, James, Haraka, Modoboa, postfix, Maddy, Dovecot, Portainer.io 등 다양합니다.
오픈 소스는 무료 또는 유료로 배포되어 각각 메일 서버의 장점을 통해 원하는 오픈 소스를 선택하여 설치할 수 있습니다.
그 중 Portainer.io로 Mail server를 구축해보겠습니다.
[개 요]
|
Portainer.io의 특징
Haraka, Dovecot 및 기타 오픈 소스 구성 요소와 같은 메일 서버 솔루션을 활용 가능합니다.
스팸 필터링 도구부터 바이러스 백신 엔진까지 다양합니다.
오픈 소스 메일 서버를 설정하고 쉽게 관리하며, 보안 유지하기에 용이한 메일 서버입니다.
여러 오픈 소스 메일 서버 구성 요소를 사용하여 관리 및 구축이 용이하며, 관리자 패널 인터페이스를 제공합니다.
Docker로 Mailserver 구축 – Portainer.io Mailserver
도메인 설정
A 레코드, MX 레코드 설정이 되어 있어야 합니다.
서버 방화벽 설정 (메일서버에 필요한 포트를 개방해야 합니다.)
Docker Portainer 설치
서버에 Docker-compose 가 설치되어 있어야 하며, 기본적으로 NPM 설치가 완료되어 있어야 합니다.
(주로 Docker로 사용되는 메일 오픈소스는 nginx를 기본으로 연동해서 사용한다고 합니다.)
NPM 부분이 생략된 docker yml 파일 입니다.
저와 동일하게 설치를 원하실 경우 서버에 env_file인 mailserver.env파일이 있거나 yml 파일에 mailserver 생성시 필요한 저장소 옵션에 대해 추가로 기재 해주어야 합니다.
1) Portainer에 대한 docker-compose.yml 생성
docker-compose.yml
2) yml 파일 실행
실행중인 도커 프로세스(docker compose ps) 및 실행중인 포트(netstat -ntlp) 확인
3) 웹 브라우저로 접속
http://domin:port or http://ServerIP:port
웹 브라우저에 접속하면 Docker 관리 툴 portainer.io의 관리자 계정을 생성 및 설치하기 때문에 해당 계정 정보를 절대 잃어버리시면 안됩니다.
이메일 서버 컨테이너 생성
1) 서버에서 메일 데이터를 저장할 디렉토리를 생성합니다.
$ sudo mkdir mail-data
2) docker portainer 사이트에 관리자 계정으로 접속합니다.
http://domin:port or http://ServerIP:port -> 관리자 계정 로그인
Portainer 메뉴에서 Environments를 보면 Disconnect 상태에서 local로 연결, local 목록에서 Containers 클릭 -> + Add container 클릭
3) Container의 name과 Image를 지정, 사용 포트 맵핑
Name : Container의 이름을 지정
Image : anglogic/poste,io
Manual network port publishing -> + publish a new network port 클릭 ( 입력할 개수만큼 클릭하여 포트를 맵핑 합니다. )
4) Advanced Container settings
(1) volumes
Volumes 클릭 -> Volume mapping -> + map additional volume 클릭 -> container : /data – Bind 클릭
host : 서버 내에서 설정했던 메일 데이터 저장할 디렉토리 경로 지정
(2) Network
Network : host 선택
Hostname : mail.domain
(3) Env
Environment Variables -> + add environment variable 클릭
name : TZ value : Asia/Seoul
name : HTTP_PORT value : 8181 ( 사용자가 설정한 http의 임의의 포트 )
name : HTTPS_PORT value : 4433 ( 사용자가 설정한 https의 임의의 포트 ) 저는 https 설정을 따로 하지 않아서 추가하지 않았습니다.
(4) Restart Policy
Restart policy – Always 클릭
5) Deploy the container 클릭 -> 컨테이너 생성
메일서버 관리자 화면으로 접속합니다.
http://domain:port -> 관리자로 사용할 아이디와 비밀번호를 생성한 후 접속합니다.
이메일 일반 사용자를 생성합니다.
Email accounts 클릭 -> + Create a new email 클릭
Name : 일반 사용자 이름, Email : ‘ 일반 사용자 계정 ‘ @ ‘ domain ‘ , Password : 패스워드 -> Submit 클릭
웹 메일로 접속합니다.
http://domain:port/webmail/ -> 일반 사용자 이메일 주소, 비밀번호 -> 로그인 클릭
Portainer.io Mailserver 메일 송신 수신 테스트
portainer.io 메일 계정에서 외부 메일 계정으로 송신 테스트
portainer.io 메일 계정에서 외부 메일로 메일 보내기
외부 메일 계정에서 메일함 확인
외부 메일 계정에서 portainer.io 메일 계정으로 송신 테스트
외부 메일 계정에서 portainer.io 메일 계정으로 메일 답변 전송
portainer.io 메일 계정에서 받은 메일함 확인
메일서버는 보안을 위해 https까지 적용하여 사용하는 것이 안전하니 꼭 인증서 적용하여 사용하시기 바랍니다.