์•ฝ 25๋ถ„

์•Œ๋ฆผ ๋ฉ”์ผ์ด ์ŠคํŒธํ•จ์œผ๋กœ ๊ฐˆ ๋•Œ SPF, DKIM, DMARC ๋งž์ถ”๊ธฐ

์ด ๊ธ€์˜ ์ˆœ์„œ 11๊ฐœ ์ ˆ
  1. SPF, DKIM, DMARC๊ฐ€ ๊ฐ๊ฐ ๋ณด๋Š” ๋„๋ฉ”์ธ
  2. ๋ฐœ์†ก ์„œ๋น„์Šค๋ฅผ ์“ธ ๋•Œ
  3. dig๋กœ ํ™•์ธํ•˜๊ธฐ
  4. ๋ฐ›์€ ๋ฉ”์ผ์—์„œ ๊ฒฐ๊ณผ ๋ณด๊ธฐ
  5. p=none์—์„œ p=reject๊นŒ์ง€
  6. rua ๋ณด๊ณ ์„œ ์ฝ๊ธฐ
  7. Gmail, Yahoo, Outlook.com ๋ฐœ์‹ ์ž ์š”๊ฑด
  8. Cloudflare DMARC Management๋กœ ๋ณด๊ณ ์„œ ๋ฐ›๊ธฐ
  9. ๋ฉ”์ผ์„ ์“ฐ์ง€ ์•Š๋Š” ๋„๋ฉ”์ธ
  10. ์ ๊ฒ€ํ‘œ
  11. ์ฐธ์กฐ

์ธ์ฆ์„œ ๋งŒ๋ฃŒ ๊ฒฝ๊ณ ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐ›๊ฒŒ ํ•ด ๋‘์—ˆ๋‹ค. ๋ฐœ์†ก ๋กœ๊ทธ์—๋Š” ์ƒ๋Œ€ ์„œ๋ฒ„๊ฐ€ ๋ฉ”์ผ์„ ๋ฐ›์•˜๋‹ค๋Š” 250 ์‘๋‹ต์ด ์ฐํ˜€ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฉ”์ผ์€ ๋ฐ›์€ํŽธ์ง€ํ•จ์ด ์•„๋‹ˆ๋ผ ์ŠคํŒธํ•จ์— ์žˆ๋‹ค. ๋งŒ๋ฃŒ ๋‹น์ผ์—์•ผ ๊ทธ๊ฑธ ์ฐพ๋Š”๋‹ค.

SMTP์˜ 250์€ ์ƒ๋Œ€ ์„œ๋ฒ„๊ฐ€ ๋ฉ”์ผ์„ ๋„˜๊ฒจ๋ฐ›์•˜๋‹ค๋Š” ๋œป์ผ ๋ฟ์ด๋‹ค. ๋ฐ›์€ํŽธ์ง€ํ•จ์— ๋„ฃ์„์ง€ ์ŠคํŒธํ•จ์œผ๋กœ ๋ณด๋‚ผ์ง€๋Š” ๋ฐ›๋Š” ์ชฝ์ด ์—ฌ๋Ÿฌ ์‹ ํ˜ธ๋กœ ์ •ํ•œ๋‹ค. ๊ทธ์ค‘ ๋ฐœ์‹ ์ž๊ฐ€ ์†๋Œˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œํ•œ์ด ๋„๋ฉ”์ธ ์ธ์ฆ์ด๋‹ค. โ€œ์ด ๋ฉ”์ผ์ด ์ •๋ง ์ด ๋„๋ฉ”์ธ์—์„œ ์™”๋‹คโ€๋ฅผ SPF์™€ DKIM์œผ๋กœ ์ฆ๋ช…ํ•˜๊ณ , DMARC๋กœ ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๋ฐœ์‹  ์ฃผ์†Œ์™€ ๋ฌถ๋Š” ์ผ์ด๋‹ค. Gmail๊ณผ Yahoo๋Š” 2024-02๋ถ€ํ„ฐ ์ด๊ฑธ ๋ฐœ์‹ ์ž ์š”๊ฑด์œผ๋กœ ๊ฑธ์—ˆ๋‹ค.

SPF, DKIM, DMARC๊ฐ€ ๊ฐ๊ฐ ๋ณด๋Š” ๋„๋ฉ”์ธ

๋ฉ”์ผ์—๋Š” โ€™๋ณด๋‚ธ ์‚ฌ๋žŒโ€™์ด ์„ธ ๊ตฐ๋ฐ ์žˆ๋‹ค. ์˜ˆ์‹œ ๋„๋ฉ”์ธ example.com์œผ๋กœ ๊ตฌ์กฐ๋งŒ ๋ณด๋ฉด ์ด๋ ‡๋‹ค.

MAIL FROM:<bounce@bounce.example.com>          โ† SMTP ๋ด‰ํˆฌ. SPF ๊ฐ€ ๋ณธ๋‹ค. ๋ฐ›๋Š” ์ชฝ์— Return-Path ๋กœ ๋‚จ๋Š”๋‹ค
From: ์ธ์ฆ์„œ ์•Œ๋ฆผ <alerts@example.com>          โ† ํ—ค๋”. ์‚ฌ๋žŒ์ด ๋ณด๋Š” ์ฃผ์†Œ. DMARC ๊ฐ€ ์ง€ํ‚ค๋Š” ๋„๋ฉ”์ธ
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s1; ...   โ† DKIM ์ด ์ธ์ฆํ•˜๋Š” ๋„๋ฉ”์ธ(d=)

SPF์—์„œ๋Š” ๋ฐ›๋Š” ์„œ๋ฒ„๊ฐ€ MAIL FROM ๋„๋ฉ”์ธ์˜ SPF ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ , ์ ‘์†ํ•œ IP๊ฐ€ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. SPF๋Š” HELO ์ด๋ฆ„๋„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ DMARC๋Š” MAIL FROM ๊ฒฐ๊ณผ๋งŒ ์“ด๋‹ค.

DKIM์—์„œ๋Š” ๋ณด๋‚ด๋Š” ์ชฝ์ด ํ—ค๋”์™€ ๋ณธ๋ฌธ์„ ๊ฐœ์ธํ‚ค๋กœ ์„œ๋ช…ํ•ด DKIM-Signature๋ฅผ ๋ถ™์ธ๋‹ค. ๋ฐ›๋Š” ์ชฝ์€ s=(์…€๋ ‰ํ„ฐ)์™€ d=(๋„๋ฉ”์ธ)๋กœ s1._domainkey.example.com TXT์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๊ฐ€์ ธ์™€ ๊ฒ€์ฆํ•œ๋‹ค.

DMARC์—์„œ๋Š” ๋ฐ›๋Š” ์ชฝ์ด ํ—ค๋” From์˜ ๋„๋ฉ”์ธ์œผ๋กœ _dmarc.example.com TXT๋ฅผ ์ฐพ๋Š”๋‹ค. SPF๊ฐ€ pass์ด๊ณ  ๊ทธ ๋„๋ฉ”์ธ์ด From๊ณผ ์ •๋ ฌ๋˜๊ฑฐ๋‚˜, DKIM์ด pass์ด๊ณ  d=๊ฐ€ From๊ณผ ์ •๋ ฌ๋˜๋ฉด DMARC pass๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฉด ๋œ๋‹ค.

์„ธ ํ‘œ์ค€์€ ๋”ฐ๋กœ ๋‚˜์™”๋‹ค. DKIM์€ RFC 6376(2011-09), SPF๋Š” RFC 7208(2014-04)์ด๋‹ค. DMARC๋Š” 2015-03์— RFC 7489๋กœ ๋‚˜์™”๋Š”๋ฐ, IETF ์ž‘์—…๋ฐ˜์ด ์•„๋‹Œ ๋…๋ฆฝ ์ œ์ถœ์ด๋ผ Informational ๋ฌธ์„œ์˜€๋‹ค. 2026-05์— RFC 9989(DMARC, Standards Track), RFC 9990(์ง‘๊ณ„ ๋ณด๊ณ ), RFC 9991(์‹คํŒจ ๋ณด๊ณ )์ด ๋‚˜์™€ RFC 7489๋ฅผ ๋Œ€์ฒดํ–ˆ๋‹ค.

์ •๋ ฌ(alignment)

RFC 9989์— ๋‚˜์˜ค๋Š” ์˜ˆ๋‹ค.

์ธ์ฆ๋œ ๋„๋ฉ”์ธ From ๋„๋ฉ”์ธ ์ •๋ ฌ
foo.example.com news.example.com relaxed: ์กฐ์ง ๋„๋ฉ”์ธ(example.com)์ด ๊ฐ™๋‹ค
news.example.com news.example.com strict: ์™„์ „ํžˆ ๊ฐ™๋‹ค
foo.example.net news.example.com ์ •๋ ฌ ์•ˆ ๋จ

์ •๋ ฌ์ด ์•ˆ ๋˜๋ฉด SPF์™€ DKIM์ด pass์—ฌ๋„ DMARC์—๋Š” ์†Œ์šฉ์ด ์—†๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ์ž๊ธฐ ๋„๋ฉ”์ธ์— SPF๋ฅผ ๊ฑธ๊ณ  pass๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์–ด๋А ๋„๋ฉ”์ธ์œผ๋กœ๋“  DKIM ์„œ๋ช…์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ relaxed(adkim=r, aspf=r)๋‹ค. RFC 9989๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋„๋ฉ”์ธ ์†Œ์œ ์ž์—๊ฒŒ relaxed๋กœ ์ถฉ๋ถ„ํ–ˆ๋‹ค๊ณ  ์ ๋Š”๋‹ค.

์กฐ์ง ๋„๋ฉ”์ธ์„ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ”๋€Œ์—ˆ๋‹ค. RFC 7489๋Š” Public Suffix List๋ฅผ ์ผ๊ณ , RFC 9989๋Š” DNS ํŠธ๋ฆฌ๋ฅผ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š” โ€™DNS Tree Walkโ€™๋กœ ๋ฐ”๊ฟจ๋‹ค. ๋‘ ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ๋‹ต์„ ๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, RFC 9989๋Š” strict ์ •๋ ฌ๊ณผ From ๋„๋ฉ”์ธ๋งˆ๋‹ค DMARC ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‘๋ฉด ์ด ์ฐจ์ด๋ฅผ ํ”ผํ•œ๋‹ค๊ณ  ์ ๋Š”๋‹ค.

์ „๋‹ฌ๋˜๋ฉด SPF๋Š” ๊นจ์ง„๋‹ค

๋ฉ”์ผ์ด ๋‹ค๋ฅธ ์ฃผ์†Œ๋กœ ์ „๋‹ฌ๋˜๋ฉด ๋‹ค์Œ ์„œ๋ฒ„๋Š” ์ „๋‹ฌ ์„œ๋ฒ„์˜ IP์—์„œ ๋ฉ”์ผ์„ ๋ฐ›๋Š”๋‹ค. ์ „๋‹ฌ ์„œ๋ฒ„๊ฐ€ MAIL FROM์„ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉด SPF๋Š” ์‹คํŒจํ•œ๋‹ค. DKIM ์„œ๋ช…์€ ๋Œ€๊ฐœ ์‚ด์•„๋‚จ๋Š”๋‹ค. ๊ทธ๋ž˜์„œ RFC 9989๋Š” p=reject๋ฅผ ์“ฐ๋Š” ๋„๋ฉ”์ธ์ด SPF๋งŒ์œผ๋กœ DMARC pass๋ฅผ ๋ฐ›์•„์„œ๋Š” ์•ˆ ๋˜๊ณ  DKIM ์„œ๋ช…์„ ํ•ด์•ผ ํ•œ๋‹ค(MUST)๊ณ  ์ ๋Š”๋‹ค. Google๋„ SPF์™€ DKIM ์–‘์ชฝ ์ •๋ ฌ์„ ๊ถŒํ•˜๋ฉฐ, ๋‘˜ ๋‹ค ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์ค‘์— ์š”๊ฑด์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  FAQ์— ์ ์—ˆ๋‹ค.

๋ฐœ์†ก ์„œ๋น„์Šค๋ฅผ ์“ธ ๋•Œ

๋จผ์ € ๊ทธ ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ค MAIL FROM๊ณผ d=๋กœ ๋ณด๋‚ด๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์„œ๋น„์Šค ์ž์‹ ์˜ ๋„๋ฉ”์ธ์„ ์“ฐ๋ฉด From๊ณผ ์ •๋ ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. Amazon SES ๋ฌธ์„œ๋กœ ์˜ˆ๋ฅผ ๋“ ๋‹ค.

SES๋Š” ๊ธฐ๋ณธ์œผ๋กœ amazonses.com์˜ ํ•˜์œ„ ๋„๋ฉ”์ธ์„ MAIL FROM์œผ๋กœ ์“ด๋‹ค. SPF๋Š” ๊ทธ ๋„๋ฉ”์ธ์œผ๋กœ passํ•˜์ง€๋งŒ From(example.com)๊ณผ ์ •๋ ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • MAIL FROM์„ ์“ฐ๋ฉด MAIL FROM์ด bounce.example.com ๊ฐ™์€ ๋‚ด ์„œ๋ธŒ๋„๋ฉ”์ธ์ด ๋˜๊ณ , relaxed ์ •๋ ฌ๋กœ example.com๊ณผ ์ •๋ ฌ๋œ๋‹ค. ๊ฒ€์ฆํ•œ ๋„๋ฉ”์ธ์˜ ํ•˜์œ„ ๋„๋ฉ”์ธ์ด์–ด์•ผ ํ•˜๊ณ , ๋ฉ”์ผ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๋Š” ๋ฐ ์“ฐ์ง€ ์•Š๋Š” ์ด๋ฆ„์ด์–ด์•ผ ํ•œ๋‹ค. MX๋Š” ์ •ํ™•ํžˆ ํ•˜๋‚˜๋งŒ ๋‘”๋‹ค.

Easy DKIM์„ ์ผœ๋ฉด SES๊ฐ€ ๋‚ด ๋„๋ฉ”์ธ(d=example.com)์œผ๋กœ ์„œ๋ช…ํ•œ๋‹ค. ๊ธฐ๋ณธ 2048๋น„ํŠธ์ด๊ณ , ์ฝ˜์†”์ด ์ฃผ๋Š” CNAME 3๊ฐœ๋ฅผ DNS์— ๋„ฃ๋Š”๋‹ค.

; ๋ฐ˜์†ก์šฉ MAIL FROM ์„œ๋ธŒ๋„๋ฉ”์ธ โ€” SPF ์ •๋ ฌ
bounce.example.com.              MX     10 feedback-smtp.us-east-1.amazonses.com.
bounce.example.com.              TXT    "v=spf1 include:amazonses.com ~all"
; Easy DKIM โ€” ์ฝ˜์†”์˜ 'Publish DNS records' ๊ฐ’ ๊ทธ๋Œ€๋กœ (ํ† ํฐยทํ˜ธ์ŠคํŒ… ์กด์€ ๋ฆฌ์ „ยท๊ณ„์ •๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค)
<ํ† ํฐ1>._domainkey.example.com.  CNAME  <ํ† ํฐ1>.<์ฝ˜์†”์— ํ‘œ์‹œ๋œ ํ˜ธ์ŠคํŒ… ์กด>.
; (๊ฐ™์€ ํ˜•์‹์œผ๋กœ 2๊ฐœ ๋”)
; DMARC โ€” ์ฒ˜์Œ์—” ๊ฐ์‹œ๋งŒ
_dmarc.example.com.              TXT    "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

์ด ๊ตฌ์„ฑ์—์„œ๋Š” example.com์˜ SPF์— include:amazonses.com์ด ํ•„์š” ์—†๋‹ค. SPF๋Š” MAIL FROM ๋„๋ฉ”์ธ(bounce.example.com)์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. apex SPF์— ์„œ๋น„์Šค๋งˆ๋‹ค include๋ฅผ ์Œ“์œผ๋ฉด ๋’ค์— ๋‚˜์˜ฌ 10ํšŒ ํ•œ๋„์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค.

SES์˜ โ€™MX ์‹คํŒจ ์‹œ ๋™์ž‘โ€™์ด โ€™๊ธฐ๋ณธ MAIL FROM ์‚ฌ์šฉโ€™์ด๋ฉด MX ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ฌ๋ผ์ ธ๋„ ๋ฉ”์ผ์€ ๊ณ„์† ๋‚˜๊ฐ€์ง€๋งŒ, MAIL FROM์ด amazonses.com์œผ๋กœ ๋Œ์•„๊ฐ€ SPF ์ •๋ ฌ์ด ์กฐ์šฉํžˆ ๊นจ์ง„๋‹ค. ์ด๋•Œ DMARC๊ฐ€ ๋ฒ„ํ‹ฐ๋ ค๋ฉด DKIM์ด ์ •๋ ฌ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. SPF์™€ DKIM์„ ๋‘˜ ๋‹ค ๋งž์ถฐ ๋‘๋Š” ์ด์œ ๋‹ค.

DKIM ํ‚ค๋ฅผ CNAME์œผ๋กœ ์„œ๋น„์Šค์— ๋งก๊ธฐ๋Š” ๋ฐฉ์‹์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์“ด๋‹ค. Microsoft 365๋Š” selector1๊ณผ selector2 ๋‘ CNAME์„ ๊ฑธ์–ด ๋‘๊ณ , ํ•˜๋‚˜๋กœ ์„œ๋ช…ํ•˜๋‹ค๊ฐ€ ํ‚ค๋ฅผ ๊ต์ฒดํ•˜๋ฉด ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค(Microsoft Learn). 2026-10-15์˜ microsoft.com์ด ๊ทธ ๋ชจ์–‘์ด๋‹ค.

dig +noall +answer TXT selector2._domainkey.microsoft.com
selector2._domainkey.microsoft.com. 3600 IN CNAME selector2-microsoft-com._domainkey.microsoft.onmicrosoft.com.
selector2-microsoft-com._domainkey.microsoft.onmicrosoft.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPkb8bu8RGWeJGk3hโ€ฆ"

selector1 ์ชฝ CNAME ๋Œ€์ƒ์—๋Š” ์ด๋‚  TXT๊ฐ€ ์—†์—ˆ๋‹ค. ์ง€๊ธˆ์€ ์“ฐ์ง€ ์•Š๋Š” ์ชฝ ์…€๋ ‰ํ„ฐ๋กœ ๋ณด์ธ๋‹ค.

dig๋กœ ํ™•์ธํ•˜๊ธฐ

DMARC

dig +short TXT _dmarc.example.com
"v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s"

example.com์€ ๋ฉ”์ผ์„ ์“ฐ์ง€ ์•Š๋Š” ๋„๋ฉ”์ธ์˜ ๊ตฌ์„ฑ์ด๋‹ค. strict ์ •๋ ฌ์— reject๋‹ค. ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›๋Š” ๋„๋ฉ”์ธ์ด๋ผ๋ฉด rua๊ฐ€ ๋ณด์ธ๋‹ค.

dig +short TXT _dmarc.cloudflare.com
"v=DMARC1; p=reject; sp=reject; adkim=r; aspf=r; pct=100; rua=mailto:a1c47f179bc04efd8ee4dcd4d85dfc65@dmarc-reports.cloudflare.net,mailto:rua@cloudflare.com"

๋ณด๊ณ ์„œ๋ฅผ ๋‘ ๊ณณ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ์•ž์˜ ์ฃผ์†Œ๋Š” Cloudflare์˜ dmarc-reports.cloudflare.net ๋„๋ฉ”์ธ์ด๋‹ค. pct=100์€ RFC 7489์˜ ํƒœ๊ทธ๋กœ, RFC 9989์—์„œ๋Š” ๋น ์กŒ๋‹ค.

  • v=DMARC1์ด ๋งจ ์•ž์ด์–ด์•ผ ํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ๋ ˆ์ฝ”๋“œ ์ „์ฒด๊ฐ€ ๋ฌด์‹œ๋œ๋‹ค
  • _dmarc์— DMARC ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‘ ๊ฐœ๋ฉด ๋‘˜ ๋‹ค ๋ฒ„๋ ค์ง„๋‹ค(RFC 9989 ยง4.10). ์„œ๋น„์Šค๋ฅผ ๋ถ™์ด๋ฉด์„œ ์ƒˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ๋ง๊ณ  ๊ธฐ์กด ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ์นœ๋‹ค
  • From์ด alerts.example.com์ธ๋ฐ ๊ทธ ์ด๋ฆ„์— ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ˆ˜์‹ ์ž๋Š” ์ƒ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€ _dmarc.example.com์„ ์“ด๋‹ค. ์ด๋•Œ ํ•˜์œ„ ๋„๋ฉ”์ธ์—๋Š” sp=(์—†์œผ๋ฉด p=)๊ฐ€, DNS์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฆ„์—๋Š” np=๊ฐ€ ์ ์šฉ๋œ๋‹ค
  • +short๋Š” ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธด๋‹ค. NXDOMAIN์ด๋‚˜ SERVFAIL์€ +short๋ฅผ ๋นผ๊ณ  status:๋กœ ๋ณธ๋‹ค

SPF

dig +short TXT example.com
"v=spf1 -all"
"_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"

TXT๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์—ฌ๋„ ๋˜์ง€๋งŒ v=spf1๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค. ๋‘˜ ์ด์ƒ์ด๋ฉด permerror๋‹ค(RFC 7208 ยง4.5). ๋‘ ๋ฒˆ์งธ ์ค„์€ ๋‹ค๋ฅธ ์šฉ๋„์˜ TXT๋‹ค.

include, a, mx, ptr, exists, redirect๋Š” ํ‰๊ฐ€ํ•  ๋•Œ DNS ์กฐํšŒ๋ฅผ ์ผ์œผํ‚ค๊ณ , include ์•ˆ์˜ ๊ฒƒ๊นŒ์ง€ ํ•ฉ์ณ 10ํšŒ๋ฅผ ๋„˜์œผ๋ฉด permerror๋‹ค(RFC 7208 ยง4.6.4). ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ๋น„๋Š” โ€™void lookupโ€™์€ 2ํšŒ๋กœ ์ œํ•œํ•˜๋ผ๊ณ  ๊ถŒํ•œ๋‹ค. ์„ธ์–ด ๋ณด๋Š” ์Šคํฌ๋ฆฝํŠธ๋‹ค.

#!/bin/bash
# spf-count.sh โ€” SPF ํ‰๊ฐ€์— DNS ์กฐํšŒ๊ฐ€ ๋“œ๋Š” ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ์„ผ๋‹ค (RFC 7208 ํ•œ๋„ 10)
# ์‚ฌ์šฉ๋ฒ•: ./spf-count.sh example.com
count() {
  local rec t n=0
  # 255์ž๋ฅผ ๋„˜๋Š” TXT ๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋‰˜์–ด ์˜จ๋‹ค โ€” ๊ณต๋ฐฑ ์—†์ด ์ด์–ด ๋ถ™์ธ๋‹ค
  rec=$(dig +short TXT "$1" | sed 's/" "//g; s/"//g' | grep -i '^v=spf1 ')
  for t in $rec; do
    case "${t#[-+~?]}" in
      include:*)  n=$((n + 1 + $(count "${t#*:}"))) ;;
      redirect=*) n=$((n + 1 + $(count "${t#*=}"))) ;;
      a|a:*|a/*|mx|mx:*|mx/*|ptr|ptr:*|exists:*) n=$((n + 1)) ;;
    esac
  done
  echo "$n"
}
echo "$1: $(count "$1")"
$ ./spf-count.sh cloudflare.com
cloudflare.com: 7
$ ./spf-count.sh example.com
example.com: 0

cloudflare.com์€ include 6๊ฐœ์™€, ๊ทธ์ค‘ ํ•œ include ์•ˆ์˜ exists 1๊ฐœ๋กœ 7ํšŒ๋‹ค. ํ•œ๋„๊นŒ์ง€ 3ํšŒ ๋‚จ์•˜๋‹ค. mx์—๋Š” ๋ณ„๋„ ํ•œ๋„๋„ ์žˆ๋‹ค. ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”์ผ ํ˜ธ์ŠคํŠธ๋“ค์˜ ์ฃผ์†Œ(AยทAAAA) ์กฐํšŒ๊ฐ€ 10๊ฐœ๋ฅผ ๋„˜์œผ๋ฉด ๊ทธ mx๋Š” permerror๋‹ค.

DKIM

์…€๋ ‰ํ„ฐ ์ด๋ฆ„์€ ๋ฐ›์€ ๋ฉ”์ผ์˜ DKIM-Signature ํ—ค๋” s=์— ์žˆ๋‹ค. Google Workspace์˜ ๊ธฐ๋ณธ ์…€๋ ‰ํ„ฐ๋Š” google์ด๋‹ค.

dig +short TXT selector1._domainkey.example.com
"v=DKIM1; p="

example.com์€ *._domainkey.example.com์— ์™€์ผ๋“œ์นด๋“œ๋กœ ์ด ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‘”๋‹ค. ์–ด๋А ์…€๋ ‰ํ„ฐ๋ฅผ ๋ฌผ์–ด๋„ ๊ฐ™๋‹ค. RFC 6376์—์„œ ๋นˆ p=๋Š” ํ๊ธฐ๋œ ํ‚ค๋ผ๋Š” ๋œป์ด๋ผ, ์ด ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋œ DKIM ์„œ๋ช…์€ ๋ชจ๋‘ ์‹คํŒจํ•œ๋‹ค.

ํ‚ค ๊ธธ์ด๋Š” ์ด๋ ‡๊ฒŒ ํ™•์ธํ•œ๋‹ค. ์•ž์˜ microsoft.com ์…€๋ ‰ํ„ฐ๋‹ค.

dig +short TXT selector2._domainkey.microsoft.com | sed 's/" "//g; s/"//g' | tail -1 \
  | sed 's/.*p=//; s/;.*//' | base64 -d | openssl pkey -pubin -inform DER -noout -text | head -1
Public-Key: (1024 bit)

RFC 8301(2018-01)์€ DKIM ์„œ๋ช…์— rsa-sha1์„ ๊ธˆ์ง€ํ•˜๊ณ , ์„œ๋ช…์ž๊ฐ€ RSA 1024๋น„ํŠธ ์ด์ƒ์„ ์จ์•ผ ํ•˜๋ฉฐ(MUST) 2048๋น„ํŠธ ์ด์ƒ์„ ๊ถŒํ•œ๋‹ค(SHOULD). ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค๋ฉด 2048๋น„ํŠธ๋กœ ํ•œ๋‹ค. 2048๋น„ํŠธ ๊ณต๊ฐœํ‚ค๋Š” base64๋กœ 392์ž๋ผ TXT ํ•œ ๋ฌธ์ž์—ด(255์ž)์— ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋ˆ  ๋„ฃ๊ณ , ๊ฒ€์ฆํ•˜๋Š” ์ชฝ์€ ๊ณต๋ฐฑ ์—†์ด ์ด์–ด ๋ถ™์ธ๋‹ค(RFC 6376 ยง3.6.2.2).

MX์™€ PTR

dig +short MX example.com
0 .

์šฐ์„ ์ˆœ์œ„ 0์— ์ด๋ฆ„์ด .์ธ MX๋Š” โ€˜null MXโ€™(RFC 7505)๋‹ค. ์ด ๋„๋ฉ”์ธ์€ ๋ฉ”์ผ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ํ‘œ์‹œ๋‹ค.

์ง์ ‘ ์šด์˜ํ•˜๋Š” ์„œ๋ฒ„์—์„œ ๋ณด๋‚ธ๋‹ค๋ฉด PTR(์—ญ๋ฐฉํ–ฅ DNS)์„ ๋ณธ๋‹ค. Gmail๊ณผ Yahoo๋Š” ๋ชจ๋“  ๋ฐœ์‹ ์ž์—๊ฒŒ ๋ฐœ์†ก IP์˜ ์ •๋ฐฉํ–ฅยท์—ญ๋ฐฉํ–ฅ DNS๊ฐ€ ์œ ํšจํ•  ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค. ์—ญ๋ฐฉํ–ฅ ์ด๋ฆ„์„ ๋‹ค์‹œ ์ •๋ฐฉํ–ฅ์œผ๋กœ ์ฐพ์œผ๋ฉด ๊ฐ™์€ IP๊ฐ€ ๋‚˜์™€์•ผ ํ•œ๋‹ค.

dig -x 209.85.220.41 +short
dig +short A mail-sor-f41.google.com
mail-sor-f41.google.com.
209.85.220.41

๋ฐ”๊พผ ์งํ›„์—๋Š”

๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ”๊พผ ์งํ›„๋ผ๋ฉด ๋ฆฌ์กธ๋ฒ„๋งˆ๋‹ค ์˜› ๊ฐ’์ด TTL ๋™์•ˆ ๋‚จ๋Š”๋‹ค. certdesk DNS ์ „ํŒŒ ํ™•์ธ์˜ _dmarc TXT ๋น ๋ฅธ ์ž…๋ ฅ์€ ์ž…๋ ฅ๋ž€์˜ ์ด๋ฆ„ ์•ž์— _dmarc.๋ฅผ ๋ถ™์—ฌ TXT๋กœ ์กฐํšŒํ•˜๊ณ , ๊ถŒํ•œ ๋„ค์ž„์„œ๋ฒ„์™€ ๊ตญ๋‚ด ํ†ต์‹  3์‚ฌ, ๊ณต์šฉ DNS์˜ ์‘๋‹ต์„ ๋‚˜๋ž€ํžˆ ๋ณด์—ฌ ์ค€๋‹ค. MX์™€ ์…€๋ ‰ํ„ฐ._domainkey TXT๋„ ๊ฐ™์€ ํ™”๋ฉด์—์„œ ๋ณธ๋‹ค. ์ „ํŒŒ ์ง€์—ฐ ์ž์ฒด๋Š” DNS ์ „ํŒŒ ํ™•์ธ์— ๋”ฐ๋กœ ์ ์—ˆ๋‹ค.

๋ฐ›์€ ๋ฉ”์ผ์—์„œ ๊ฒฐ๊ณผ ๋ณด๊ธฐ

DNS๊ฐ€ ๋งž์•„๋„ ์‹ค์ œ ๋ฉ”์ผ์ด ํ†ต๊ณผํ•˜๋Š”์ง€๋Š” ๋ฐ›์€ ๋ฉ”์ผ๋กœ ํ™•์ธํ•œ๋‹ค. Gmail ์›น์—์„œ๋Š” ๋ฉ”์ผ์„ ์—ด๊ณ  ๋‹ต์žฅ ์˜† ๋”๋ณด๊ธฐ(โ‹ฎ) โ†’ ์›๋ณธ ๋ณด๊ธฐ(Show original)๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ „์ฒด ํ—ค๋”๊ฐ€ ์—ด๋ฆฐ๋‹ค. ์ˆ˜์‹  ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ํ‘œ์ค€ ํ—ค๋”๋Š” Authentication-Results(RFC 8601)๋‹ค. ํ˜•์‹์€ ์ด๋ ‡๋‹ค(๊ฐ’์€ ์˜ˆ์‹œ).

Authentication-Results: mx.receiver.example;
       dkim=pass header.d=example.com;
       spf=pass smtp.mailfrom=bounce.example.com;
       dmarc=pass header.from=example.com

dkim=์˜ header.d๊ฐ€ ์„œ๋ช… ๋„๋ฉ”์ธ์ด๋‹ค. header.from๊ณผ ์ •๋ ฌ๋˜๋Š”์ง€ ๋ณธ๋‹ค. spf=์˜ smtp.mailfrom์€ MAIL FROM ๋„๋ฉ”์ธ์ด๋‹ค. ์—ฌ๊ธฐ์— ์„œ๋น„์Šค ๋„๋ฉ”์ธ์ด ๋ณด์ด๋ฉด SPF ์ •๋ ฌ์€ ์•ˆ ๋œ ๊ฒƒ์ด๋‹ค. ์ตœ์ข… ํŒ์ •์€ dmarc=๋‹ค.

p=none์—์„œ p=reject๊นŒ์ง€

RFC 9989 5.1์ ˆ์€ ๋„๋ฉ”์ธ ์†Œ์œ ์ž๊ฐ€ ๋ฐŸ์„ ์ˆœ์„œ๋ฅผ ์ด๋ ‡๊ฒŒ ์ ๋Š”๋‹ค.

  1. SPF์™€ DKIM์„ From๊ณผ ์ •๋ ฌ๋˜๊ฒŒ ๋งž์ถ˜๋‹ค
  2. ์ง‘๊ณ„ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›์„ ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ ๋‹ค
  3. p=none๊ณผ rua๋กœ DMARC ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ•œ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๊ฐ์‹œ ๋ชจ๋“œ(Monitoring Mode)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค
  4. ๋ณด๊ณ ์„œ๋กœ ๋ชจ๋“  ๋ฐœ์†ก์›์„ ํ™•์ธํ•œ๋‹ค. ์ •๋ ฌ์ด ์•ˆ ๋œ ์ •์ƒ ๋ฉ”์ผ์€ ๊ฐ•์ œ ๋‹จ๊ณ„(quarantine, reject)๋กœ ๊ฐ€๊ธฐ ์ „์— ๊ณ ์ณ์•ผ ํ•œ๋‹ค(MUST)
  5. ๊ฐ•์ œ ๋‹จ๊ณ„๋กœ ๊ฐˆ์ง€ ์ •ํ•œ๋‹ค. RFC๋Š” ๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ํ™•์‹ ํ•˜๊ธฐ๊นŒ์ง€ ์—ฌ๋Ÿฌ ๋‹ฌ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ ๋Š”๋‹ค

RFC 9989์—์„œ ๋ฐ”๋€ ํƒœ๊ทธ

ํƒœ๊ทธ ๋œป ๊ธฐ๋ณธ๊ฐ’ยท๋น„๊ณ 
v DMARC1, ๋งจ ์•ž ํ•„์ˆ˜
p noneยทquarantineยทreject ์—†์œผ๋ฉด none์œผ๋กœ ๋ณธ๋‹ค
sp ์กด์žฌํ•˜๋Š” ํ•˜์œ„ ๋„๋ฉ”์ธ์˜ ์ •์ฑ… ์—†์œผ๋ฉด p
np ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•˜์œ„ ๋„๋ฉ”์ธ์˜ ์ •์ฑ… ์‹ ๊ทœ. ์—†์œผ๋ฉด sp, ๊ทธ๊ฒƒ๋„ ์—†์œผ๋ฉด p
adkimยทaspf DKIMยทSPF ์ •๋ ฌ r(relaxed)ยทs(strict) r
rua ์ง‘๊ณ„ ๋ณด๊ณ ์„œ ๋ฐ›์„ ์ฃผ์†Œ ์—†์œผ๋ฉด ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค
rufยทfo ๋ฉ”์ผ ๋‹จ์œ„ ์‹คํŒจ ๋ณด๊ณ ์„œ์™€ ๊ทธ ์กฐ๊ฑด
t y๋ฉด ์ •์ฑ…์„ ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์ถฐ ์ ์šฉ(์‹œํ—˜) ์‹ ๊ทœ, pct ๋Œ€์ฒด. ๊ธฐ๋ณธ n
psd ๊ณต์šฉ ์ ‘๋ฏธ์‚ฌ ๋„๋ฉ”์ธ ์—ฌ๋ถ€ ์‹ ๊ทœ, ๊ธฐ๋ณธ u
pctยทrfยทri RFC 7489์˜ ๋น„์œจยท๋ณด๊ณ  ํ˜•์‹ยท๋ณด๊ณ  ์ฃผ๊ธฐ RFC 9989์—์„œ ์‚ญ์ œ(historic)

pct๊ฐ€ ๋น ์ง„ ์ด์œ ๋„ RFC์— ์žˆ๋‹ค. 0๊ณผ 100์ด ์•„๋‹Œ ๊ฐ’์€ ๊ตฌํ˜„๋งˆ๋‹ค ์ œ๊ฐ๊ฐ ์ ์šฉ๋๊ณ , ์‹ค์ œ๋กœ ์“ธ๋ชจ๊ฐ€ ์žˆ๋˜ ๊ฒƒ์€ pct=0์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์—ญํ• ๋งŒ t=y๋กœ ๋‚จ๊ฒผ๋‹ค.

๋‹จ๊ณ„๋ณ„ ๋ ˆ์ฝ”๋“œ

๋‹จ๊ณ„ ๋ ˆ์ฝ”๋“œ ํ™•์ธํ•  ๊ฒƒ
๊ฐ์‹œ v=DMARC1; p=none; rua=mailto:dmarc@example.com ๋ณด๊ณ ์„œ์— ๋‚˜์˜จ ๋ชจ๋“  ๋ฐœ์†ก์›์ด ์ •๋ ฌ๋˜๋Š”์ง€
์‹œํ—˜ v=DMARC1; p=quarantine; t=y; pct=0; rua=mailto:dmarc@example.com ์‹ค์ œ ์ฒ˜๋ฆฌ๋Š” none. ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ๋“ฑ ์ค‘๊ณ„๋ฅผ ๊ฑฐ์น˜๋Š” ํ๋ฆ„์„ ๋ณด๊ณ ์„œ๋กœ ํŒŒ์•…(RFC 9989 ๋ถ€๋ก A.6)
๊ฒฉ๋ฆฌ v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com ์ŠคํŒธํ•จ์œผ๋กœ ๊ฐ„ ์ •์ƒ ๋ฉ”์ผ์ด ์—†๋Š”์ง€
๊ฑฐ๋ถ€ v=DMARC1; p=reject; rua=mailto:dmarc@example.com

์‹œํ—˜ ๋‹จ๊ณ„์— t=y์™€ pct=0์„ ํ•จ๊ป˜ ์ ์€ ๋ฐ๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค. RFC 7489๋งŒ ๊ตฌํ˜„ํ•œ ์ˆ˜์‹ ์ž๋Š” t๋ฅผ ๋ชจ๋ฅด๋Š” ํƒœ๊ทธ๋กœ ๋ฌด์‹œํ•˜๊ณ (7489๋„ ๋ชจ๋ฅด๋Š” ํƒœ๊ทธ๋Š” ๋ฌด์‹œํ•˜๊ฒŒ ํ•œ๋‹ค), RFC 9989์—๋Š” pct๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ทœ์น™์ด ์—†๋‹ค(๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ historic). ๋‘˜ ๋‹ค โ€œํ•œ ๋‹จ๊ณ„ ๋‚ฎ์ถฐ ์ ์šฉโ€์ด๋ผ๋Š” ๊ฐ™์€ ๋œป์ด๋‹ค. 7489์˜ pct=0์€ quarantine์„ ์ผ๋ฐ˜ ๋ถ„๋ฅ˜๋กœ, reject๋ฅผ quarantine์œผ๋กœ ๋‚ฎ์ถ˜๋‹ค. ๋‘ ์ข…๋ฅ˜์˜ ์ˆ˜์‹ ์ž๊ฐ€ ์„ž์ธ ์ง€๊ธˆ์€ ํ•จ๊ป˜ ์ ์–ด์•ผ ๋œป์ด ๊ณ ๋ฅด๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค. pct=10 ๊ฐ™์€ ์ค‘๊ฐ„ ๊ฐ’์€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

reject ์ „์— (RFC 9989 7.4์ ˆ)

  • ์‚ฌ๋žŒ์ด ์“ฐ๋Š” ๋ฉ”์ผ ๋„๋ฉ”์ธ, ํŠนํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ„ฐ๋„ท ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ๊ธ€์„ ์“ฐ๋Š” ๋„๋ฉ”์ธ์€ p=reject๋ฅผ ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค(SHOULD NOT). ๊ทธ๋ž˜๋„ ์“ฐ๋ ค๋ฉด p=none์„ ์ตœ์†Œ ํ•œ ๋‹ฌ, ์ด์–ด์„œ p=quarantine์„ ๊ฐ™์€ ๊ธฐ๊ฐ„ ๋‘๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๋ผ๊ณ  ์ ๋Š”๋‹ค
  • p=reject ๋„๋ฉ”์ธ์€ DKIM ์„œ๋ช…์ด ํ•„์ˆ˜๋‹ค(์•ž์˜ ์ „๋‹ฌ ๋ฌธ์ œ)
  • ๋ฐ›๋Š” ์ชฝ๋„ p=reject๋งŒ ๋ณด๊ณ  ๊ฑฐ๋ถ€ํ•ด์„œ๋Š” ์•ˆ ๋˜๊ณ , ๋‹ค๋ฅธ ํŒ๋‹จ ๊ทผ๊ฑฐ๊ฐ€ ์—†์œผ๋ฉด quarantine์ฒ˜๋Ÿผ ๋‹ค๋ค„์•ผ ํ•œ๋‹ค(MUST NOT). reject๊ฐ€ ๊ณง โ€™๋ฐ˜๋“œ์‹œ ๋ฐ˜์†กโ€™์€ ์•„๋‹ˆ๋‹ค

์•Œ๋ฆผ์ด๋‚˜ ์šด์˜ ๋ฉ”์ผ์€ ์ „์šฉ ์„œ๋ธŒ๋„๋ฉ”์ธ์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ”ผํ•œ๋‹ค. alerts.example.com์„ From์œผ๋กœ ์“ฐ๊ณ  _dmarc.alerts.example.com์— ๋”ฐ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‘๋ฉด, ์‚ฌ๋žŒ์ด ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์— ์“ธ ์ผ์ด ์—†๊ณ  ๋ฐœ์†ก์›์ด ์ •ํ•ด์ ธ ์žˆ์–ด ๋ณด๊ณ ์„œ ํ™•์ธ์ด ์งง๋‹ค. ์ฃผ ๋„๋ฉ”์ธ์€ ์ œ ์†๋„๋กœ ๋‹จ๊ณ„๋ฅผ ์˜ฌ๋ฆฐ๋‹ค. ๋‹ค๋งŒ Gmail์˜ ๋Œ€๋Ÿ‰ ๋ฐœ์‹ ์ž ๊ณ„์‚ฐ์€ ์ฃผ ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ํ•ฉ์‚ฐํ•˜๋ฏ€๋กœ, ๋‚˜๋ˆˆ๋‹ค๊ณ  5,000ํ†ต ๊ธฐ์ค€์„ ํ”ผํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค.

rua ๋ณด๊ณ ์„œ ์ฝ๊ธฐ

์ˆ˜์‹ ์ž๋Š” ํ•˜๋ฃจ ๋‹จ์œ„(๋˜๋Š” ๋” ์ž์ฃผ)๋กœ ์ง‘๊ณ„ ๋ณด๊ณ ์„œ๋ฅผ rua ์ฃผ์†Œ์— ๋ณด๋‚ธ๋‹ค(RFC 9990). ํ˜•์‹์€ ์ด๋ ‡๋‹ค.

  • XML ํŒŒ์ผ์„ gzip์œผ๋กœ ์••์ถ•ํ•ด(๊ถŒ์žฅ) ์ฒจ๋ถ€ํ•œ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์€ ์ˆ˜์‹ ์ž!์ •์ฑ…๋„๋ฉ”์ธ!์‹œ์ž‘!๋.xml.gz(์‹œ๊ฐ์€ ์œ ๋‹‰์Šค ์ดˆ)
  • ์ œ๋ชฉ์€ Report Domain: example.com Submitter: ์ˆ˜์‹ ์ž๋„๋ฉ”์ธ ๋ชจ์–‘์ด๋‹ค
  • ๋ณด๊ณ ์„œ ๋ฉ”์ผ ์ž์ฒด๋„ DMARC๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•œ๋‹ค

RFC 9990 ๋ถ€๋ก B์˜ ์˜ˆ์‹œ ๋ณด๊ณ ์„œ๋ฅผ ์ค„์˜€๋‹ค.

<feedback xmlns="urn:ietf:params:xml:ns:dmarc-2.0">
  <report_metadata>
    <org_name>Sample Reporter</org_name>
    <date_range><begin>302832000</begin><end>302918399</end></date_range>
  </report_metadata>
  <policy_published>
    <domain>example.com</domain>
    <p>quarantine</p>
    <testing>n</testing>
    <discovery_method>treewalk</discovery_method>
  </policy_published>
  <record>
    <row>
      <source_ip>192.0.2.123</source_ip>
      <count>123</count>
      <policy_evaluated>
        <disposition>pass</disposition>
        <dkim>pass</dkim>
        <spf>fail</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <envelope_from>example.com</envelope_from>
      <header_from>example.com</header_from>
    </identifiers>
    <auth_results>
      <dkim><domain>example.com</domain><result>pass</result><selector>abc123</selector></dkim>
      <spf><domain>example.com</domain><result>fail</result></spf>
    </auth_results>
  </record>
</feedback>
์š”์†Œ ์ฝ๋Š” ๋ฒ•
row/source_ipยทcount ์ด IP์—์„œ ์˜จ ๋ฉ”์ผ ์ˆ˜. ํ•œ record๊ฐ€ ๋ฐœ์†ก์› ํ•˜๋‚˜์˜ ๋ฌถ์Œ์ด๋‹ค
policy_evaluated/dkimยทspf ์ •๋ ฌ๊นŒ์ง€ ๋”ฐ์ง„ DMARC ๊ฒฐ๊ณผ
auth_results SPFยทDKIM ์ž์ฒด ๊ฒฐ๊ณผ์™€ ๊ทธ ๋„๋ฉ”์ธยท์…€๋ ‰ํ„ฐ
disposition ์ˆ˜์‹ ์ž๊ฐ€ ์‹ค์ œ๋กœ ํ•œ ์ฒ˜๋ฆฌ
identifiers From ๋„๋ฉ”์ธ๊ณผ ๋ด‰ํˆฌ ๋ฐœ์‹ ์ž ๋„๋ฉ”์ธ

์˜ˆ์‹œ๋Š” SPF๊ฐ€ ์‹คํŒจํ–ˆ์ง€๋งŒ DKIM์ด ์ •๋ ฌ๋œ ์ฑ„ ํ†ต๊ณผํ•ด DMARC๋Š” ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ๋‹ค. ๋ฐ˜๋Œ€๋กœ auth_results์˜ SPF๊ฐ€ pass์ธ๋ฐ ๋„๋ฉ”์ธ์ด amazonses.com์ฒ˜๋Ÿผ ๋‚จ์˜ ๊ฒƒ์ด๋ฉด policy_evaluated์˜ spf๋Š” fail์ด๋‹ค. ์•ž์—์„œ ๋ณธ โ€™ํ†ต๊ณผํ–ˆ์ง€๋งŒ ์ •๋ ฌ ์•ˆ ๋จโ€™์ด๋‹ค.

์ฝ๋Š” ์ˆœ์„œ๋Š” ๋‹จ์ˆœํ•˜๋‹ค. source_ip๋ฅผ ๋ชจ์•„ ์šฐ๋ฆฌ ๋ฐœ์†ก์› ๋ชฉ๋ก(๋ฉ”์ผ ์„œ๋ฒ„, ๋ฐœ์†ก ์„œ๋น„์Šค, ์—…๋ฌด ๋„๊ตฌ)๊ณผ ๋Œ€์กฐํ•œ๋‹ค. ์šฐ๋ฆฌ ๊ฒƒ์ธ๋ฐ ์‹คํŒจํ•˜๋ฉด ์ •๋ ฌ์„ ๊ณ ์น˜๊ณ , ๋ชจ๋ฅด๋Š” IP๊ฐ€ SPF์™€ DKIM ๋ชจ๋‘ ์‹คํŒจํ•˜๋ฉด ์œ„์กฐ์ด๊ฑฐ๋‚˜ ์žŠ๊ณ  ์žˆ๋˜ ๋ฐœ์†ก์›์ด๋‹ค. ๋ฐ›๋Š” ์ชฝ ๊ตฌํ˜„์— ๋”ฐ๋ผ RFC 7489 ์‹œ์ ˆ ํ˜•์‹(๋„ค์ž„์ŠคํŽ˜์ด์Šค ์—†์Œ, pct ๋“ฑ)์ด ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค. RFC 9989๋„ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ๋ณด๋‹ค ๊ธฐ๊ณ„๋กœ ์ฒ˜๋ฆฌํ•˜๋ผ๊ณ  ๊ถŒํ•œ๋‹ค.

๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ์ฃผ์†Œ๋กœ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด ํ™•์ธ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. rua ์ฃผ์†Œ์˜ ์กฐ์ง ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅด๋ฉด ์ˆ˜์‹ ์ž๋Š” example.com._report._dmarc.<๋ณด๊ณ ์„œ ๋ฐ›๋Š” ๋„๋ฉ”์ธ> TXT์— v=DMARC1์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์—†์œผ๋ฉด ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค(RFC 9990 4์ ˆ). ๋ณด๊ณ ์„œ๋ฅผ ๋Œ€์‹  ๋ฐ›๋Š” ์ชฝ์ด ์ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž๊ธฐ ๋„๋ฉ”์ธ์— ๋‘ฌ์•ผ ํ•œ๋‹ค.

์‹คํŒจ ๋ณด๊ณ ์„œ(ruf)์—๋Š” ๋ฉ”์ผ ๋‹จ์œ„๋กœ ๋‚ด์šฉ ์ผ๋ถ€๊ฐ€ ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋‹ค. RFC 9989๋Š” ๊ฐœ์ธ์ •๋ณด ๋ฌธ์ œ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์ˆ˜์‹ ์ž๊ฐ€ ์‹คํŒจ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ ๋Š”๋‹ค. ๊ธฐ๋Œ€๋Š” rua์— ๋‘”๋‹ค.

Gmail, Yahoo, Outlook.com ๋ฐœ์‹ ์ž ์š”๊ฑด

์š”๊ฑด Gmail ๋ชจ๋“  ๋ฐœ์‹ ์ž Gmail ํ•˜๋ฃจ 5,000ํ†ต ์ด์ƒ Yahoo ๋Œ€๋Ÿ‰ ๋ฐœ์‹ ์ž Outlook.com ํ•˜๋ฃจ 5,000ํ†ต ์ดˆ๊ณผ
SPFยทDKIM ๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋‘˜ ๋‹ค ๋‘˜ ๋‹ค ๋‘˜ ๋‹ค ํ†ต๊ณผ
DMARC - ๋ ˆ์ฝ”๋“œ ํ•„์š”(p=none ๊ฐ€๋Šฅ) p=none ์ด์ƒ, DMARC ํ†ต๊ณผ p=none ์ด์ƒ
From ์ •๋ ฌ - SPF ๋˜๋Š” DKIM๊ณผ SPF ๋˜๋Š” DKIM๊ณผ(relaxed ๊ฐ€๋Šฅ) SPF ๋˜๋Š” DKIM๊ณผ(๋‘˜ ๋‹ค ๊ถŒ์žฅ)
์ •ยท์—ญ๋ฐฉํ–ฅ DNS ํ•„์š” ํ•„์š” ํ•„์š” -
TLS ํ•„์š” ํ•„์š” - -
์ŠคํŒธ ์‹ ๊ณ ์œจ 0.3% ๋ฏธ๋งŒ(Postmaster Tools) 0.3% ๋ฏธ๋งŒ 0.3% ๋ฏธ๋งŒ -
์ˆ˜์‹  ๊ฑฐ๋ถ€ - ๋งˆ์ผ€ํŒ…ยท๊ตฌ๋… ๋ฉ”์ผ์— ์›ํด๋ฆญ ์›ํด๋ฆญ(RFC 8058 POST ๊ถŒ์žฅ), 2์ผ ์•ˆ์— ์ฒ˜๋ฆฌ ์‰ฌ์šด ์ˆ˜์‹  ๊ฑฐ๋ถ€(๊ถŒ์žฅ ์‚ฌํ•ญ)

Gmail์˜ ๋Œ€๋Ÿ‰ ๋ฐœ์‹ ์ž๋Š” 24์‹œ๊ฐ„์— ๊ฐœ์ธ Gmail ๊ณ„์ •์œผ๋กœ 5,000ํ†ต ๊ฐ€๊นŒ์ด ์ด์ƒ ๋ณด๋‚ด๋Š” ๋ฐœ์‹ ์ž๋‹ค. ๊ฐ™์€ ์ฃผ ๋„๋ฉ”์ธ์—์„œ ๋ณด๋‚ธ ๋ฉ”์ผ์„ ํ•ฉ์‚ฐํ•˜๊ณ , ํ•œ ๋ฒˆ ํ•ด๋‹น๋˜๋ฉด ์˜๊ตฌํžˆ ๋Œ€๋Ÿ‰ ๋ฐœ์‹ ์ž๋กœ ๋ณธ๋‹ค. ์š”๊ฑด์€ ๊ฐœ์ธ Gmail ๊ณ„์ •์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฉ”์ผ์— ์ ์šฉ๋˜๊ณ , Google Workspace ๊ณ„์ •์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฉ”์ผ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

Gmail์€ 2024-02์— ์š”๊ฑด ์‹œํ–‰์„ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ˆ˜์‹  ๊ฑฐ๋ถ€ ๋งํฌ๋ฅผ ์ด๋ฏธ ๋„ฃ๋˜ ๋ฐœ์‹ ์ž๋Š” ์›ํด๋ฆญ ์ˆ˜์‹  ๊ฑฐ๋ถ€๋ฅผ 2024-06-01๊นŒ์ง€ ๊ฐ–์ถฐ์•ผ ํ–ˆ๋‹ค. 2025-11๋ถ€ํ„ฐ๋Š” ์š”๊ฑด์„ ๋ชป ์ฑ„์šด ๋ฉ”์ผ์˜ ์ž„์‹œ ๊ฑฐ๋ถ€(4.7.x)์™€ ์˜๊ตฌ ๊ฑฐ๋ถ€(5.7.x)๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์žˆ๋‹ค. ๋ฐ˜์†ก ์ฝ”๋“œ๊ฐ€ ์›์ธ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. FAQ์˜ ์˜ˆ๋กœ 4.7.32๋Š” From์ด SPFยทDKIM ์–ด๋А ์ชฝ๊ณผ๋„ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, 4.7.23๊ณผ 5.7.25๋Š” PTR์ด ์—†๊ฑฐ๋‚˜ ์ •๋ฐฉํ–ฅ๊ณผ ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋‹ค.

Yahoo๋„ 2024-02์— ์‹œํ–‰ํ–ˆ๋‹ค. ๋ชจ๋“  ๋ฐœ์‹ ์ž์—๊ฒŒ๋„ SPF ๋˜๋Š” DKIM, ์ •ยท์—ญ๋ฐฉํ–ฅ DNS, ์ŠคํŒธ๋ฅ  0.3% ๋ฏธ๋งŒ, RFC 5321ยท5322 ์ค€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Outlook.com(hotmail.com, live.com, outlook.com ์†Œ๋น„์ž ์„œ๋น„์Šค)์€ 2025-05-05์— ํ•˜๋ฃจ 5,000ํ†ต ๋„˜๊ฒŒ ๋ณด๋‚ด๋Š” ๋„๋ฉ”์ธ์„ ๋Œ€์ƒ์œผ๋กœ ์‹œํ–‰ํ–ˆ๋‹ค. 2025-04-29์— ๊ฐฑ์‹ ๋œ ๊ณต์ง€๋Š” ๋ฏธ์ถฉ์กฑ ๋ฉ”์ผ์„ 550; 5.7.515 Access denied, sending domain [SendingDomain] does not meet the required authentication level.๋กœ ๊ฑฐ๋ถ€ํ•œ๋‹ค๊ณ  ์ ๋Š”๋‹ค. ๊ฐ™์€ ๊ธ€์— ์ •ํฌํ•จ์œผ๋กœ ๋ณด๋‚ธ๋‹ค๋Š” ์ด์ „ ๋ฌธ๋‹จ๋„ ๋‚จ์•„ ์žˆ๋‹ค.

์•Œ๋ฆผ ๋ฉ”์ผ์ด 5,000ํ†ต ๊ธฐ์ค€์— ๋ชป ๋ฏธ์น˜๋”๋ผ๋„ ํ‘œ์˜ โ€˜๋ชจ๋“  ๋ฐœ์‹ ์žโ€™ ์—ด์€ ์ ์šฉ๋œ๋‹ค. ์ง์ ‘ ๋ณด๋‚ด๋Š” ์„œ๋ฒ„๋ผ๋ฉด SPF ๋˜๋Š” DKIM, PTR, TLS๋ถ€ํ„ฐ ํ™•์ธํ•œ๋‹ค.

Cloudflare DMARC Management๋กœ ๋ณด๊ณ ์„œ ๋ฐ›๊ธฐ

XML ๋ณด๊ณ ์„œ๋ฅผ ์ง์ ‘ ๋ชจ์•„ ์ฝ๊ธฐ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด ๋Œ€ํ–‰ ์„œ๋น„์Šค๋ฅผ ์“ด๋‹ค. ๋„๋ฉ”์ธ์˜ DNS๊ฐ€ Cloudflare์— ์žˆ๋‹ค๋ฉด Cloudflare DMARC Management๊ฐ€ ์žˆ๋‹ค. ๋‹ค๋งŒ ๋ฌธ์„œ์— ์ ํžŒ ์กฐ๊ฑด์ด ์žˆ๋‹ค.

  • Cloudflare DNS๋ฅผ ์“ฐ๋Š” apex ๋„๋ฉ”์ธ(example.com)๋งŒ ๋œ๋‹ค. blog.example.com ๊ฐ™์€ ํ•˜์œ„ ๋„๋ฉ”์ธ์ด๋‚˜ ์„œ๋ธŒ๋„๋ฉ”์ธ ์„ค์ •(subdomain setup) ์กด์€ ์•ˆ ๋œ๋‹ค
  • ๋ชจ๋“  ์š”๊ธˆ์ œ์—์„œ ์“ธ ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์„œ์—๋Š” ๋ฒ ํƒ€๋กœ ํ‘œ์‹œ๋ผ ์žˆ๋‹ค

์ผœ๋Š” ์ˆœ์„œ๋‹ค.

  1. Cloudflare ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๊ณ„์ •๊ณผ ๋„๋ฉ”์ธ์„ ๊ณ ๋ฅธ๋‹ค
  2. Email > DMARC Management๋กœ ๊ฐ„๋‹ค
  3. Enable DMARC Management๋ฅผ ๋ˆ„๋ฅธ๋‹ค
  4. DMARC ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ถ”๊ฐ€๋ฅผ ์ œ์•ˆํ•œ๋‹ค(Add). ์žˆ์œผ๋ฉด ๊ธฐ์กด ๋ ˆ์ฝ”๋“œ์— Cloudflare ์ฃผ์†Œ์˜ rua๋ฅผ ํ•˜๋‚˜ ๋”ํ•œ๋‹ค(Next)
  5. ์ฒซ ๋ณด๊ณ ์„œ๊ฐ€ ํ™”๋ฉด์— ๋‚˜์˜ค๊ธฐ๊นŒ์ง€ ์ตœ๋Œ€ 24์‹œ๊ฐ„ ๊ฑธ๋ฆฐ๋‹ค

ํ™”๋ฉด์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒƒ์„ ๋ณธ๋‹ค.

  • ์ตœ๋Œ€ 30์ผ์˜ ๋ฉ”์ผ๋Ÿ‰ ๊ทธ๋ž˜ํ”„, ๋‚ ์งœ๋ณ„ ๋ณด๊ณ ์„œ(View reports)
  • ์ƒ์œ„ 10๊ฐœ ๋ฐœ์†ก์›(Top 10 sources)๊ณผ ์ „์ฒด ๋ฐœ์†ก์› ๋ชฉ๋ก(View all โ†’ ํ•ญ๋ชฉ์˜ Details). ๋ฐœ์†ก์›๋งˆ๋‹ค SPF, DKIM, DMARC ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค
  • Email record overview์˜ View records์—์„œ SPF, DKIM, DMARC ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋งŒ๋“ ๋‹ค. SPF๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด DNS ์กฐํšŒ 10ํšŒ ์ดˆ๊ณผ๋ฅผ ๊ฒ€์‚ฌํ•ด ๊ฒฝ๊ณ ํ•œ๋‹ค

๋ฌธ์„œ๋Š” ๋”ํ•ด์ง€๋Š” ์ฃผ์†Œ๋ฅผ โ€™Cloudflare ์ด๋ฉ”์ผ ์ฃผ์†Œโ€™๋ผ๊ณ ๋งŒ ์ ๋Š”๋‹ค. ์•ž์˜ _dmarc.cloudflare.com์— ์žˆ๋˜ โ€ฆ@dmarc-reports.cloudflare.net์ด ๊ทธ๋Ÿฐ ์ฃผ์†Œ๋กœ ๋ณด์ธ๋‹ค. ์ผ  ๋’ค์—๋Š” ์ž๊ธฐ ์กด์˜ _dmarc ๋ ˆ์ฝ”๋“œ์—์„œ ์‹ค์ œ ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค. dmarc-reports.cloudflare.net์€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›๊ฒ ๋‹ค๋Š” ํ™•์ธ ๋ ˆ์ฝ”๋“œ๋„ ๋‘๊ณ  ์žˆ๋‹ค.

dig +short TXT example.com._report._dmarc.dmarc-reports.cloudflare.net
"v=DMARC1;"

์ž„์˜์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌผ์–ด๋„ ๊ฐ™์€ ๋‹ต์ด ์˜จ๋‹ค. RFC 9990์ด ์„ค๋ช…ํ•˜๋Š” ์™€์ผ๋“œ์นด๋“œ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๋„๋ฉ”์ธ์˜ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›๊ฒ ๋‹ค๊ณ  ๋ฐํ˜€ ๋‘” ๊ฒƒ์ด๋‹ค. ์ฃผ์˜ํ•  ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ์กด ์•ˆ์— ์™ธ๋ถ€ ๋„๋ฉ”์ธ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” CNAME์ด ์žˆ์œผ๋ฉด DMARC Management๋Š” SPF ์ˆ˜์ •์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋•Œ SPF๋Š” ๊ทธ ์™ธ๋ถ€ ๋„๋ฉ”์ธ์˜ DNS์—์„œ ๊ณ ์นœ๋‹ค.

๋ฉ”์ผ์„ ์“ฐ์ง€ ์•Š๋Š” ๋„๋ฉ”์ธ

์›น ์ „์šฉ ๋„๋ฉ”์ธ์ด๋‚˜ ๋ณด์œ ๋งŒ ํ•˜๋Š” ๋„๋ฉ”์ธ๋„ ์œ„์กฐ ๋ฐœ์‹ ์— ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค. example.com์˜ ์‹ค์ œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๊ทธ๋Ÿฐ ๊ตฌ์„ฑ์ด๋‹ค(2026-10-15 ์กฐํšŒ).

example.com.               MX    0 .
example.com.               TXT   "v=spf1 -all"
*._domainkey.example.com.  TXT   "v=DKIM1; p="
_dmarc.example.com.        TXT   "v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s"

๋ฉ”์ผ์„ ๋ฐ›์ง€ ์•Š๊ณ (null MX), ์–ด๋–ค IP์—์„œ๋„ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋“  DKIM ํ‚ค๊ฐ€ ํ๊ธฐ๋๊ณ , ์‹คํŒจํ•˜๋ฉด ๊ฑฐ๋ถ€ํ•ด ๋‹ฌ๋ผ๋Š” ๋œป์ด๋‹ค. ์›น์—๋„ ์“ฐ์ง€ ์•Š๋Š” ๋„๋ฉ”์ธ์ด๋ผ๋ฉด CAA์˜ 0 issue ";"๋กœ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊นŒ์ง€ ๋ง‰๋Š”๋‹ค.

์ ๊ฒ€ํ‘œ

์ ๊ฒ€ ์ •์ƒ ์ƒํƒœ
_dmarc ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜, v=DMARC1์ด ๋งจ ์•ž, rua ์žˆ์Œ
SPF v=spf1 ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜, DNS ์กฐํšŒ 10ํšŒ ์ด๋‚ด, ๋์ด -all ๋˜๋Š” ~all
MAIL FROM ๋ฐœ์†ก ์„œ๋น„์Šค๋„ ๋‚ด ์„œ๋ธŒ๋„๋ฉ”์ธ(SPF ์ •๋ ฌ)
DKIM d=๊ฐ€ ๋‚ด ๋„๋ฉ”์ธ, RSA 2048๋น„ํŠธ, ์“ฐ์ง€ ์•Š๋Š” ์…€๋ ‰ํ„ฐ๋Š” ์ •๋ฆฌ
๋ฐ›์€ ๋ฉ”์ผ Authentication-Results์— dmarc=pass
์ง์ ‘ ๋ณด๋‚ด๋Š” ์„œ๋ฒ„ PTR๊ณผ ์ •๋ฐฉํ–ฅ ์ผ์น˜, TLS๋กœ ์ „์†ก
๋ณด๊ณ ์„œ ๋งค์ผ ๋“ค์–ด์˜ค๊ณ , ๋ชจ๋ฅด๋Š” source_ip๋ฅผ ํ™•์ธํ•จ
์ •์ฑ… ๊ฐ์‹œ โ†’ ์‹œํ—˜ โ†’ quarantine โ†’ reject ์ˆœ์„œ, pct ์ค‘๊ฐ„ ๊ฐ’ ์•ˆ ์”€
์•Œ๋ฆผ ๋ฉ”์ผ ์ „์šฉ ์„œ๋ธŒ๋„๋ฉ”์ธ, ๋ฐœ์†ก์› ๊ณ ์ •
๋ฉ”์ผ ์•ˆ ์“ฐ๋Š” ๋„๋ฉ”์ธ null MX, v=spf1 -all, p=reject

์ธ์ฆ์„ ๋‹ค ๋งž์ถฐ๋„ ๋ฐ›์€ํŽธ์ง€ํ•จ์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋†“์น˜๋ฉด ์•ˆ ๋˜๋Š” ์•Œ๋ฆผ์ด๋ผ๋ฉด ๋ฐ›๋Š” ๊ธธ์„ ํ•˜๋‚˜ ๋” ๋‘”๋‹ค. ์ธ์ฆ์„œ์™€ ๋„๋ฉ”์ธ ๋งŒ๋ฃŒ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๋Š” ๋งŒ๋ฃŒ ๊ฐ์‹œ ๊ตฌ๋…์€ ๋ฉ”์ผ๊ณผ ํ•จ๊ป˜ Slack, Discord, Telegram ์ฑ„๋„๋กœ๋„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์Šฌ๋ž™์œผ๋กœ ์ง์ ‘ ๋ฐ›๋Š” ๊ตฌ์„ฑ์€ ์ธ์ฆ์„œ ๋งŒ๋ฃŒ ์•Œ๋ฆผ ์ฒด๊ณ„ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ์— ์žˆ๋‹ค.

์ฐธ์กฐ