Table of Contents
Postfix 설치 – Dovecot POP3/IMAP 서비스 구축
기존 Postfix + Rspamd + Let’s Encrypt 환경에서 Dovecot을 이용해 POP3/IMAP 서비스를 추가하는 방법을 설명합니다.
환경 정보
- 운영체제: Ubuntu Server
- 기존 구성: Postfix + Rspamd + Let’s Encrypt SSL
- 추가 구성: Dovecot (POP3/IMAP)
- 도메인: example.com
- 메일 서버: mail.example.com
1. Dovecot 설치
sudo apt update
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d
2. Dovecot 기본 설정
2.1 메인 설정 파일 수정
/etc/dovecot/dovecot.conf
파일을 편집합니다:
sudo vi /etc/dovecot/dovecot.conf
다음 내용을 추가하거나 수정합니다:
# 활성화할 프로토콜
protocols = imap pop3
# 메일 저장 위치 (Maildir 형식)
mail_location = maildir:~/Maildir
# 인증 관련 설정
disable_plaintext_auth = yes
auth_mechanisms = plain login
# SSL/TLS 설정
ssl = required
ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem
# 최신 TLS 프로토콜만 사용
ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384
ssl_prefer_server_ciphers = yes
# DH 파라미터 (보안 강화)
ssl_dh = </etc/dovecot/dh.pem
2.2 SSL 인증서 권한 설정
Dovecot이 Let’s Encrypt 인증서에 접근할 수 있도록 권한을 설정합니다:
sudo usermod -a -G ssl-cert dovecot
sudo chmod 640 /etc/letsencrypt/live/example.com/privkey.pem
sudo chgrp ssl-cert /etc/letsencrypt/live/example.com/privkey.pem
2.3 DH 파라미터 생성
보안을 위해 DH 파라미터를 생성합니다:
sudo openssl dhparam -out /etc/dovecot/dh.pem 2048
sudo chmod 600 /etc/dovecot/dh.pem
3. 인증 설정
3.1 인증 설정 파일 수정
/etc/dovecot/conf.d/10-auth.conf
파일을 편집합니다:
sudo vi /etc/dovecot/conf.d/10-auth.conf
다음 설정을 확인하고 수정합니다:
# 평문 인증 비활성화 (SSL/TLS에서만 허용)
disable_plaintext_auth = yes
# 인증 메커니즘
auth_mechanisms = plain login
# 시스템 사용자 인증 활성화
!include auth-system.conf.ext
3.2 시스템 사용자 인증 설정
/etc/dovecot/conf.d/auth-system.conf.ext
파일을 확인합니다:
sudo vi /etc/dovecot/conf.d/auth-system.conf.ext
기본 설정이 올바른지 확인합니다:
passdb {
driver = pam
}
userdb {
driver = passwd
}
4. 메일박스 설정
4.1 메일박스 위치 설정
/etc/dovecot/conf.d/10-mail.conf
파일을 편집합니다:
sudo vi /etc/dovecot/conf.d/10-mail.conf
다음 설정을 추가하거나 수정합니다:
# Maildir 형식 사용
mail_location = maildir:~/Maildir
# 메일박스 자동 생성
mail_home = /home/%u
# mail_uid = 1000
# mail_gid = 1000
# 네임스페이스 설정
namespace inbox {
type = private
separator = /
prefix =
inbox = yes
mailbox Drafts {
special_use = \Drafts
auto = subscribe
}
mailbox Junk {
special_use = \Junk
auto = subscribe
}
mailbox Sent {
special_use = \Sent
auto = subscribe
}
mailbox Trash {
special_use = \Trash
auto = subscribe
}
}
5. POP3/IMAP 프로토콜 설정
5.1 IMAP 설정
/etc/dovecot/conf.d/20-imap.conf
파일을 편집합니다:
sudo vi /etc/dovecot/conf.d/20-imap.conf
protocol imap {
# IMAP 클라이언트 최대 연결 수
mail_max_userip_connections = 10
# IDLE 명령 지원 (실시간 푸시)
# imap_idle = yes
# IMAP 플러그인
mail_plugins = $mail_plugins imap_quota
}
5.2 POP3 설정
/etc/dovecot/conf.d/20-pop3.conf
파일을 편집합니다:
sudo vi /etc/dovecot/conf.d/20-pop3.conf
protocol pop3 {
# POP3 사용자당 최대 연결 수
mail_max_userip_connections = 3
# 메일 삭제 후에도 서버에 보관 (선택사항)
# pop3_uidl_format = %08Xu%08Xv
# POP3 플러그인
mail_plugins = $mail_plugins
}
5.3 Postfix 서버 추가 설정
sudo vi /etc/postfix/main.cf
......
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
defer_unauth_destination
......
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
......
sudo vi /etc/dovecot/conf.d/10-master.conf
......
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
......
이메일 발송 PC 의 아이피를 제한할 수 없으면 모든 아이피를 허용해야 합니다.
sudo vi /etc/opendkim/TrustedHosts
......
0.0.0.0/0
sudo systemctl restart opendkim
sudo systemctl restart dovecot
sudo systemctl restart postfix
sudo systemctl status postfix
6. 방화벽 설정
메일 서비스 포트를 방화벽에서 허용합니다:
# IMAP
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
# POP3
sudo ufw allow 110/tcp
sudo ufw allow 995/tcp
# 방화벽 규칙 확인
sudo ufw status
7. 서비스 시작 및 확인
7.1 서비스 재시작
sudo systemctl restart dovecot
sudo systemctl restart postfix
sudo systemctl enable dovecot
7.2 서비스 상태 확인
sudo systemctl status dovecot
sudo systemctl status postfix
7.3 포트 리스닝 확인
sudo netstat -tlnp | grep -E ":(110|143|993|995)"
8. 테스트
8.1 로컬 연결 테스트
# IMAP 테스트
telnet localhost 143
# POP3 테스트
telnet localhost 110
8.2 SSL/TLS 연결 테스트
# IMAPS 테스트
openssl s_client -connect example.com:993 -servername example.com
# POP3S 테스트
openssl s_client -connect example.com:995 -servername example.com
8.3 이메일 발송테스트
--auth-user user@example.com \
부분은 --auth-user user \
인 경우도 있습니다.
sudo apt update
sudo apt install swaks
# SMTP(587/STARTTLS) 인증 테스트
swaks --to recipient@example.com \
--from user@example.com \
--server mail.example.com \
--port 587 \
--auth LOGIN \
--auth-user user@example.com \
--auth-password '패스워드' \
--tls \
--header "Subject: 테스트 메일" \
--body "이것은 테스트 메일입니다."
# SMTPS(465/SSL) 테스트
swaks --to recipient@example.com \
--from user@example.com \
--server mail.example.com \
--port 465 \
--auth LOGIN \
--auth-user user@example.com \
--auth-password '패스워드' \
--tls-on-connect \
--header "Subject: SMTPS 테스트" \
--body "SMTPS(465) 포트 테스트입니다."
9. 로그 확인
문제 발생 시 로그를 확인합니다:
# Dovecot 로그
sudo journalctl -u dovecot -f
# 메일 로그
sudo tail -f /var/log/mail.log
10. 클라이언트 설정 정보
이메일 클라이언트에서 사용할 설정 정보:
IMAP 설정
- 서버: example.com
- 포트: 993 (IMAPS) 또는 143 (STARTTLS)
- 보안: SSL/TLS 또는 STARTTLS
- 인증: 일반 비밀번호
POP3 설정
- 서버: example.com
- 포트: 995 (POP3S) 또는 110 (STARTTLS)
- 보안: SSL/TLS 또는 STARTTLS
- 인증: 일반 비밀번호
SMTP 설정
- 서버: example.com
- 포트: 587 (STARTTLS) 또는 465 (SMTPS)
- 보안: STARTTLS 또는 SSL/TLS
- 인증: 필요