Home SE Note

docker-mailserver 로 anti-spam mail server 구축

0

docker-mailserver 이용한 anti-spam mail server 구축에는 docker 기본 사용법을 알고 있다는 것과 Mail Server 구축 관련 경험이 있다는 것을 전제로 합니다. mail server 구축 경험이 없다면 동작 원리 이해가 어려울 수 있습니다.

  1. 준비
    • docker 최신 버전 설치 from Docker
    • docker-mail image download
      $ docker pull tvial/docker-mailserver:latest
      $ docker images
      REPOSITORY TAG IMAGE ID CREATED SIZE
      tvial/docker-mailserver latest a5e3b3adda08 3 days ago 511MB
  2. docker volume mapping 용 폴더 생성
    가상 docker 서버 내부의 메일 폴더와 Host 서버 상의 실제 폴더를 mapping 하기 위한 폴더를 생성한다.
    $ mkdir docker-mailserver
    $ cd docker-mailserver
    $ mkdir maildata mailstate config
  3. docker-compose.yml 작성
    version: '2'
    
    services:
      mail:
        image: tvial/docker-mailserver:latest
        hostname: mail
        domainname: boolsee.pe.kr           # 본인 소유 도메인 정보로 수정
        container_name: mail
        ports:
        - "25:25"
        - "143:143"
        - "587:587"
        - "993:993"
        volumes:
        - maildata:/var/mail
        - mailstate:/var/mail-state
        - ./config/:/tmp/docker-mailserver/
        environment:
        - ENABLE_SPAMASSASSIN=1
        - ENABLE_CLAMAV=1
        - ENABLE_FAIL2BAN=0
        - ENABLE_POSTGREY=1
        - ENABLE_POP3=1
        - ONE_DIR=1
        - DMS_DEBUG=1                       # 시험을 위해 Debug Mode On
    #    - OVERRIDE_HOSTNAME=mail.boolsee.pe.kr
        cap_add:
        - SYS_PTRACE
    
    volumes:
      maildata:
        driver: local
      mailstate:
        driver: local
    
  4. Mail 을 사용할 사용자 계정 생성
    $ touch config/postfix-accounts.cf
    $ docker run --rm \
    > -e MAIL_USER=muser01@boolsee.pe.kr \ 
    > -e MAIL_PASS=abcd1234 \
    > -ti tvial/docker-mailserver:latest \
    > /bin/sh -c 'echo "$MAIL_USER|$(doveadm pw -s SHA512-CRYPT -u $MAIL_USER -p $MAIL_PASS)"' >> config/postfix-accounts.cf

    이렇게 생성한 사용자 계정 파일의 내용은 다음과 같습니다. 비밀번호는 SHA512 방식으로 암호화해서 저장하고 있습니다.

    $ more postfix-accounts.cf
    muser01@boolsee.pe.kr|{SHA512-CRYPT}$6$GrbPTDXI50yN7zFZ$EEtCrwgWbvczTmo4wg6.fKdeJRjR2S/6rC2iu38rtv3m0divBTCpqjFjPfCLPJ1y6BfGvmT62Vt0G6mwO.jSy1
  5. DKIM Key 생성
    $ docker run --rm \
      -v "$(pwd)/config":/tmp/docker-mailserver \
      -ti tvial/docker-mailserver:latest generate-dkim-config

    ${INSTALLDIR}/config/opendkim 폴더의 하위 폴더에 DKIM Key 파일이 생성됩니다.

  6. docker container 를 실행합니다.
    $ docker-compose up -d mail
    $ docker ps
    CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                                                                                                       NAMES
    bf860eadf6c5        tvial/docker-mailserver:latest   "/bin/sh -c 'supervi…"   25 minutes ago      Up 25 minutes       0.0.0.0:25->25/tcp, 110/tcp, 0.0.0.0:143->143/tcp, 0.0.0.0:587->587/tcp, 465/tcp, 995/tcp, 0.0.0.0:993->993/tcp, 4190/tcp   mail
    
    

     

Exit mobile version