“Docker로 Mail server 구축 “
Docker의 Mail Server의 오픈 소스로 Mailcow, Cuttlefish, James, Haraka, Modoboa, postfix, Maddy, Dovecot, Portainer.io 등 다양합니다.
오픈 소스는 무료 또는 유료로 배포되어 각각 메일 서버의 장점을 통해 원하는 오픈 소스를 선택하여 설치할 수 있습니다.
그 중 Portainer.io로 Mail server를 구축해보겠습니다.
[개 요] 종 류 : 엔지니어링 난이도 : 내용요약 : Docker로 Mailserver 구축 테스트환경 : Ubuntu 22.04 서버 1대 관련직무 : 시스템&클라우드 엔지니어 |
Portainer.io의 특징
✅ Haraka, Dovecot 및 기타 오픈 소스 구성 요소와 같은 메일 서버 솔루션을 활용 가능합니다.
✅ 스팸 필터링 도구부터 바이러스 백신 엔진까지 다양합니다.
✅ 오픈 소스 메일 서버를 설정하고 쉽게 관리하며, 보안 유지하기에 용이한 메일 서버입니다.
🌟 여러 오픈 소스 메일 서버 구성 요소를 사용하여 관리 및 구축이 용이하며, 관리자 패널 인터페이스를 제공합니다.
Docker로 Mailserver 구축 – Portainer.io Mailserver
1️⃣ 도메인 설정
🔹 A 레코드, MX 레코드 설정이 되어 있어야 합니다.
🔹 서버 방화벽 설정 (메일서버에 필요한 포트를 개방해야 합니다.)
2️⃣ 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의 관리자 계정을 생성 및 설치하기 때문에 해당 계정 정보를 절대 잃어버리시면 안됩니다.
3️⃣ 이메일 서버 컨테이너 생성
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 클릭 -> 컨테이너 생성
4️⃣ 메일서버 관리자 화면으로 접속합니다.
🔹 http://domain:port -> 관리자로 사용할 아이디와 비밀번호를 생성한 후 접속합니다.
5️⃣ 이메일 일반 사용자를 생성합니다.
🔹 Email accounts 클릭 -> + Create a new email 클릭
👉🏻 Name : 일반 사용자 이름, Email : ‘ 일반 사용자 계정 ‘ @ ‘ domain ‘ , Password : 패스워드 -> Submit 클릭
6️⃣ 웹 메일로 접속합니다.
🔹 http://domain:port/webmail/ -> 일반 사용자 이메일 주소, 비밀번호 -> 로그인 클릭
Portainer.io Mailserver 메일 송신 수신 테스트
1️⃣ portainer.io 메일 계정에서 외부 메일 계정으로 송신 테스트
🔹 portainer.io 메일 계정에서 외부 메일로 메일 보내기
🔹 외부 메일 계정에서 메일함 확인
2️⃣ 외부 메일 계정에서 portainer.io 메일 계정으로 송신 테스트
🔹외부 메일 계정에서 portainer.io 메일 계정으로 메일 답변 전송
🔹 portainer.io 메일 계정에서 받은 메일함 확인
🌟 메일서버는 보안을 위해 https까지 적용하여 사용하는 것이 안전하니 꼭 인증서 적용하여 사용하시기 바랍니다. 🌟