테스트 용도로 SMTP서버를 구축해야 하는 경우가 있다.
docker를 이용하여 간단하게 SMTP 서버를 구축하고 이용하는 방법이다.
SMTP 서버: https://github.com/docker-mailserver/docker-mailserver
Webmail 서버: https://www.rainloop.net/
위 두개를 이용하여 서버를 구축한다. docker-mailserver 깃을 가져온 다음 docker-compose.yml에 rainloop 내용만 추가하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
version: '3.8'
services:
rainloop:
container_name: rainloop
image: hardware/rainloop:latest
ports:
- "8020:8888"
volumes:
- ./data:/rainloop/data
mailserver:
image: docker.io/mailserver/docker-mailserver:latest
hostname: mailserver
domainname: nopsecurity.org
container_name: mailserver
env_file: mailserver.env
# To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
# More information about the mailserver ports:
# https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/
ports:
- "25:25" # SMTP (explicit TLS => STARTTLS)
- "143:143" # IMAP4 (explicit TLS => STARTTLS)
- "465:465" # ESMTP (implicit TLS)
- "587:587" # ESMTP (explicit TLS => STARTTLS)
- "993:993" # IMAP4 (implicit TLS)
volumes:
- maildata:/var/mail
- mailstate:/var/mail-state
- maillogs:/var/log/mail
- /etc/localtime:/etc/localtime:ro
- ./config/:/tmp/docker-mailserver/${SELINUX_LABEL}
restart: always
stop_grace_period: 1m
cap_add: [ "NET_ADMIN", "SYS_PTRACE" ]
volumes:
maildata:
mailstate:
maillogs:
|
cs |
이후 docker-compose up을 통해 서버를 올려준다.
Rainloop 서버 설정
rainloop은 단지 메일 정보를 표출하는 웹 페이지이므로, SMTP 서버와 연결을 시켜야 한다.
이제 webmail인 rainloop와 SMTP서버인 docker-mailserver를 연결해야 한다. /?admin으로 접근하여 로그인(admin/12345)하고 아래와 같이 설정한다.
[ Domains > Add Domain ]
1. 도메인 이름 입력 (nopsecurity.org)
2. IMAP, SMTP 서버 입력 (mailserver). 여기서 서버 주소는 dokcer-compose.yml에서 docker-mailserver에 부여한 이름이여야 함.
3. Test 클릭. 성공하였을 경우, IMAP, SMTP 문자가 초록색으로 변함
[ Domains > Add Domain > Whitelist ]
1. 로그인 허용할 계정 이름 추가. 여기에 등록하지 않으면 로그인이 불가함,
SMTP 서버 설정
SMTP의 계정 추가는 rainloop에서 따로 지원하지 않으므로 docker-mailserver에서 추가하여야 한다.
[ setup.sh 메일 계정 추가 ]
docker-mailserver 깃에 있는 setup.sh를 이용하여 계정을 추가하고 관리할 수 있다. 이제 이 계정을 통해 rainloop 로그인이 가능하다.
[ admin@nopsecurity.org 로그인 확인 ]
위 메일 서버를 통해 구글, 네이버 등으로 메일 발송은 가능하지만 수신을 위해서는 추가 설정이 필요하다.