DKIM 설정 방법
OpenDKIM 설치 방법과 설정 그리고 DNS 레코드를 설정 후 DKIM 테스트 방법에 대해서 설명드리도록 하겠습니다. 이 글은 메일 서버가 구축된 다음 DKIM을 적용 하는 내용입니다. 메일 서버를 구축하는 내용은 아래의 글을 참고해 주시기 바랍니다.
DKIM 이란
DKIM (Domain Keys Identified Mail)이란 메일 발송자의 도메인과 메일의 무결성을 검증할 수 있는 기술입니다. 이 기술을 이용하여 메일을 보낸자 주소가 위조되었을 경우 조작된 메일을 탐지해 낼 수 있습니다.
DKIM으로 서명된 메일의 경우 받은 메일의 헤더를 확인하면 DKIM-Signature 라는 부분을 확인 할 수 있습니다. 그리고 지메일의 경우 DKIM 으로 서명된 메일의 원본을 확인했을 경우 다음과 같은 내용을 확인 할 수 있습니다.
메일 서버의 평판 등을 위해서 DKIM은 SPF, DMARC 등과 함께 메일 서버를 구축한 뒤에 꼭 설정해 주셔야 하는 내용입니다.
OpenDKIM 설치
우분투 리눅스를 사용하는 환경일 경우, 아래의 명령어를 이용하여 OpenDKIM 패키지와 관련 도구들을 설치합니다.
$ sudo apt-get install opendkim opendkim-tools
DKIM 설정
DKIM 을 설정하기 위해서는 OpenDKIM과 Postfix 를 함께 설정해 주셔야 합니다. 각각 설정내용을 나눠서 설명드리도록 하겠습니다.
OpenDKIM
먼저 /etc/opendkim.conf 파일을 열고 설정파일의 내용중에서 다음과 같이 수정하거나 설정을 추가합니다. 수정을 할때에는 hiseon.me 의 내용을 실제 사용하시는 도메인으로 변경합니다.
Domain hiseon.me
Selector mail
Socket inet:8891@localhost
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList 설정과 InternalHosts 은 동일한 설정 파일을 참조하도록 같은 내용을 입력하였습니다. 그리고 /etc/default/opendkim 파일을 열고, SOCKET 값을 다음과 같이 변경합니다.
SOCKET="inet:8891@localhost"
그리고 설정 파일들이 저장될 디렉터리를 다음 명령어로 생성 후 ExternalIgnoreList와 InternalHosts, KeyTable, SigningTable을 설정합니다.
$ sudo mkdir /etc/opendkim
TrustedHosts
/etc/opendkim/TrustedHosts 파일을 생성하고 아래의 내용을 추가합니다.
127.0.0.1
localhost
*.hiseon.me
KeyTable
/etc/opendkim/KeyTable 파일 생성 후 아래 내용 추가합니다. 다음 경로에 추가된 비밀키 파일은 아래에서 생성 후 복사할 것입니다.
mail._domainkey.hiseon.me hiseon.me:mail:/etc/opendkim/keys/hiseon.me/mail.private
SigningTable
/etc/opendkim/SigningTable 파일에 아래의 내용 추가합니다.
*@hiseon.me mail._domainkey.hiseon.me
Postfix
/etc/postfix/main.cf 파일을 열고, 다음과 같은 명령어를 실행합니다.
$ sudo postconf -e 'milter_default_action = accept'
$ sudo postconf -e 'milter_protocol = 2'
$ sudo postconf -e 'smtpd_milters = inet:localhost:8891'
$ sudo postconf -e 'non_smtpd_milters = inet:localhost:8891'
DKIM Key 생성
$ opendkim-genkey -t -s mail -d hiseon.me
위의 명령어는 mail.txt 파일과 mail.private 파일을 생성하게 됩니다. mail.private 파일은 전송되는 메일에 서명을 하는데 사용됩니다.
다음 명령어를 사용하여 mail.private 파일을 KeyTable 설정 파일에서 설정했던 경로로 복사하고 소유권을 변경합니다.
$ sudo mkdir -p /etc/opendkim/keys/hiseon.me
$ sudo cp mail.private /etc/opendkim/keys/hiseon.me/mail.private
$ sudo chown opendkim:opendkim /etc/opendkim/keys/hiseon.me/mail.private
DNS Record 설정
다음은 TXT 레코드를 DNS에 추가할 것입니다. 앞서 opendkim-genkey 명령어로 생성된 mail.txt 내용을 확인합니다.
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; t=y; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFFwnWQLsHwwBgid1xB7HnrOSVhiBACOXyzOpgQnNfHGO2Dx3NeCBTOs513SJnSQOVRi6GaEDMG+BzlnJC9LXr07AwmKW27unVpCyWC3N0TuLXzoX/RGopVMbdXq4wC64Rn7iPoT6cTVS6f3XUaW4b0lEvt0YNzY8w4YLi3jGn/LWfkbbcDVp2scHWoqE2x4r+OywSnFhfRhRQ"
"vBQDgiYH/I5KfsyR2Ltx4OiSuXdI6wTYL+LJxScbwmdoOnFuylK+Yd/xC3b7CpmYZmUEIWejhBbEn0xUQxLVHYOMBhMxBToNPGGzKoQfjERC5NGsPy7FGcHY3oPWv9iXKaZ6biOwIDAQAB" ) ; ----- DKIM key mail for hiseon.me
위의 내용은 네임서버의 zone 파일에 적용하는 내용입니다. zone 파일이 수정된 다음은 네임서버를 재실행 해 주셔야 수정 내용이 적용되게 됩니다.
서명 시작하기
설치와 설정이 완료되면 opendkim 데몬과 postfix 데몬을 아래의 명령어로 재실행합니다.
$ sudo service opendkim start
$ sudo service postfix restart
OpenDKIM과 관련하여 설정 등 보다 자세한 내용은 아래의 페이지를 참고해 주시기 바랍니다.
http://www.opendkim.org/docs.html
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)