DKIM을 사용한 발송 메일 서명하기

DKIM(Domain Keys Identified Mail)은 디지털 서명을 메일 헤더에 포함시켜 발신자 및 메일 내용 등이 위변조가 되지 않았는지 수신자 측에서 검증할 수 있는 기술입니다. 예를 들면 gmail.com에서 발송된 메일이 DKIM 검증을 통과했다면 실제 gmail.com에서 전송되었으며 메일 내용이 중간에 변조되지 않았음이 증명됩니다. DKIM 검증을 통과하지 못했다면 gmail.com을 가장한 스팸 또는 피싱 메일일 가능성이 매우 높습니다.

메일캐리어는 사용자가 외부로 발송하는 메일에 대해 DKIM 서명을 추가해 안전한 메일 전달을 할 수 있는 환경을 제공합니다.

  Note

DKIM 설정은 DNS 서버 설정을 포함하고 있으며 이 문서는 윈도우 서버에 포함되어 있는 DNS 서버를 사용한다는 가정 아래에 작성되었습니다. 다른 DNS 서버를 사용하는 경우 해당 DNS 서버 관리자에게 문의해 유사한 방식으로 설정할 수 있습니다.

이 기능은 메일캐리어 7.4.0 버전부터 지원됩니다.

메일캐리어 DKIM 활성화

메일캐리어 관리 도구를 사용해 DKIM 관련 설정을 해야 메일이 서명되어 발송됩니다.

DKIM 설정은 웹매니저에서는 진행할 수 없으므로 윈도우 서버에 있는 메일캐리어 MMC 관리 도구를 사용하도록 합니다.

  1. 메일캐리어 관리 도구를 실행합니다.

  2. DKIM은 DNS 도메인에 의존하는 기술이므로 메일캐리어 관리 도구에서 적용할 도메인으로 이동합니다.

  3. 도메인 속성창을 연 후 DKIM 탭으로 이동합니다.

  4. [외부로 발송되는 메일에 대해 DKIM으로 서명합니다] 체크 박스를 활성화 합니다.

  5. 도메인에 메일 도메인 명칭을 입력합니다.

  6. Selector에 임의의 이름을 입력합니다. 예제에서는 날짜를 입력하였습니다.

  7. [키 생성] 버튼을 클릭하면 1024비트의 공개키와 개인키가 생성됩니다.

    아래 그림은 위 과정을 마쳤을 때 나타난 모양입니다.

    dkim setting 1
  8. [DNS 게시] 버튼을 클릭하면 아래 그림과 같은 대화상자가 출력됩니다.

    dkim setting 2

    대화상자 내용에 보면 20171026._domainkey.tabslab.com에 공개 키를 게시하라고 되어 있습니다.

    DNS 서버에 DNS 도메인 tabslab.com 아래에 TXT 레코드(레코드 이름: 20171026._domainkey)를 생성해서 클립보드에 저장되어 있는 공개 키를 지정합니다.

    다음은 이 과정에 대한 상세한 설명입니다.

DNS 서버 설정

  Note

아래 설명은 윈도우 서버에서 DNS 서버를 운영할 때 추가하는 방법입니다. 다른 DNS 서버를 사용하는 경우 설정 방법이 다를 수 있습니다.

DKIM 공개 키는 메일을 수신한 서버가 DKIM 서명이 올바른지 검증하기 위해 필요한 키로 DNS 조회를 통해 확인합니다.

공개 키를 DNS에 게시하는 위치는 아래 그림과 같이 _domainkey로 정해져 있습니다.

dkim setting 3
  1. 정방향 조회 영역 아래에서 도메인 이름(예:tabslab.com)을 선택한 후 동작 메뉴에서 [새 도메인...]을 선택합니다.

  2. 새 DNS 도메인 대화상자에서 도메인 이름에 _domainkey를 입력한 뒤 확인 버튼을 누릅니다.

  3. _domainkey가 생성되었으면 해당 항목으로 이동합니다.

  4. 동작 메뉴에서 [다른 새 레코드...]를 선택합니다.

  5. [리소스 레코드 종류] 대화상자에서 [TXT(텍스트)]를 선택한 후 [레코드 만들기...] 버튼을 클릭합니다.

  6. [레코드 이름]에 위에서 Selector에 지정한 이름을 입력합니다. 이 예제에서는 20171026 입니다.

    [텍스트] 란에 클립보드에 복사된 공개 키를 지정한 후 [확인] 버튼을 클릭해 완료합니다.

    dkim setting 4

위 단계를 마쳤으면 DKIM 공개 키가 DNS 서버에 게시되었으므로 메일을 서명해서 보낼 수 있고 상대방은 검증할 수 있습니다.

DKIM 테스트

이제 메일을 발송하면 아래와 같이 DKIM-Signature 헤더가 만들어져 전송됩니다. 이 헤더는 개인 키와 원본 메시지를 사용해 만든 암호화된 값을 가지고 있으며, 이 메일을 수신한 상대방 서버는 이 헤더와 메시지 그리고 DNS에 있는 공개 키를 가지고 검증합니다.

서명된 메시지 헤더
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tabslab.com; s=20171026;
        h=Content-Type:MIME-Version:Message-ID:Reply-To:To:Subject:From:Date;
        bh=+EH/6NE/u1bOUcXFHhB4FfDXYFOlcRPTyYWiA8ZwMaI=;
        b=mNqLRTLNyzMHHM6YOIfV6dEXIX7BtWowibyL7PjVeNq0NiKAMzKXHLluEfUYY1Z7LCmW
        uPAn1dzIkkn4c955vjxqWkv1dErwNA7NHtMnzajGESXrjNRTTYuYXTohgYzSjY2xNLV6
        3sEn5jWU1q+XjaQv2BhhO8doR3IIwfgdVnQ=;
Date: Wed, 27 Dec 2017 09:40:32 +0900
From: "=?utf-8?B?6rmA6rK97ZiE?=" <khkim@tabslab.com>
Subject: =?utf-8?B?Rlc6IO2bhOybkOyekOuLmCDrjZXrtoTsl5Ag7ZaJ67O17ZWc?=
        =?utf-8?B?IDHrhYQg7J207JeI7Ja07JqU4pmh?=

gmail.com으로 메일을 보내 올바르게 수신되고 메일 보기에서 아래와 같은 경고 메시지가 나오지 않는다면 올바르게 설정된 것입니다.

dkim setting 5

또는 help@tabslab.com으로 테스트 메일을 보내 DKIM 서명이 올바르게 되었는지 검증을 요청할 수 있습니다.