Postfix 설치 (2/4) – DKIM/SPF/DMARC 설정 가이드

By | 2020년 8월 25일
Table of Contents

Postfix 설치 (2/4) – DKIM/SPF/DMARC 설정 가이드

이 글에서는 앞서 구축한 Postfix 메일 서버에 메일 인증 기능(DKIM, SPF, DMARC)을 추가하여 메일 신뢰성을 높이고 스팸 처리를 방지하는 방법을 다룹니다.

개요

메일 인증 기술은 다음과 같은 목적으로 사용됩니다:

  • SPF (Sender Policy Framework): 발송 서버의 권한을 검증
  • DKIM (DomainKeys Identified Mail): 메일 내용의 무결성을 보장
  • DMARC (Domain-based Message Authentication): SPF와 DKIM을 종합하여 메일 정책을 설정

환경 정보

  • 도메인: example.com
  • 메일 서버: mail.example.com
  • 서버 IP: 111.222.333.444
  • OS: Ubuntu 20.04/22.04 LTS

DKIM 설정

1. OpenDKIM 설치

# OpenDKIM 및 관련 도구 설치
sudo apt update
sudo apt install opendkim opendkim-tools -y

2. OpenDKIM 설정

메인 설정 파일을 편집합니다:

sudo vi /etc/opendkim.conf
----------------------------
AutoRestart             Yes
AutoRestartRate         10/1h
UMask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes

Canonicalization        relaxed/relaxed

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable

Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256

UserID                  opendkim:opendkim

Socket                  inet:8891@localhost
----------------------------

3. DKIM 키 생성

# 키 저장 디렉토리 생성
sudo mkdir -p /etc/opendkim/keys/example.com

# DKIM 키 페어 생성
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s mail -v

# 키 파일 권한 설정
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/mail.private
sudo chmod 600 /etc/opendkim/keys/example.com/mail.private

4. OpenDKIM 테이블 설정

키 테이블 생성:

sudo vi /etc/opendkim/KeyTable
----------------------------
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
----------------------------

서명 테이블 생성:

sudo vi /etc/opendkim/SigningTable
----------------------------
*@example.com mail._domainkey.example.com
----------------------------

신뢰 호스트 설정:

sudo vi /etc/opendkim/TrustedHosts
----------------------------
127.0.0.1
localhost
*.example.com
example.com
111.222.333.444
----------------------------

5. Postfix와 OpenDKIM 연동

Postfix 설정에 DKIM 연동을 추가합니다:

sudo vi /etc/postfix/main.cf
......
# DKIM 설정
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
......

6. 서비스 시작 및 확인

# OpenDKIM 서비스 시작
sudo systemctl start opendkim
sudo systemctl enable opendkim

# Postfix 재시작
sudo systemctl restart postfix

# 서비스 상태 확인
sudo systemctl status opendkim
sudo systemctl status postfix

7. DNS 레코드 추가

생성된 공개키를 DNS에 추가합니다:

# 공개키 확인
sudo cat /etc/opendkim/keys/example.com/mail.txt

DNS에 다음과 같은 TXT 레코드를 추가합니다:

여러줄로 되어 있는 경우 한 줄로 합쳐 줍니다.

mail._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

SPF 설정

DNS SPF 레코드 추가

도메인의 DNS 설정에서 다음 TXT 레코드를 추가합니다:

example.com. IN TXT "v=spf1 ip4:111.222.333.444 mx ~all"

SPF 레코드 구성 요소:

  • v=spf1: SPF 버전
  • ip4:111.222.333.444: 허용된 IP 주소
  • mx: MX 레코드의 서버에서 발송 허용
  • ~all: 기타 서버에서의 발송은 소프트 실패 (권장하지 않음)

더 엄격한 정책을 원한다면 ~all 대신 -all을 사용할 수 있습니다.

DMARC 설정

DNS DMARC 레코드 추가

도메인의 DNS 설정에서 다음 TXT 레코드를 추가합니다:

_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com; fo=1"

DMARC 레코드 구성 요소:

  • v=DMARC1: DMARC 버전
  • p=quarantine: 정책 (none, quarantine, reject)
  • rua: 집계 보고서 수신 이메일
  • ruf: 포렌식 보고서 수신 이메일

설정 검증 및 테스트

1. DKIM 서명 확인

# 테스트 메일 발송
echo "DKIM 테스트 메일" | mail -s "DKIM Test" test@gmail.com

# 로그 확인
sudo tail -f /var/log/mail.log | grep -i dkim

2. DNS 레코드 확인

# sudo apt install dnsutils

# SPF 레코드 확인
dig TXT example.com | grep spf

# DKIM 레코드 확인
dig TXT mail._domainkey.example.com

# DMARC 레코드 확인
dig TXT _dmarc.example.com

답글 남기기