메일링을 하다보면 스팸 처리를 신경쓰지 않을 수 없습니다.
사용자들에게 중요한 메일을 발송하거나 안내 메일을 보냈는데
메일이 스팸함에 들어가 버리면 무척 곤란하겠죠?
스팸 처리와 관련하여 메일을 수신한 서버가 발신자를 검증하는 방법은 여러가지입니다.
그 중에서도 가장 기본적인 것이 SPF 레코드입니다.
SPF 레코드란?
SPF는 Sender Policy Framework의 약어로 특정 도메인에서 이메일을 보낼 수 있도록 승인된 모든 서버를 열거하는 DNS TXT 레코드의 한 가지 유형입니다.
(출처 : https://www.cloudflare.com/ko-kr/learning/dns/dns-records/dns-spf-record/)
수신된 메일 원문/헤더 확인하기
가령 네이버 메일을 이용하여 구글 메일 주소로 메일을 발송하면
구글 메일 서버가 정말로 네이버 메일 서버를 통해 발송된 것인지
확인하기 위해 참조하는 정보가 SPF 레코드라 보시면 됩니다.
실제로 한 번 보내보도록 하겠습니다.
Gmail로 수신된 네이버에서 보낸 메일의 헤더 정보를 살펴보겠습니다.
우측의 More 메뉴를 누르면 `Show Original` 이라는 옵션이 보입니다.
이것을 눌러 메일 헤더 정보를 살펴보겠습니다.
화면 하단에는 Raw 헤더 정보가 존재하고, 상단에는 위 그림처럼
메일에 대하여 SPF, DKIM, DMARC 검증 요약 결과가 출력됩니다.
SPF 검증이 126.209.224.234 IP 로 확인되었다고 하는데
이 과정을 한번 살펴보도록 하겠습니다.
Raw 헤더 정보에서 `Return-path` 확인하기
SPF 검증을 위해서는 메일을 보낸 도메인의 DNS를 통해 SPF 값을 확인해야 합니다.
이 때 사용되는 도메인이 꼭 메일 주소의 도메인과 같지 않을수도 있습니다.
수신 서버는 메일 헤더 정보에서 `Return-path`를 보고 SPF를 조회할 도메인을 결정합니다.
네이버의 경우 메일 주소의 도메인과 동일한 도메인을 쓰긴 하네요.
SPF 정보 확인하기
구글 메일 서버는 Return-Path에 지정된 naver.com 으로부터 SPF 정보를 획득합니다.
dig을 이용해서 naver.com의 SPF 정보를 조회해 보겠습니다.
참고로 SPF는 리소스 레코드 타입으로도 규격이 존재하긴 하지만
오늘날 실제로는 TXT 레코드의 값으로 지정하는 것이 일반적입니다.
% dig naver.com TXT +short | grep spf
"v=spf1 ip4:111.91.135.0/27 ip4:125.209.208.0/20 ip4:125.209.224.0/19 ip4:210.89.163.112 ip4:210.89.173.104/29 ip4:117.52.140.128/26 ~all"
`v=spf`로 시작하는 이 값은 유효한 메일 발신 서버를 알려주는 역할을 수행합니다.
`ip4`로 지정된 주소에서 메일이 발신되었는지를 비교한다 생각하시면 되겠죠?
실제로 include 등의 지시자를 통해 다른 도메인에서 SPF 정보를 참조하는 것도 가능하지만
네이버의 경우에는 그렇게 구성되어 있지는 않은 것으로 확인됩니다.
자, 그러면 이제 메일 헤더에서 발신 서버의 주소를 확인해 보겠습니다.
위의 이미지에도 있지만 친절하게 한번 더 보겠습니다.
발신서버 확인하기
발신 서버 주소는 메일 헤더에서 `Received` 값을 확인하면 됩니다.
제가 보낸 메일은 cvsmtppost019.nm.naver.com 서버를 통해 발송되었고
이 서버 도메인을 질의해보면 125.209.224.234 주소가 나오는 것으로 보입니다.
% dig cvsmtppost019.nm.naver.com +short
125.209.224.210
125.209.224.234
SPF 레코드의 값들 중 `ip4:125.209.224.0/19` 에 매칭된다는 것을 확인할 수 있겠죠?
이 과정을 통해 구글 메일 서버는 적법한 서버를 통해 메일이 발송되었고
스팸 처리를 하지 않아도 된다고 판단한 후, 제 구글 메일의 inbox 에 메일을 넣어주었다고 보시면 되겠습니다.
메일은 구닥다리처럼 보이지만 여전히 광범위하게 사용됩니다.
메일은 지금도 진화하고 있고 앞으로도 진화할 겁니다.
따라서 메일에 대해 잘 이해하고 활용하는 것이
여러분, 혹은 여러분이 속한 회사의 비즈니스에 중요하다는 것은 명확해 보입니다!
본 포스팅은 제휴마케팅을 통해
소정의 수수료를 지급받을 수 있습니다.