DKIM 레코드 생성기

브라우저에서 DKIM 키 쌍을 만들고 게시할 레코드를 받으세요. Google Workspace나 Microsoft 365를 쓰나요? 그쪽에서 키를 만들어 줍니다: 어디서 하는지 알려 드립니다.

브라우저의 Web Crypto로 키 생성, 전송 없음 · RFC 6376, 8301, 8463 · 발신자 20곳의 DKIM 설정 확인
예시

example.com용 키 만들기

브라우저의 Web Crypto로 만듭니다. 개인 키는 이 탭 밖으로 나가지 않습니다.

누가 메일에 서명합니까?
자체 키 생성
내 키 사용 가능
내 키 사용
k키 유형

RFC 8301이 요구하는 크기입니다. 보통 이것을 선택합니다.

s셀렉터
._domainkey.example.com
새 키마다 새 이름을 쓰세요. 날짜가 들어간 이름은 만든 시점을 알려 줍니다.
t레코드 옵션
고급
브라우저의 Web Crypto로 만듭니다. 개인 키는 이 탭 밖으로 나가지 않습니다.

내 키

개인 키 · 서버에 보관하세요격리된 프레임: 네트워크가 없고, 이 페이지의 다른 스크립트는 읽을 수 없습니다

오프라인에서도 작동합니다: Wi-Fi를 끄고 다시 생성해 보세요.

OpenDKIM 설정

키 파일
# Key file: only the opendkim user may read it
$ sudo mkdir -p /etc/opendkim/keys/example.com
$ sudo nano /etc/opendkim/keys/example.com/s.private
$ sudo chown -R opendkim:opendkim /etc/opendkim/keys
$ sudo chmod 600 /etc/opendkim/keys/example.com/s.private

교체 계획

  1. 오늘를 게시한 다음 그 키로 서명을 시작하세요.
  2. 6개월 후…를 만들어 와 나란히 게시하세요.
  3. 전환…로 서명하세요.
  4. 7~30일 후전송 중인 메일을 위해 를 계속 게시해 두세요.
  5. 폐기에 빈 키를 게시하세요. 삭제하지 마세요.v=DKIM1; k=rsa; p=

게시한 후

전체 확인: example.com링크에는 이 설정이 들어 있으며, 키는 절대 들어 있지 않습니다. 브라우저에서 질의했습니다: Cloudflare 리졸버, 교차 확인용으로 Google 리졸버.

DKIM 키와 레코드는 어떻게 생성합니까?

RSA 2048 키 쌍을 만들어 개인 키는 메일에 서명하는 서버에 보관하고, 공개 키는 selector._domainkey.yourdomain의 TXT 레코드로 게시하면 DKIM 설정이 끝납니다(RFC 6376).

새 키마다 만든 달 같은 새 셀렉터 이름을 정하세요. 그 키로 서명한 메일이 아직 오는 중일 때도 이전 키를 계속 게시해 둘 수 있습니다.

그다음 서명 측에 개인 키를 설치하고 테스트 메시지를 보내세요. DKIM-Signature 헤더에 수신 서버가 조회할 도메인(d=)과 셀렉터(s=)가 들어 있습니다.

개인 키메일 서버에 보관메시지마다 서명
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s202610; …
공개 키DNS에 게시s202610._domainkey.example.com수신 서버가 이것으로 검증 ✓
한 키의 두 부분
격리된 브라우저 프레임에 RSA 2048 개인 키를 보관하고 OpenDKIM 파일과 키 교체 계획을 보여 주는 DKIM 생성기 화면격리된 브라우저 프레임에 RSA 2048 개인 키를 보관하고 OpenDKIM 파일과 키 교체 계획을 보여 주는 DKIM 생성기 화면다른 스크립트가 읽을 수 없는 개인 키네트워크에 닿을 수 없는 격리된 프레임 안에서 만들고 보관합니다.서명 측이 읽는 형식PKCS#8, PKCS#1 또는 base64 한 줄 중 서명 측에 맞는 것을 고릅니다.요청 0건, 오프라인에서도 작동생성 버튼을 누른 뒤의 네트워크 요청 수를 실시간으로 셉니다.서명 측의 파일OpenDKIM, rspamd, Exim, Postfix, Amazon SES용으로 내 도메인과 셀렉터를 채웠습니다.날짜가 들어간 셀렉터이름에 키를 만든 시점이 들어 있으며, 아래 키 교체 계획은 다음 키와 폐기 날짜를 정해 줍니다.
Web Crypto로 만든 OpenDKIM용 RSA 2048 키: 개인 키는 네트워크가 없는 격리된 프레임에 있고, 서명 측 파일에 내 값이 채워져 있으며, 실제 날짜가 들어간 키 교체 계획이 있습니다.

DKIM 키를 직접 생성해야 합니까?

자체 서버가 메일에 서명하는 경우에만 필요합니다. Google Workspace, Microsoft 365와 대부분의 이메일 서비스는 키를 직접 만들고 게시할 레코드를 알려 주므로, 생성기로 만든 키는 사용되지 않습니다.

Postfix와 OpenDKIM, rspamd, Exim, Haraka, 자체 앱, 그리고 Amazon SES(BYODKIM)와 Mailgun처럼 키를 받아 주는 서비스에는 직접 만든 키가 의미가 있습니다.

발신자키를 만드는 곳게시할 내용셀렉터
Google Workspace제공업체TXT(제공업체의 키)google
Microsoft 365제공업체해당 키로 가는 CNAMEselector1, selector2
SendGrid제공업체해당 키로 가는 CNAMEs1, s2
Mailchimp제공업체해당 키로 가는 CNAMEk2, k3
Postmark제공업체TXT(제공업체의 키)<date>pm
Brevo제공업체해당 키로 가는 CNAMEbrevo1, brevo2
Zoho Mail제공업체TXT(제공업체의 키)zoho
Amazon SES어느 쪽이든 가능TXT(내 키)아무거나
Mailgun어느 쪽이든 가능TXT(내 키)아무거나
OpenDKIM사용자TXT(내 키)아무거나
rspamd사용자TXT(내 키)아무거나
Exim사용자TXT(내 키)아무거나
누가 키를 만드는가

DKIM 레코드에는 무엇이 들어갑니까?

selector._domainkey.domain의 TXT 레코드에 v=DKIM1, 키 유형 k=, 공개 키 p=가 들어 있습니다. 선택 태그로 해시(h=)나 서비스(s=)를 제한하거나 키를 테스트 중(t=)으로 표시합니다.

p=가 비어 있으면 키가 폐기된 것입니다. RSA 키는 OpenDKIM과 rspamd가 요구하는 SubjectPublicKeyInfo로, Ed25519 키는 원시 32바이트로 게시합니다.

s202610._domainkey.example.com · TXT
v=DKIM1; k=rsa; h=sha256; s=email; p=MIIBIjANBgkqhkiG9w0BAQ…GQIDAQAB
태그의미기본값
v버전, 있으면 맨 앞DKIM1
k키 유형: rsa 또는 ed25519rsa
h허용하는 해시전부
s서비스: email 또는 **
ty = 테스트, s = 정확한 도메인없음
n사람이 읽는 메모없음
p공개 키. 비어 있으면 폐기됨필수
DKIM 레코드, 태그별 설명

RSA 1024, 2048, 4096, Ed25519 중 무엇을 써야 합니까?

RSA 2048을 쓰세요. 1024는 수신 서버가 받아 주는 최소 크기이고, 4096은 DNS에 부담을 주며, Ed25519는 짧지만 독립 테스트에서 대형 메일함 제공업체가 검증하지 않는 것으로 나타나 RSA 서명과 함께 쓸 때만 도움이 됩니다.

opendkim-genkey, rspamd의 dkim_keygen, Microsoft 365처럼 아직 기본값이 1024인 도구가 많습니다. RFC 8301은 2048을 요구합니다.

Ed25519를 추가한다면 RSA로도 별도 셀렉터를 써서 서명하세요. 정렬된 서명 여러 개 중 하나가 실패하면 Yahoo는 DMARC를 통과시키지 않을 수 있습니다.

RSA 1024234 자 · 1최소 크기
RSA 2048410 자 · 2권장
RSA 3072582 자 · 3서명 측 확인 필요
RSA 4096754 자 · 3UDP에 안 맞을 수 있음
Ed2551966 자 · 1대형 제공업체가 검증하지 않음

255바이트 문자열: 255, 510, 765

키 유형별 레코드 길이

OpenDKIM, rspamd, Exim은 어떻게 설정합니까?

개인 키를 서명 측만 읽을 수 있는 곳에 저장하고, 서명 측 설정에서 도메인과 셀렉터를 그 키에 연결한 다음 재시작하세요. 탭마다 서명 측별 파일에 내 값이 채워져 있습니다.

자신에게 메시지를 보내 헤더의 DKIM 결과를 읽거나 저희 DKIM 확인 도구로 결과를 확인하세요.

OpenDKIM · KeyTable · SigningTable
# /etc/opendkim/KeyTable
s202610._domainkey.example.com example.com:s202610:/etc/opendkim/keys/example.com/s202610.private

# /etc/opendkim/SigningTable
*@example.com s202610._domainkey.example.com

# /etc/opendkim/TrustedHosts
127.0.0.1
localhost
Rspamd · dkim_signing.conf
# /etc/rspamd/local.d/dkim_signing.conf
domain {
  example.com {
    selector = "s202610";
    path = "/var/lib/rspamd/dkim/example.com.s202610.key";
  }
}
# only if example.com is a subdomain: use_esld = false;
# only if users log in without @example.com: allow_username_mismatch = true;

$ sudo rspamadm configtest && sudo systemctl restart rspamd
서명 측의 파일

DKIM 레코드가 여러 문자열로 나뉘는 이유는 무엇입니까?

2048비트 키 레코드는 약 410자로 255바이트 TXT 문자열 하나보다 길어서, DNS는 이를 문자열 두 개로 저장하고 검증 측은 그 사이에 아무것도 넣지 않고 이어 붙입니다.

Cloudflare, Azure, cPanel류 패널은 값 전체를 받아 알아서 나눕니다. Route 53과 Google Cloud DNS는 따옴표로 묶은 문자열을 붙여넣어야 합니다. GoDaddy는 값을 1,024자로 제한합니다.

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIaM9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB
1255 B2155 B
s202610._domainkey.example.com. 3600 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIa"
	"M9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB" )
DNS에 저장된 2048비트 레코드

DKIM 키는 어떻게 교체합니까?

새 셀렉터로 새 키를 게시하고 서명을 그 키로 전환한 뒤, 전송 중인 메일을 위해 이전 레코드를 7~30일 유지하고 빈 p=로 폐기하세요. M3AAWG는 최소 6개월마다 교체하라고 합니다.

삭제하지 말고 폐기하세요. 그래야 검증 측이 이전 셀렉터를 폐기된 것으로 보고합니다. 새 키에 셀렉터 이름을 다시 쓰지 마세요.

11월12월1월2월3월4월5월6월7월
s202611서명7~30일 유지p=(폐기됨)
s202705서명
셀렉터 두 개, 인계 한 번

온라인에서 DKIM 키를 생성해도 안전합니까?

키를 브라우저에서 만들고 전송하지 않는 경우에만 안전합니다. 이 페이지는 네트워크에 닿을 수 없는 격리된 프레임 안에서 Web Crypto로 키를 만들며, 브라우저 개발자 도구에서 직접 확인할 수 있습니다.

일부 온라인 생성기는 서버에서 키를 만들어 응답으로 돌려주는데, 그러면 키가 기록되거나 보관될 수 있습니다. 브라우저에서 만든 키는 저장하기 전까지 내 탭에만 존재합니다.

이 페이지의 다른 스크립트는 키가 들어 있는 프레임을 읽을 수 없으며, 페이지는 오프라인에서도 작동합니다: Wi-Fi를 끄고 다시 생성해 보세요.

브라우저에서 생성격리된 프레임오프라인에서 작동0네트워크 요청
서버에서 생성GET /generate?key_size=2048200 {"private_key": "-----BEGIN…"}기록될 수 있음
개인 키가 이동하는 경로

DKIM 레코드 생성기 FAQ

DKIM 레코드란 무엇입니까?

DKIM 레코드는 selector._domainkey.yourdomain에 두는 TXT 레코드로, 키 쌍의 공개 키 절반을 게시합니다. 메일 서버는 개인 키 절반으로 각 메시지에 서명하고, 수신 서버는 공개 키를 가져와 메시지가 정말 내 도메인에서 왔고 전송 중에 바뀌지 않았는지 확인합니다. RFC 6376에 정의되어 있습니다.

여기서 DKIM 키를 생성해도 안전합니까?

네. 키 쌍은 브라우저의 Web Crypto로, 네트워크 접근이 없는 격리된 프레임 안에서 만들어지며 페이지의 다른 스크립트는 읽을 수 없습니다. 아무것도 전송되지 않습니다: 브라우저 개발자 도구의 네트워크 탭이 비어 있는 것을 볼 수 있고, 연결을 끊고 다시 생성해도 됩니다.

DKIM 키 크기는 얼마로 해야 합니까?

RSA 2048입니다. RFC 8301은 서명 측에 최소 2048비트를 요구하고 Gmail과 Yahoo도 권장하며, 그 레코드는 대부분의 DNS 호스트에 문자열 두 개로 들어갑니다. 1024는 수신 서버가 받아 주는 최소 크기이므로 DNS 호스트가 긴 값을 받지 못할 때만 쓰세요. 4096은 레코드가 길어 일반 DNS 응답에 들어가지 않을 수 있습니다.

Google Workspace나 Microsoft 365에는 DKIM 키가 필요합니까?

아니요. Google Workspace는 Admin console에서 키를 만들어 google._domainkey용 TXT 레코드를 알려 주고, Microsoft 365는 CNAME 레코드 두 개(selector1, selector2) 뒤의 키로 서명합니다. 다른 생성기로 만든 키는 사용되지 않습니다. 생성기에서 발신자를 고르면 정확히 무엇을 게시해야 하는지 볼 수 있습니다.

DKIM 셀렉터란 무엇입니까?

셀렉터는 ._domainkey 앞의 이름으로, 수신 서버가 어느 키를 가져올지 알려 줍니다. 예를 들어 s202610._domainkey.example.com에서는 s202610입니다. 한 도메인이 서버, 서비스, 날짜별로 여러 키를 동시에 가질 수 있게 해 줍니다. 생성기는 날짜가 들어간 셀렉터를 제안하므로 새 키마다 새 이름이 붙고 키 교체가 쉬워집니다.

개인 키는 어떤 형식입니까?

기본은 PKCS#8 PEM(BEGIN PRIVATE KEY)이며 OpenDKIM, rspamd, Exim이 읽습니다. 일부 도구가 안내하는 전통적인 PKCS#1(BEGIN RSA PRIVATE KEY)이나, Amazon SES BYODKIM이 요구하는 헤더와 줄바꿈 없는 base64 한 줄로 바꿀 수 있습니다. 저장할 때는 서명 측만 읽을 수 있는 권한으로 두세요.

한 도메인에 DKIM 레코드를 둘 이상 둘 수 있습니까?

네, 셀렉터가 다르면 가능합니다. 메일에 서명하는 서비스마다 자기 레코드를 둘 수 있고, 키를 교체하는 동안에는 내 키도 잠시 두 개가 됩니다. 다만 한 셀렉터 이름에는 TXT 레코드가 하나만 있어야 합니다. 같은 이름에 두 개가 있으면 결과가 정해지지 않으며 검증 측이 아무거나 고를 수 있습니다.

DKIM 레코드가 255자보다 긴 이유는 무엇입니까?

2048비트 RSA 공개 키는 base64로 392자이므로 레코드 전체는 약 410자입니다. TXT 문자열 하나는 최대 255바이트라서 DNS는 이를 문자열 두 개로 저장하고, 검증 측은 그 사이에 아무것도 넣지 않고 이어 붙입니다. 대부분의 DNS 호스트가 알아서 나눠 주며, Route 53과 Google Cloud DNS는 따옴표로 묶은 문자열이 필요합니다.

DKIM 레코드의 t=y는 무슨 뜻입니까?

t=y는 키가 테스트 중임을 표시합니다. 검증 측은 그 키로 서명한 메일을, 서명이 실패해도 서명 없는 메일과 똑같이 취급해야 합니다. 설정을 확인하는 동안 쓰고 그다음 제거하세요. 테스트 키는 DMARC에 아무 도움이 되지 않습니다. t=s는 다릅니다: 서명의 ID가 서브도메인이 아니라 정확히 내 도메인이어야 한다는 뜻입니다.

DKIM 키는 얼마나 자주 교체해야 합니까?

M3AAWG의 권장대로 최소 6개월마다 교체하세요. 새 셀렉터로 새 키를 게시하고 서명 측을 그 키로 전환한 다음, 서명된 메일이 아직 전송 중인 7~30일 동안 이전 레코드를 유지하세요. 그다음 이전 셀렉터는 삭제하지 말고 빈 p=로 게시해 폐기하세요.

부족한 점이 있습니까?기능 또는 새 도구 제안하기