카테고리 없음

SMTP서버 구축

nopdata 2021. 5. 19. 22:00

테스트 용도로 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 서버와 연결을 시켜야 한다.

image-1620622235962.png

 

이제 webmail인 rainloop와 SMTP서버인 docker-mailserver를 연결해야 한다. /?admin으로 접근하여 로그인(admin/12345)하고 아래와 같이 설정한다.

image-1620622382293.png

[ Domains > Add Domain ]

1. 도메인 이름 입력 (nopsecurity.org)
2. IMAP, SMTP 서버 입력 (mailserver). 여기서 서버 주소는 dokcer-compose.yml에서 docker-mailserver에 부여한 이름이여야 함.
3. Test 클릭. 성공하였을 경우, IMAP, SMTP 문자가 초록색으로 변함

 

image-1620622485467.png

[ Domains > Add Domain > Whitelist ]

1. 로그인 허용할 계정 이름 추가. 여기에 등록하지 않으면 로그인이 불가함,

 

SMTP 서버 설정

SMTP의 계정 추가는 rainloop에서 따로 지원하지 않으므로 docker-mailserver에서 추가하여야 한다.

image-1620622725919.png

[ setup.sh 메일 계정 추가 ]

docker-mailserver 깃에 있는 setup.sh를 이용하여 계정을 추가하고 관리할 수 있다. 이제 이 계정을 통해 rainloop 로그인이 가능하다.

 

image-1620622812075.png

[ admin@nopsecurity.org 로그인 확인 ]

위 메일 서버를 통해 구글, 네이버 등으로 메일 발송은 가능하지만 수신을 위해서는 추가 설정이 필요하다.