메일 서버 프로덕션 레벨 체크리스트
1. 기본 구성 확인
서버 설정
- 호스트명이 FQDN으로 올바르게 설정됨 (
hostname -f
) - 시스템 시간이 정확하고 NTP로 동기화됨 (
timedatectl status
) - 모든 필수 서비스가 실행 중 (
systemctl status postfix dovecot rspamd redis-server apache2
) - 필수 포트 개방 확인 (
netstat -tulpn | grep -E ":(25|465|587|993|80|443)"
)
DNS 레코드
- MX 레코드가 올바르게 설정됨 (
dig MX example.com
) - A/AAAA 레코드가 메일 서버를 가리킴 (
dig A mail.example.com
) - PTR(역방향 DNS) 레코드가 메일 서버 IP에 대해 설정됨 (
dig -x 서버IP
) - SPF 레코드가 올바르게 설정됨 (
dig TXT example.com
) - DKIM 레코드가 올바르게 설정됨 (
dig TXT [selector]._domainkey.example.com
) - DMARC 레코드가 올바르게 설정됨 (
dig TXT _dmarc.example.com
)
2. SMTP 구성 확인 (Postfix)
기본 설정
- SMTP 바인딩 주소 및 포트 확인 (
postconf -n | grep inet_interfaces
) - 허용된 네트워크 확인 (
postconf -n | grep mynetworks
) - 릴레이 도메인 설정 확인 (
postconf -n | grep relay
) - 메일박스 유형 및 위치 확인 (
postconf -n | grep virtual_mailbox
)
보안 설정
- SMTP 인증 활성화됨 (
postconf -n | grep smtpd_sasl_auth
) - TLS 암호화 활성화됨 (
postconf -n | grep tls
) - 최소 TLS 프로토콜 버전 확인 (TLSv1.2 이상) (
postconf -n | grep tls_protocols
) - 안전한 암호화 스위트 사용 (
postconf -n | grep tls_ciphers
) - SMTP 클라이언트 제한 설정 확인 (
postconf -n | grep smtpd_client_restrictions
) - SMTP 발신자 제한 설정 확인 (
postconf -n | grep smtpd_sender_restrictions
) - SMTP 수신자 제한 설정 확인 (
postconf -n | grep smtpd_recipient_restrictions
) - 속도 제한 설정 확인 (
postconf -n | grep rate_limit
)
실제 연결 테스트
- 표준 SMTP 연결 테스트 (
telnet mail.example.com 25
) - 제출 포트(Submission) 연결 테스트 (
openssl s_client -connect mail.example.com:587 -starttls smtp
) - SMTPS 연결 테스트 (
openssl s_client -connect mail.example.com:465
) - 인증 없이 릴레이 거부 테스트 (
swaks --to external@gmail.com --server mail.example.com
) - 인증 후 릴레이 허용 테스트 (
swaks --to external@gmail.com --server mail.example.com --auth --auth-user=user@example.com --auth-password=password
)
3. IMAP 구성 확인 (Dovecot)
기본 설정
- IMAP 바인딩 주소 및 포트 확인 (
doveconf -n | grep 'imap.*listen'
) - 메일박스 형식 및 위치 확인 (
doveconf -n | grep mail_location
) - 인증 메커니즘 확인 (
doveconf -n | grep auth_mechanisms
)
보안 설정
- TLS 암호화 활성화됨 (
doveconf -n | grep ssl
) - 최소 TLS 프로토콜 버전 확인 (TLSv1.2 이상) (
doveconf -n | grep ssl_min_protocol
) - 안전한 암호화 스위트 사용 (
doveconf -n | grep ssl_cipher_list
) - 평문 인증 비활성화 확인 (SSL/TLS 필수) (
doveconf -n | grep disable_plaintext_auth
) - 권한 설정 확인 (uid/gid) (
doveconf -n | grep -E 'mail_uid|mail_gid'
)
실제 연결 테스트
- IMAPS 연결 테스트 (
openssl s_client -connect mail.example.com:993
) - 인증 테스트 (
curl -v 'imaps://mail.example.com' --user 'user@example.com:password'
)
4. 스팸 필터링 확인 (Rspamd)
기본 설정
- Rspamd 서비스 실행 중 (
systemctl status rspamd
) - Rspamd-Postfix 연결 설정 확인 (
postconf -n | grep milter
) - Redis 설정 확인 (
cat /etc/rspamd/local.d/redis.conf
) - 로깅 설정 확인 (
cat /etc/rspamd/local.d/logging.inc
)
모듈 확인
- DKIM 서명 모듈 활성화 및 설정 확인 (
cat /etc/rspamd/local.d/dkim_signing.conf
) - SPF 확인 모듈 활성화 및 설정 확인 (
cat /etc/rspamd/local.d/spf.conf
) - DMARC 확인 모듈 활성화 및 설정 확인 (
cat /etc/rspamd/local.d/dmarc.conf
) - 안티바이러스 모듈 활성화 및 설정 확인 (
cat /etc/rspamd/local.d/antivirus.conf
) - 그레이리스팅 설정 확인 (
cat /etc/rspamd/local.d/greylist.conf
)
기능 테스트
- DKIM 서명 테스트 (테스트 메일 발송 후 헤더 확인)
- 스팸 메일 필터링 테스트 (GTUBE 테스트 패턴 사용)
- Rspamd 웹 인터페이스 접속 테스트 (
https://mail.example.com/rspamd
) - Rspamd 통계 확인 (
rspamdadm stat
)
5. 웹메일 구성 확인 (Roundcube)
기본 설정
- 웹서버 실행 중 (
systemctl status apache2/nginx
) - Roundcube 웹 접속 가능 (
https://mail.example.com/
) - 데이터베이스 연결 확인 (
cat /var/www/roundcube/config/config.inc.php | grep db_dsnw
) - IMAP/SMTP 설정 확인 (
cat /var/www/roundcube/config/config.inc.php | grep -E 'default_host|smtp_server'
)
보안 설정
- HTTPS 활성화 및 리다이렉트 설정
- 최소 TLS 버전 확인 (TLSv1.2 이상)
- 안전한 암호화 스위트 사용
- HTTP 보안 헤더 설정 (X-XSS-Protection, X-Content-Type-Options, Content-Security-Policy)
- PHP 보안 설정 확인 (
php -i | grep -E 'expose_php|display_errors|allow_url_fopen'
)
기능 테스트
- 로그인 테스트
- 메일 전송 테스트
- 메일 수신 테스트
- 첨부 파일 처리 테스트
6. TLS/SSL 보안 확인
인증서 설정
- 유효한 SSL 인증서 설치됨 (
certbot certificates
) - 인증서 만료일 확인 (최소 30일 이상 남음)
- 인증서 체인 완전성 확인 (
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /etc/letsencrypt/live/mail.example.com/fullchain.pem
) - 키 길이 확인 (RSA: 2048비트 이상, ECC: 256비트 이상) (
openssl x509 -in /etc/letsencrypt/live/mail.example.com/cert.pem -text | grep "Public-Key"
)
TLS 구성 강도
- SMTP TLS 구성 강도 테스트 (
testssl.sh --starttls smtp mail.example.com:25
) - IMAP TLS 구성 강도 테스트 (
testssl.sh mail.example.com:993
) - 웹 TLS 구성 강도 테스트 (
testssl.sh mail.example.com:443
) - 취약한 프로토콜 비활성화 (SSLv2/v3, TLSv1.0/1.1)
- 취약한 암호화 스위트 비활성화 (RC4, DES, 3DES, MD5, SHA1)
- Perfect Forward Secrecy 지원
7. 인증 및 접근 제어
사용자 인증
- 안전한 비밀번호 정책 적용
- 평문 비밀번호 저장 없음 (해시 사용)
- 인증 실패 제한 설정 (Fail2ban)
- IP 기반 접근 제한 설정 확인
권한 설정
- 파일 및 디렉토리 권한 확인 (
find /etc/postfix /etc/dovecot /var/mail -type f -perm /o=w
) - 설정 파일 소유권 확인 (
ls -la /etc/postfix/ /etc/dovecot/
) - 메일박스 디렉토리 권한 확인 (
ls -la /var/mail/vhosts/
) - 로그 파일 권한 확인 (
ls -la /var/log/mail*
)
8. 네트워크 보안
방화벽 설정
- 필수 포트만 개방되어 있음 (
ufw status
또는iptables -L
) - 미사용 서비스 포트 차단됨
- 관리 인터페이스(SSH 등)에 접근 제한 설정
네트워크 프로토콜
- IPv4 및 IPv6 설정 확인
- 불필요한 프로토콜 비활성화
- TCP 래퍼 설정 확인 (
cat /etc/hosts.allow /etc/hosts.deny
)
9. 이메일 표준 준수 및 평판 확인
이메일 표준
- RFC 5321/5322 준수 (기본 SMTP 프로토콜)
- RFC 7208 준수 (SPF)
- RFC 6376 준수 (DKIM)
- RFC 7489 준수 (DMARC)
외부 테스트 및 평판
- Mail-tester.com 검사 결과 (최소 9/10 점수)
- Mxtoolbox.com 검사 결과 (경고 및 오류 없음)
- DKIM 검증기 테스트 (https://dkimvalidator.com/)
- 스팸하우스 등 블랙리스트 등록 여부 확인 (
dig +short example.com.dnsbl.sorbs.net
) - 주요 메일 제공자(Gmail, Outlook 등)로 테스트 메일 전송 및 헤더 분석
10. 성능 및 모니터링
시스템 리소스
- CPU 사용량 확인 (
top
또는htop
) - 메모리 사용량 확인 (
free -m
) - 디스크 사용량 확인 (
df -h
) - 디스크 I/O 상태 확인 (
iostat
) - 네트워크 트래픽 확인 (
nethogs
또는iftop
)
큐 및 로그 확인
- 메일 큐 크기 확인 (
mailq | wc -l
) - 오류 로그 확인 (
grep -i "error\|warn\|fail" /var/log/mail.log | tail -50
) - 지연된 메일 확인 (
find /var/spool/postfix/deferred -type f | wc -l
) - Rspamd 로그 확인 (
grep -i "error\|warn" /var/log/rspamd/rspamd.log | tail -50
)
모니터링 설정
- 로그 모니터링 및 알림 설정
- 서비스 가용성 모니터링 설정 (Nagios, Zabbix, Prometheus 등)
- 백업 설정 확인 및 테스트
- 인증서 갱신 모니터링 설정
11. DKIM 세부 확인
DKIM 키 설정
- 적절한 키 길이 사용 (2048비트 이상) (
ls -la /var/lib/rspamd/dkim/
) - 키 파일 권한 설정 확인 (
ls -la /var/lib/rspamd/dkim/
) - DKIM 선택기(Selector) 설정 확인 (
cat /etc/rspamd/local.d/dkim_signing.conf
)
DKIM DNS 레코드
- TXT 레코드 형식 확인 (
dig TXT [selector]._domainkey.example.com
) - TXT 레코드에 v=DKIM1 포함
- TXT 레코드에 올바른 p= (공개키) 포함
- 추가 권장 태그 포함 (t=s, t=y 등)
DKIM 서명 검증
- 실제 메일 발송 후 DKIM 서명 확인
- 다양한 외부 서비스로 DKIM 검증 테스트
- DKIM 실패 시 로그 확인 (
grep -i "dkim" /var/log/rspamd/rspamd.log
)
12. SPF 세부 확인
SPF 레코드 설정
- SPF 레코드 구문 확인 (
dig TXT example.com
) - 레코드에 모든 송신 서버 포함 (IP, MX, A 등)
- 적절한 제한 모드 설정 (-all, ~all)
- SPF 레코드 길이 제한 확인 (<= 255자, 10개 이하 룩업)
SPF 검증
- SPF 확인 메커니즘 작동 확인
- SPF 실패 테스트 (비승인 서버에서 발송)
- 다양한 SPF 검증 도구 사용 테스트
- SPF 실패 시 로그 확인 (
grep -i "spf" /var/log/rspamd/rspamd.log
)
13. DMARC 세부 확인
DMARC 레코드 설정
- DMARC 레코드 구문 확인 (
dig TXT _dmarc.example.com
) - 정책 설정 확인 (p=none, p=quarantine, p=reject)
- 하위 도메인 정책 설정 확인 (sp=)
- 보고서 설정 확인 (rua=, ruf=)
DMARC 처리
- DMARC 정책 적용 확인
- DMARC 보고서 수신 및 분석 설정
- DMARC 실패 시 로그 확인 (
grep -i "dmarc" /var/log/rspamd/rspamd.log
)
14. 일일/주간 유지보수 체크리스트
일일 점검
- 서비스 상태 확인
- 로그 확인 (오류 및 경고)
- 메일 큐 확인
- 디스크 공간 확인
- 백업 상태 확인
주간 점검
- 보안 업데이트 설치
- SSL 인증서 만료일 확인
- 스팸 필터 성능 검토
- DNS 레코드 확인
- 방화벽 규칙 검토
- 인증 실패 로그 검토
- DMARC 보고서 분석
15. 재해 복구 및 비상 대응
복구 절차
- 메일 서버 복구 절차 문서화
- 백업 복원 절차 테스트
- 복구 시간 목표(RTO) 설정 및 검증
- 비상 연락처 목록 작성 및 업데이트
비상 대응 계획
- 보안 침해 대응 계획 수립
- 서비스 중단 대응 절차 문서화
- 스팸/피싱 공격 대응 절차 문서화
16. 규정 준수 확인
데이터 보호
- 암호화 전송 강제 (TLS)
- 저장 데이터 보호 (디스크 암호화 등)
- 접근 제어 정책 구현
로깅 및 감사
- 필수 로그 수집 및 보존
- 로그 무결성 보호
- 로그 분석 및 모니터링 설정
업계별 규정
- 해당 산업 규정 준수 여부 확인 (GDPR, HIPAA, PCI DSS 등)
- 개인정보 처리 정책 구현
정기 검사 일정
- 일일 검사: 서비스 상태, 로그, 메일 큐, 디스크 공간
- 주간 검사: 보안 업데이트, 스팸 필터, 인증 실패 로그
- 월간 검사: 전체 보안 설정, DNS 레코드, 방화벽 규칙
- 분기 검사: 외부 평판 및 블랙리스트 확인, 재해 복구 테스트
- 반기 검사: 전체 시스템 보안 감사, 규정 준수 확인
이 체크리스트를 통해 메일 서버가 프로덕션 환경에서 안정적이고 안전하게 운영될 수 있도록, 주요 구성 요소의 설정과 기능을 철저히 검증할 수 있습니다.