이번에는 메일과 관련 된 레코드들에 대해서 알아보려고 합니다.
지난 2024년에 들어서면서 구글에서 메일에 대한 정책을 강화하면서 이슈가 되었던 내용들입니다.
해당 내용은 하루에 5,000개 이상의 메일을 보내는 대량 메일 발송하는 사용자가 대상이었으며 내용을 간단하게 요약하자면 아래와 같습니다.
- 이메일 인증 필수 : 대량 메일 발송 사용자는 SPF, DKIM, DMARC를 사용하여 이메일 인증을 해야합니다.
- 구독 취소 옵션 제공 : 이메일 수신자가 구독을 쉽게 취소 할 수 있는 옵션을 제공해야 합니다.
- 스팸 방지 및 관리 : 이메일 발송자는 스팸 보고 기준을 초과하지 않도록 관리해야 합니다.
조금 더 자세한 내용은 아래의 링크에서 확인 하실 수 있습니다.
Google 이메일 발신자 가이드 라인
이메일 발신자 가이드라인 - Google Workspace 관리자 고객센터
도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요
support.google.com
다시 본론으로 돌아와서 메일과 관련된 레코드는 1번에서 말씀드린 SPF, DKIM, DMARC 말고도 MX, TXT레코드가 있습니다.
메일과 관련된 DNS 레코드들
MX 레코드
이메일을 수신할 메일 서버를 지정하는 레코드이며, 아래와 같이 설정 할 수 있습니다.
# MX 레코드 예시
10 mail.example.com.
20 backupmail.example.com.
TXT 레코드
TXT 레코드는 도메인에 대한 다양한 텍스트 정보를 저장할 수 있는 레코드이며, 원래 사람이 읽을 수 있는 메모를 위한 장소로 의도된 레코드 였지만, 현재는 기계가 읽을 수 있는 일부 데이터들도 TXT 레코드에 넣어 저장하며, SPF, DKIM, DMARC 설정을 위한 정보들도 해당 레코드에 포함 할 수 있습니다.
# TXT 레코드 예시 (SPF 레코드)
v=spf1 include:_spf.google.com ~all
SPF 레코드
SPF 레코드는 특정 도메인에서 보낸 이메일이 승인된 메일 서버에서 전송되었는지를 확인할 수 있도록 승인된 모든 서버를 기록하는 TXT 레코드의 한 가지 유형입니다. SPF 레코드는 원래 이메일에 사용되는 SMTP 프로토콜이 이메일의 발신 주소를 인증하지 않기 때문에 만들어진 레코드이며, 승인 된 서버를 기록해 놓음으로써 스팸과 피싱을 방지 합니다.
# SPF 레코드 예시
v=spf1 ip4:8.8.8.8 include:_spf.google.com -all
- v=spf1 : SPF 레코드의 버전을 지정
- ip4:8.8.8.8 : ip 주소 8.8.8.8인 서버에서 메일을 보낼 수 있도록 승인 받았음을 알려줍니다.
- include:_spf.google.com : 해당 도메인의 서버에서 이메일을 보낼 수 있다고 알려줍니다. SPF 레코드에는 다수의 도메인을 설정 할 수 있지만, 유효한 도메인에만 작동합니다.
- -all : SPF레코드에 기록되지 않은 주소는 이메일을 보낼 수 있도록 승인 받지 않았으므로 거부하라고 알려줍니다. / ~all로 설정을 하면 기록되지 않은 이메일은 수신은 하되 스팸으로 표시하거나, 안전하지 않음으로 표시하라고 알려줍니다. / +all 은 모든 서버에서 보내는 이메일을 허용합니다.
SPF 레코드에 대해 조금 더 자세한 내용이 궁금하시면 위의 링크에 방문하시면 확인이 가능합니다.
DKIM 레코드
DKIM 레코드는 디지털 서명을 추가하여 도메인의 무결성, 출처를 확인하는 레코드 입니다.
디지털 서명은 이메일을 보내는 서버에서 이메일 헤더, 본문에 개인 키를 사용하여 디지털 서명을 만들고, 수신 메일 서버는 발신 도메인의 DKIM 레코드에 저장되어 있는 공개키를 조회하여 서명을 검증하여 메일이 전송 중에 변조되지 않음을 확인할 수 있습니다.
DKIM 레코드 작동 원리
- 발신 이메일 서버가 이메일 콘텐츠로부터 해시를 생성
- 발신 이메일 서버가 비공개 DKIM 키로 이 해시를 암호화
- 암호화된 해시가 포함된 이메일 발송
- 수신 이메일 서버가 DKIM 레코드 값에서 공개키를 추출
- 수신 이메일 서버가 공개키를 이용하여 해시를 해독
- 수신 이메일 서버가 이메일 콘텐츠로부터 해시를 생성
- 해독된 해시와, 생성된 해시가 일치하면 이메일이 변조되지 않았음이 입증
# DKIM 레코드 예시
| 이름 | 유형 | 목차 |
[selector]._domainkey. [domain] TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyD/TWZGzX...==
- 이름 : 대부분의 TXT 레코드와는 다르게 특수 이름으로 저장됩니다.
- selector: DKIM 선택기 (서버에서 지정)
- _domainkey: DKIM DNS 레코드 유형을 지정하는 고정된 문자열
- domain: 서명된 이메일의 도메인 이름
- 도메인이 example.com이고 선택기가 default인 경우, DKIM 레코드 이름은 다음과 같습니다.
- default._domainkey.example.com
- v=DKIM1: DKIM 버전
- k=rsa: 키 유형 (RSA)
- p=...: 공개 키
- d=example.com; 보낸 사람의 도메인
- 등 여러가지의 값을 저장하고 있습니다.
DMARC 레코드
DMARC 레코드는 SPF와 DKIM을 기반으로 이메일의 진위를 확인하여, 인증 실패한 이메일에 대해 스팸으로 표시할지, 거부할지, 전달할지에 대한 여부 등을 결정하고, 실패한 이메일에 대해서 보고서를 받아볼지 정할 수 있습니다.
# DMARC 레코드 예시
v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:forensic-reports@example.com; adkim=s; aspf=s
- v=DMARC1: DMARC 버전
- p=reject: 인증 실패 시 이메일을 거부. quarantine: 인증 실패 시 이메일을 격리. none: 인증 실패 시에도 계속 통과 허용.
- rua=mailto: . . .: 집계 보고서를 받을 이메일 주소
- ruf=mailto:.. .: 포렌식 보고서를 받을 이메일 주소
- adkim=s: DKIM의 엄격한 정합성. r: 완화됨
- aspf=s: SPF의 엄격한 정합성 (선택)