Configure DKIM with Postfix on CentOS 7
Postfix 에 도메인 키 인증 DKIM 설정 가이드
DKIM(DomainKeys Identified Mail)은 메일의 위/변조 여부를 확인 할 수 있게 해줌으로 메일 보안을 강화 시켜 줍니다.
DKIM 은 이메일이 발송되면 발신자의 메일 서버에서 메세지 내용과 발신자의 개인키를 기반으로 암호화된 서명을 메일 헤더에 첨부하고, 수신 메일 서버에서는 복호화 할 공개키를 DNS 서버에서 확인 후 위/변조 여부를 판별하게 됩니다. DKIM 은 RFC6376 문서에 명시되어 있습니다.
이번 가이드에서는 CentOS 7 에서 Opendkim 을 설치하고 Postfix 와 DKIM 을 연동하는 방법에 대해서 알아보도록 하겠습니다.
Opendkim 설치
[root@172-16-11-5 /]# yum install opendkim
키 디렉토리 생성
[root@172-16-11-5 /]# mkdir -p /etc/opendkim/keys/smtp.umount.net
키 생성
[root@172-16-11-5 /]# opendkim-genkey -D /etc/opendkim/keys/smtp.umount.net -d smtp.umount.net -s umount-dkim
파일 확인
[root@172-16-11-5 /]# ls /etc/opendkim/keys/smtp.umount.net/ umount-dkim.private umount-dkim.txt
소유자 변경
[root@172-16-11-5 /]# chown opendkim. /etc/opendkim/keys/smtp.umount.net/*
설정 파일 편집 (주요 설정 사항만 표시하였습니다. 본인의 환경에 맞게 수정해 주시기 바랍니다.)
: vi /etc/opendkim.conf
PidFile /var/run/opendkim/opendkim.pid Mode sv Socket inet:8891@localhost Domain smtp.umount.net Selector mail KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts
: vi /etc/opendkim/KeyTable
umount-dkim._domainkey.smtp.umount.net smtp.umount.net:umount-dkim:/etc/opendkim/keys/smtp.umount.net/umount-dkim.private
: vi /etc/opendkim/SigningTable
*@umount.net umount-dkim._domainkey.smtp.umount.net
: vi /etc/opendkim/TrustedHosts
127.0.0.1 ::1 localhost *.umount.net
: vi /etc/postfix/main.cf (맨 아래줄에 추가해 줍니다.)
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 2
opendkim systemd 등록 및 실행
[root@172-16-11-5 /]# systemctl enable opendkim [root@172-16-11-5 /]# systemctl start opendkim
postfix 재실행
[root@172-16-11-5 /]# systemctl restart postfix
DNS 설정
사용하고 있는 DNS 에 DKIM 에서 생성된 KEY 를 TXT 레코드로 추가해 주어야 합니다.
우선 정보를 확인 합니다.
[root@172-16-11-5 /]# cat /etc/opendkim/keys/smtp.umount.net/umount-dkim.txt umount-dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr23YswFgJUZR79ZbONH3CIINcgIufjhQ+P5QFHrZKrrb3nxz20D/ktegKvxJY2LcR4jeqSBzI8A97/r4qVk0yQ7rqQuv0vqlNqv2t0cLlV04lTJnJDkaYovmbxpE93n036SJ8RQ7FvtHLBRy3XCArIjzyV9o2LO/CeU5PTyEX3wIDAQAB" ) ; ----- DKIM key umount-dkim for smtp.umount.net
위 정보를 바탕으로 자신이 사용하는 DNS 서버에 아래와 같은 형식으로 추가해 줍니다.
작성이 완료된 후에는 /etc/opendkim/keys/smtp.umount.net/umount-dkim.txt 파일은 삭제해도 상관은 없지만 실수로 DNS 정보를 변경했을 경우를 대비하여 어딘가에 잘 보관하는 것을 권장합니다.
호스트 : umount-dkim._domainkey.smtp.umount.net 타입 : TXT 값 : "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr23YswFgJUZR79ZbONH3CIINcgIufjhQ+P5QFHrZKrrb3nxz20D/ktegKvxJY2LcR4jeqSBzI8A97/r4qVk0yQ7rqQuv0vqlNqv2t0cLlV04lTJnJDkaYovmbxpE93n036SJ8RQ7FvtHLBRy3XCArIjzyV9o2LO/CeU5PTyEX3wIDAQAB"
모두 적용 후 메일을 발송하면 아래와 같이 maillog 에 DKIM-Signature 필드가 추가 되는 것이 나옵니다.
DKIM-Signature field added (s=umount-dkim, d=smtp.umount.net)
구글에서 제공되는 메일 헤더 분석기를 사용하면 메일 헤더에 추가된 DKIM 적용 여부를 확인 할 있습니다.