Axigen Mail Server 보안설정 – 5.DKIM & DMARC

2025년 01월 22일

시작하기

대부분의 이메일 서비스 제공자(gmail, naver 등)는 메일 수신 시 Domain Key(DKIM)와 DMARC 인증 여부를 확인하며, 인증이 없을 경우 메일을 거절합니다. 따라서 DKIM과 DMARC 인증을 올바르게 설정하지 않으면 이메일 서비스를 원활하게 사용하기 어렵습니다.

DKIM 이란?

도메인키 식별 메일(DKIM)은 스팸 발송자 및 기타 악의적인 당사자가 합법적인 도메인을 가장하는 것을 방지하는 데 도움이 되는 이메일 인증 방법입니다. 자세한 내용은 아래 링크에서 확인하세요.

Axigen 메일서버의 DKIM 설정하기

SSL 터미널에서 Domain Key 생성

Axigen 메일서버는 서버에 SSL로 접속하여 터미널에서 작업합니다. 이는 식별 키의 인증을 위해 OpenSSL을 사용하여 RSA 형식의 키 페어를 생성해야 하기 때문입니다.

root@axigen-server:cd /var/opt/axigen

# RSA인증서 KEY PAIR 생성
root@axigen-server:/var/opt/axigen# openssl genrsa -out dkim.privkey.your_domain_com.pem 2048
root@axigen-server:/var/opt/axigen# openssl rsa -in dkim.privkey.your_domain_com.pem -outform PEM -pubout -out dkim.pubkey.your_domain_com.pem
writing RSA key

# 생성된 인증서 파일들의 권한 부여
root@axigen-server:/var/opt/axigen# chmod 600 dkim.*.pem
root@axigen-server:/var/opt/axigen# chown axigen:axigen dkim.*.pem

# 인증서 공개키 내용 확인
root@axigen-server:/var/opt/axigen# cat dkim.pubkey.your_domain_com.pem | grep -v PUBLIC | tr -d "\n" | grep -v AAAAAAAAAA
MIIBIjANBgkqhkiG9...................4xWqfQLAtRwpzr6wIDAQAB

# DNS Record에 공개키 값을 입력할 경우, DNS txt레코드는 1줄에 256자까지만 허용합니다. 따라서 값을 여러줄로 나누어야 합니다.
root@axigen-server:/var/opt/axigen# LONG_KEY="MIIBIjANBgkqhkiG9...................4xWqfQLAtRwpzr6wIDAQAB"
root@axigen-server:/var/opt/axigen# HEADER="k=rsa; p="

# 256자로 나누기
echo "2025._domainkey.your_domain.com. IN TXT (" > dkim_record.txt
echo "$HEADER$LONG_KEY" | fold -w 256 | sed 's/^/"/; s/$/"/' >> dkim_record.txt
echo ")" >> dkim_record.txt

# 완성된 DNS txt 값
# 이 값으로 사용하는 DNS관리툴을 사용하여 txt 레코드를 입력.
root@axigen-server:/var/opt/axigen# cat dkim_record.txt                         2025._domainkey.your_domain.com. IN TXT (
"k=rsa; p=MIIBIjANBgkqhkiG9..................."
"...................4xWqfQLAtRwpzr6wIDAQAB"
)

위의 코드와 같이 메일서버에서 사용할 도메인 주소로 인증서 파일을 생성하고, DNS 레코드에 입력할 텍스트 문구를 생성합니다. 위의 예제에서는 공개 키의 값을 256자로 잘라서 사용합니다. 이는 대부분의 DNS 서비스 제공자들의 TXT 레코드가 한 줄에 256자로 입력이 제한되기 때문에 여러 줄로 나누어 입력해야 합니다. Windows Server의 DNS 레코드는 한 줄에 256자 이상 입력이 가능하므로 여러 줄로 나눌 필요 없이 한 줄로 입력해도 됩니다.

#txt 레코드를 입력 후, 다음 명령어로 DNS항목이 올바르게 전파되었는지 확인
root@axigen-server:/var/opt/axigen# dig +short txt 2025._domainkey.your_domain.com @8.8.8.8
"k=rsa; p=MIIBIjANBgkqhkiG9...................4xWqfQLAtRwpzr6wIDAQAB"

DNS에 txt레코드를 입력한 후, 성공적으로 입력 값이 전파되어 있는지 확인하기 위하여 위와 같이 입력하여 확인 해 봅니다. 위의 예제와 같이 결과 값이 나온다면 성공입니다.

Axigen WebAdmin에서 DKIM설정 생성

이제 설정한 DKIM의 DNS 레코드를 Axigen 메일서버에 적용해야 합니다. Axigen 메일서버의 Web Admin에 접속한 후, 아래 메뉴로 이동하여 새로운 규칙(Rule)을 추가합니다. 추가해야 하는 규칙은 수신과 발신의 두 가지입니다.

SECURITY & FILTERING > Acceptance & Routing > ADVANCED SETTINGS
  • 수신메세지를 위한 Rule 생성

위의 그림과 같이 수신 메시지를 위한 규칙을 생성합니다. 이는 모든 수신되는 이메일에 대해 Domain Key와 DKIM을 확인하겠다는 의미입니다.

[입력 값]
Conditions:
Match any email message

Actions:
Check Domain Key
Check DKIM
  • 발신메세지를 위한 Domain 별 Rule 생성

위의 그림과 같이 발신 메시지를 위한 규칙을 추가합니다.

대략적인 내용은,
1. 발신자 이메일의 도메인이 your_domain.com인 경우
2. 발신자의 이메일이 인증된 경우
3. DK 및 DKIM 셀렉터를 2025로 설정
4. DK Key 및 DKIM Key는 dkim.privkey.your_domain_com.pem 인증서를 사용
5. Domain Key로 서명
6. DKIM으로 서명

[입력 값]
Conditions : 
ALL
Sender domain is your_domain.com
Connection is authenticated (체크)

Actions:        
DK Selector: 2025
DKIM Selector: 2025
DK Key Path: dkim.privkey.your_domain_com.pem
DKIM Key Path: dkim.privkey.your_domain_com.pem
Sign Domain Key
Sign DKIM

모든 설정이 완료되면 서버를 재시작하고, 아래 테스트 사이트에서 DKIM이 올바르게 설정되었는지 확인합니다.

DKIM 테스트가 성공적으로 이루어진 경우

DMARC 란?

DMARC는 SPF와 DKIM 설정을 기반으로 추가로 설정하는 보안 정책입니다. 이를 통해 이메일 송신 도메인이 올바르게 인증되지 않은 경우, 해당 이메일을 어떻게 처리할지 정의할 수 있습니다. DMARC 정책은 DNS에 TXT 레코드 형태로 추가됩니다.

Axigen 메일서버의 DMARC 설정하기

아래의 테이블은 DNS Record에 입력할 값들의 세부 설명입니다. 아래의 값을 기준하여 DNS에 입력할 txt레코드를 구성합니다.

태그명 필수여부 내용 설명 입력 예
v필수프로토콜 버전v=DMARC1
p필수DMARC 정책 none: 인증 실패 시 아무 작업도 하지 않음.
quarantine: 인증 실패 시 이메일을 스팸으로 처리.
reject: 인증 실패 시 이메일을 거부.
p=quarantine
pct정책을 적용할 메시지 비율pct=20
rua보고서를 보낼 이메일rua=mailto:aggrep@example.com
sp하위도메인에 대한 여부설정하지 않으면 p값이 기본으로 적용sp=r
aspfSPF에 대한 정렬 모드aspf=r

DMARC를 초기 도입 및 테스트 시:

"v=DMARC1; p=none; pct=10; rua=mailto:dmarc-reports@example.com"

위 설정은 인증 실패 시 아무 작업도 하지 않으며, 전체 메시지 중 10%에만 정책을 적용합니다. DMARC를 처음 설정하거나 테스트할 때 적합합니다.

DMARC 테스트 후 서비스 시:

"v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@example.com"

이 설정은 인증 실패 시 이메일을 스팸으로 처리하고, 모든 메시지에 정책을 적용합니다. 실제 운영 환경에서 사용하는 데 적합합니다.만약 설정 후 많은 메시지가 인증 실패로 처리된다면, pct 값을 낮춰 점진적으로 정책을 강화하는 것이 좋습니다.

설정 확인 및 테스트:

모든 설정을 완료한 후 서버를 재시작하고, 아래 테스트 사이트에서 DMARC가 올바르게 설정되었는지 확인하세요.

DMARC 테스트가 성공적으로 이루어진 경우

KINA

Then, this is work for me

답글 남기기

Your email address will not be published.

Author

KINA

Then, this is work for me

LATEST COMMENTS

보여줄 댓글 없음.

Most Viewed

Axigen Mail Server 설치

설치 우선 Axigen 메일서버를 설치 해 보겠습니다. 대다수의 메일서버들과 다르게 Axigen 메일서버는 리눅스용과 더불어 윈도우용도 제공하고 있습니다.필자는 윈도우용을 사용 해 보지는 않았지만,

VMware vCenter Server 설치하기 – 1.INSTALL

VMware vCenter 설치 가이드 VMware vCenter는 가상화 된 환경인 ESXi 호스트들을 중앙에서 관리하고 제어할 수 있는 도구 입니다. 이번 글에서는 vCenter를 설치하는

Latest from Blog

동기(Synchronous) vs 비동기(Asynchronous) 실행 순서 이해하기

1. 동기와 비동기의 차이점 소프트웨어 개발에서 동기(Synchronous)와 비동기(Asynchronous) 프로그래밍의 개념은 매우 중요합니다. 특히 멀티스레딩 환경에서 실행 순서와 쓰레드 흐름을 이해하는 것은 성능 최적화와 안정적인 애플리케이션 개발에 필수적입니다. 이번 포스팅에서는 동기와 비동기의 실행 순서 차이를 이해하고, 이를 코드 예제와 함께 실제 실행 흐름을 분석해보겠습니다. 2. 동기(Synchronous) 실행 흐름 📌 동기 프로그래밍이란?
6 views

WinForms에서 UI 업데이트를 올바르게 처리하는 방법: 동기 vs 비동기의 진실

WinForms UI 업데이트의 핵심 원칙 WinForms 애플리케이션을 개발하다 보면 UI 컨트롤(Label, Button, ProgressBar 등)을 비동기 코드 내부에서 업데이트할 때 오류가 발생하는 경우가 있습니다. 이는 “동기(synchronous) vs 비동기(asynchronous)”의 문제가 아니라, WinForms UI 컨트롤이 반드시 UI 스레드에서 실행되어야 한다는 원칙 때문입니다. 이번 포스팅에서는 왜 WinForms에서 UI 업데이트는 특정 스레드에서 실행해야 하는지, 그리고
4 views

SPOEX 2025: 아시아 최대 스포츠레저산업 전시회, 어떤 혁신을 선보일까?

SPOEX 2025: 아시아 최대 스포츠레저산업 전시회, 어떤 혁신을 선보일까? 스포츠와 레저 산업의 미래를 한눈에 볼 수 있는 기회가 찾아옵니다. 아시아 TOP 3 국제 스포츠·레저산업 전시회 ‘SPOEX 2025’가 오는 3월 27일부터 30일까지 4일간 서울 코엑스에서 개최됩니다. 이번 전시회는 국내외 330여 개 스포츠 기업이 참가해 최신 기술과 제품을 선보일 예정이어서 업계의 관심이
4 views

웹사이트에 사용하는 아이콘 폰트 모음

웹사이트를 제작할 때 필수적으로 필요한 것이 바로 폰트 아이콘 입니다. 웹에서 아이콘을 검색 해 보면 매우 많은 아이콘 폰트를 찾을 수 있는데, 그 중 유명하고 훌륭한 아이콘 폰트를 정리 해 보려 합니다. FontAwesome 가장 유명한 폰트 아이콘이라고 할 수 있습니다. 버전4 까지는 전체가 무료였지만 버전5 이상부터는 유료 폰트가 많아졌지만, 그래도
4 views

vCenter 시작 시 No healty upstream 에러

vCenter를 ESXi 호스트에 설치하고 VM의 전원을 켜면, vCenter 관리자 페이지가 로드 되는것이 아니라 “no healty upstream” 과 같은 에러메세지만 뜨는 경우가 있습니다. 이 경우 ESXi 호스트에서 vCenter의 VM이 완전히 부팅 되었음에도 불구하고 이런 에러메세지가 뜹니다. 이런 에러는 vCenter 상의 문제가 있는것이 아니라 아직 vCenter의 VM상에서 vCenter의 리소스가 로딩중 이기 때문에
1 views