DKIM 설정 방법


DKIM 설정 방법
OpenDKIM 설치 방법과 설정 그리고 DNS 레코드를 설정 후 DKIM 테스트 방법에 대해서 설명드리도록 하겠습니다. 이 글은 메일 서버가 구축된 다음 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

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)