DNS 와 인증
받는 메일 서버(Gmail·네이버 등)는 메일이 정말 그 도메인에서 왔는지 DNS 로 확인합니다. 여기 있는 레코드를 넣지 않으면 메일이 거부되거나 스팸함으로 갑니다.
넣을 값은 설치가 끝날 때 화면에 나오고(DKIM 포함), 관리 화면 [설치 확인] 탭에서도 볼 수 있습니다. 관리 화면은 관리 화면 주소의 A 레코드가 반영된 뒤 열리므로, 처음에는 설치 끝 화면의 값을 넣으세요. 설치 끝 화면의 DKIM 자리에 "(관리 화면에서 확인)" 이 나오면 SSH 터널로 관리 화면을 열어 [설치 확인] 에서 복사합니다. 이 문서는 각 레코드가 무엇인지, 어디에 어떻게 넣는지를 설명합니다.
아래 예는 도메인 example.com, 서버 IP 203.0.113.10, 메일 서버 이름 mail.example.com, 관리 화면 mailer.example.com 입니다.
넣을 레코드 한눈에
| 종류 | 이름 | 값 (예) | 어디서 넣나 | 꼭 필요? |
|---|---|---|---|---|
| A | mail.example.com |
203.0.113.10 |
도메인 관리 화면 | 필요 |
| A | mailer.example.com |
203.0.113.10 |
도메인 관리 화면 | 필요 (관리 화면·HTTPS) |
| PTR | 203.0.113.10 |
mail.example.com |
서버 업체 콘솔 | 필요 |
| TXT (SPF) | example.com |
v=spf1 ip4:203.0.113.10 ~all |
도메인 관리 화면 | 필요 |
| TXT (DKIM) | mail._domainkey.example.com |
v=DKIM1; k=rsa; p=MIIB… ([설치 확인] 에서 복사) |
도메인 관리 화면 | 필요 |
| TXT (DMARC) | _dmarc.example.com |
v=DMARC1; p=none; rua=mailto:dmarc@example.com |
도메인 관리 화면 | 필요 |
| MX | example.com |
10 mail.example.com |
도메인 관리 화면 | DMARC 보고서를 이 서버로 받을 때만 |
- 발신 도메인이 여러 개면 SPF·DKIM·DMARC 를 도메인마다 넣습니다 ([설치 확인] 표에 도메인별로 나옴).
- [설치 확인] 표의 넣을 값 옆 [복사] 를 눌러 그대로 붙여 넣으세요. DKIM 값은 길어서 손으로 옮기면 틀리기 쉽습니다.
- 줄마다 상태가 나옵니다: 통과 / 주의(동작은 하지만 고치기를 권함) / 필요(아직 없거나 틀림) / 확인 못 함.
- 도메인 관리 화면의 이름(호스트) 칸에는 보통 도메인을 뺀 앞부분만 넣습니다:
mail,mailer,mail._domainkey,_dmarc. 도메인 자체는@또는 빈 칸. 업체별 차이는 업체별 넣는 방법.
A 레코드
메일 서버 이름과 관리 화면 주소가 이 서버 IP 를 가리키게 합니다.
| 이름 | 값 |
|---|---|
mail |
203.0.113.10 |
mailer |
203.0.113.10 |
- 관리 화면 주소의 A 레코드가 맞으면 HTTPS 인증서를 몇 분 안에 자동으로 받습니다 (서버의 80·443 이 열려 있어야 함).
- 같은 이름에 다른 IP 가 섞여 있으면 지우세요. 이 서버 IP 하나만 둡니다.
- 메일 서버 이름은 CNAME(별칭) 말고 A 레코드로 넣습니다.
*(와일드카드) 레코드가 있으면 별칭으로 잡힐 수 있어 [설치 확인] 이 주의로 알려 줍니다. - Cloudflare 를 쓰면 두 레코드 모두 프록시 끄기(DNS only, 회색 구름) 로 둡니다. 프록시를 켜면
mail.example.com이 Cloudflare IP 로 풀려 PTR 과 짝이 맞지 않고(받는 쪽이 의심함), DMARC 보고서도 받을 수 없고, 다른 프로그램이 587 로 접속하지 못합니다. - A 레코드는 설치 전에 넣어 두어도 됩니다. 반영을 기다리는 동안 설치를 하면 시간이 줄어듭니다.
PTR (역방향 DNS)
IP 로 이름을 찾는 레코드입니다. Gmail 등은 PTR 이 없거나 이상한 서버의 메일을 거부하거나 스팸으로 봅니다. 도메인 관리 화면이 아니라 서버(VPS) 업체 콘솔에서 넣습니다. IP 의 주인이 서버 업체이기 때문입니다.
- 값: 메일 서버 이름
mail.example.com(A 레코드와 짝이 맞아야 함:mail.example.com→203.0.113.10→mail.example.com) - 먼저 A 레코드를 넣고, 반영된 뒤 PTR 을 넣으세요. 업체에 따라 A 레코드가 없으면 PTR 을 거부합니다.
| 업체 | 넣는 곳 |
|---|---|
| Vultr | 서버 → Settings → IPv4 → Reverse DNS 칸 |
| AWS (EC2) | 탄력적 IP(Elastic IP) → "역방향 DNS 업데이트" (A 레코드가 먼저 있어야 함) |
| DigitalOcean | 서버(Droplet) 이름을 메일 서버 이름으로 바꾸면 PTR 이 따라 바뀝니다 |
| 그 밖의 업체 | "Reverse DNS"·"rDNS"·"PTR" 메뉴. 없으면 지원 요청으로 |
화면 메뉴 이름은 업체가 바꿀 수 있습니다. 찾기 어려우면 업체 도움말에서 "reverse DNS" 를 검색하세요.
SPF
"이 도메인 메일은 이 IP 에서 보낸다" 는 목록입니다. 발신 도메인 자체(이름 @)에 TXT 로 넣습니다.
- 먼저 이미 있는지 봅니다:
dig +short TXT example.com에서v=spf1로 시작하는 줄 (또는 [설치 확인] 의 "지금 값") - SPF 가 아직 없으면:
v=spf1 ip4:203.0.113.10 ~all - 이미 있으면 (회사 메일 등) 새로 만들지 말고 합칩니다. SPF 가 2개면 둘 다 무효가 됩니다.
기존 값에
ip4:203.0.113.10만 끼워 넣습니다 ([설치 확인] 이 합친 값을 보여 줌):
기존: v=spf1 include:_spf.google.com ~all
합친 값: v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all
~all은 "목록 밖이면 의심",-all은 "목록 밖이면 거부" 입니다. 처음에는 기존 값의 끝을 그대로 두세요.include:가 많아 [설치 확인] 의 SPF 줄이 "주의" 이고 설명에 "판단 못 함" 이 나오면, 위처럼ip4:를 직접 넣은 값으로 바꾸면 확실해집니다.
DKIM
메일마다 붙는 전자 서명의 공개키입니다. 서명용 키는 설치 때 이 서버가 만들었고, 받는 쪽은 여기 넣은 공개키로 확인합니다.
- 이름:
mail._domainkey(도메인까지 쓰면mail._domainkey.example.com). 앞의mail은 DKIM 셀렉터(키 이름표)로, 메일 서버 이름과는 상관없이 항상mail입니다 - 값: [설치 확인] 의 DKIM 줄 넣을 값 전체를 [복사] 해 붙여 넣기 (
v=DKIM1; k=rsa; p=로 시작, 400자 정도) - 값이 길어 한 칸에 안 들어가는 곳(AWS Route 53 등)은 255자보다 짧게 나눠 따옴표로 묶어 넣습니다:
"v=DKIM1; k=rsa; p=MIIBIjAN…" "…나머지"(받는 쪽은 이어 붙여 읽음) - "다른 키가 들어 있습니다" 가 나오면 예전 키가 남아 있는 것입니다. 넣을 값으로 바꾸세요.
- 서버를 새로 설치하면 키가 새로 생깁니다. 서버를 옮길 때는 백업으로 복원하면 키가 그대로라 DNS 를 바꾸지 않아도 됩니다 (새 서버로 옮기기).
DMARC
SPF·DKIM 이 안 맞는 메일을 받는 쪽이 어떻게 할지 정하고, 결과 보고서를 받을 주소를 알립니다. Gmail·Yahoo 는 하루 5,000통 넘게 보내는 발송자에게 DMARC 를 반드시 요구하고, 그보다 적어도 있으면 신뢰에 도움이 되므로 처음부터 넣습니다.
- 이름:
_dmarc(도메인 자체가 아님 — 도메인 자체에 넣으면 쓰이지 않습니다) - 값 (처음):
v=DMARC1; p=none; rua=mailto:dmarc@example.com
| p= | 뜻 | 언제 |
|---|---|---|
none |
보고서만 받고 그대로 둠 | 처음 2~4주. 보고서로 모든 발송 경로가 통과하는지 확인 |
quarantine |
안 맞으면 스팸함으로 | 보고서가 깨끗해진 뒤 (내 도메인을 사칭한 메일을 막음) |
reject |
안 맞으면 거부 | 충분히 확인한 뒤 |
- 이미 DMARC 가 있으면 새로 만들지 말고, 기존 값의
rua=에 이 서버 주소를 더합니다:rua=mailto:기존@주소,mailto:dmarc@example.com - 보고서는 [발송 결과] 탭 "DMARC 보고서" 에서 봅니다. 실제 발송을 시작한 다음 날부터 옵니다.
p=quarantine이상으로 올리기 전에, 이 도메인으로 메일을 보내는 다른 서비스(회사 메일, 쇼핑몰 알림 등)도 SPF·DKIM 이 맞는지 보고서로 꼭 확인하세요.
MX (DMARC 보고서 받기)
DMARC 보고서를 이 서버로 받으려면 보고서 주소(dmarc@example.com)의 도메인 MX 가 이 서버를 가리켜야 합니다. 발송에는 필요 없습니다.
- 그 도메인에 MX 가 없으면:
example.com에10 mail.example.com - 이미 다른 메일 서비스(Google Workspace 등)가 받고 있으면 MX 를 바꾸지 마세요. 회사 메일이 끊깁니다.
그 메일 서비스에
dmarc@example.com메일함(또는 별칭)을 만들어 보고서를 거기서 받습니다. 이 경우 관리 화면의 "DMARC 보고서" 는 비어 있고, [설치 확인] 의 MX 줄은 "주의" 로 남아도 괜찮습니다. - 이 제품은 보고서 주소를 발신 도메인 중 하나의 주소로만 받을 수 있습니다 (설치 때 질문 "DMARC 보고서 받을 주소"). DMARC 규칙 자체는 다른 도메인 주소도 허용하지만, 이 서버가 받을 수 있는 것은 발신 도메인 주소뿐입니다.
- MX 가 "0 ." (메일 받지 않음) 이면 보고서를 받을 수 없습니다. 이 서버로 받으려면 위 값으로 바꿉니다.
이 서버는 25번으로 DMARC 보고서만 받습니다. 다른 주소로 오는 메일은 받지 않고 버립니다.
그래서 MX 를 이 서버로 바꾸면 @도메인 으로 오는 답장(고객이 [답장] 을 누른 메일)이 모두 사라집니다. 답장을 받아야 하면 MX 는 지금 메일 서비스에 두고, 보낸사람 주소도 그 서비스에 메일함이 있는 주소로 쓰세요. 도메인에 메일 서비스가 없다면 본문에 문의 받을 주소·연락처를 적어 두세요.
업체별 넣는 방법
화면 메뉴 이름은 업체가 바꿀 수 있습니다. 공통 원칙: 종류(A·TXT·MX), 이름(호스트), 값, TTL(기본값 그대로)을 넣고 저장합니다.
가비아
- My가비아 → 도메인 → 해당 도메인의 DNS 관리 (DNS 설정) → 레코드 추가
- 호스트 칸:
mail,mailer,mail._domainkey,_dmarc, 도메인 자체는@ - TXT 값은 따옴표 없이 붙여 넣습니다
- MX 는 값 칸에
mail.example.com, 우선순위 칸에10(업체에 따라 끝에 점.을 붙이라고 할 수 있음)
Cloudflare
- 도메인 → DNS → Records → Add record
- A 레코드는 Proxy status 를 끄기(DNS only) — 켜 두면 메일 포트가 이 서버로 오지 않습니다
- Name 칸:
mail,mailer,mail._domainkey,_dmarc, 도메인 자체는@ - 긴 DKIM 값도 한 칸에 그대로 넣으면 됩니다
Vultr DNS
- Products(또는 Network) → DNS → 도메인 → 레코드 추가
- Name 칸은 앞부분만 (
mail,_dmarc등), 도메인 자체는 비움 - TXT 값은 따옴표로 감싸라고 할 수 있습니다 — 화면 안내를 따르세요
- PTR 은 DNS 메뉴가 아니라 서버 설정에서 (PTR)
AWS Route 53
- Hosted zones → 도메인 → Create record
- Record name:
mail,_dmarc등 (도메인 자체는 비움) - TXT 값은 따옴표로 감싸야 합니다:
"v=spf1 ip4:203.0.113.10 ~all" - DKIM 처럼 255자가 넘는 값은 나눠서:
"앞부분" "뒷부분"(DKIM)
그 밖의 업체
위 원칙대로 넣고 [설치 확인] 의 [다시 확인] 으로 확인합니다. 이름 칸에 도메인까지 넣었더니 mail.example.com.example.com 처럼 두 번 붙는 일이 흔합니다 — [설치 확인] 의 "지금 값" 이 비어 있으면 이것부터 의심하세요.
반영 확인
- [설치 확인] 탭 에서 [다시 확인] — 공용 DNS(1.1.1.1·8.8.8.8)에 물어 봅니다. 모든 줄이 통과가 될 때까지 기다립니다 (보통 몇 분, 길면 몇 시간. 예전 값이 남아 있으면 TTL 만큼 걸림)
- 서버에서 직접 확인할 수도 있습니다 (
dig가 없으면 Ubuntu·Debiansudo apt install -y dnsutils, Rocky·RHELsudo dnf install -y bind-utils):
dig +short A mail.example.com
dig +short TXT example.com
dig +short TXT mail._domainkey.example.com
dig +short TXT _dmarc.example.com
dig +short -x 203.0.113.10
- 테스트 모드로 시험 — [발송] 탭에서 "자동 생성" 으로 몇 통 보내고, 같은 탭의 Mailpit 칸 [열기] 로 받은 메일을 봅니다 (밖으로 안 나감)
- 실서버 모드로 내 주소에 1통 — 화면 위 [실서버 모드로 전환] → [발송] 탭에서 받는사람 "직접 입력" 에 내 Gmail 주소 하나, 발송 버튼 위 "실제 수신자에게 발송됩니다. 확인했습니다." 를 체크하고 [발송].
Gmail 에서 메일을 열고 ⋮ → 원본 보기 → 위쪽 표의 SPF·DKIM·DMARC 가 모두 PASS 인지 봅니다.
네이버 메일이면 메일 → 더보기 → 원본 보기에서
Authentication-Results줄을 봅니다. - 모두 PASS 면 설치 끝입니다. 이제 IP 예열 을 시작합니다. 한 번에 많이 보내지 마세요.