SPF 란?

이메일을 전송하는 SMTP 는 송신자의 IP 를 확인하는 기능이 없습니다. 초기의 인터넷은 대학이나 국가기관등에서만 사용했으므로 지금처럼 스팸 메일이 극성일것이라고 생각할수 없었을 겁니다.

SPF는 이런 문제를 해결하기 위해 송신자가 자신의 메일 서버 정보와 정책을 나타내는 항목을 DNS 에 등록하고 수신자는 수신시 발송자의 IP와 DNS에 등록한 SPF IP 를 비교해서 수신 여부를 결정하는 표준입니다.


SPF에 대한 자세한 내용은 인터넷진흥원의 spam 센터에서 확인해 볼 수 있습니다.

메일서버등록제(SPF: Sender Policy Framework)
메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 이메일에 표시된 발송자 정보가 실제 메일서버의 정보와 일치하는지를 확인할 수 있도록 하는 인증기술

  • 대다수 스팸발송자가 자신의 신원을 감추기 위하여 발송자 주소나 전송경로를 허위로 표기하거나 변경하는 경우가 많다는데 착안

SPF를 이용한 이메일 인증절차

  • 발신자 : 자신의 메일서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록
  • 수신자 : 이메일 수신시 발송자의 DNS에 등록된 SPF 레코드를 확인하여 해당 이메일에 표시된 발송IP와 대조하고 그 결과값에 따라 수신여부를 결정 (메일서버나 스팸차단솔루션에 SPF 확인기능이 설치되어 있어야 함)

특정 도메인이 SPF 필드를 등록했는지 여부는 nslookup 으로 TXT 필드를 조회하면 확인할 수 있습니다.

$ nslookup -q=txt google.com


Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
google.com      text = "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com      text = "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com      text = "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com      text = "v=spf1 include:_spf.google.com ~all"
google.com      text = "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"

Authoritative answers can be found from:

또는 host 명령어를 사용해도 됩니다.

$ host -t txt google.com

google.com descriptive text "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com descriptive text "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com descriptive text "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com descriptive text "v=spf1 include:_spf.google.com ~all"
google.com descriptive text "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"


TXT 레코드중 다음 내용이 SPF 와 관련된 설정입니다.

"v=spf1 include:_spf.google.com ~all"


SPF mechanism

SPF 는 어떻게 동작할지 정의하는 메카니즘(Mechanism)이라 불리는 규칙을 정의할 수 있으며 zero 또는 하나 이상의 메카니즘을 설정할 수 있으며 해석 순서는 앞에서 뒤로 이루어 집니다.

all | ip4 | ip6 | a | mx | ptr | exists | include


메카니즘의 맨 뒤는 다음 4개의 한정자(qualifiers) 중 하나로 끝날 수 있으며 의미는 다음과 같습니다.

  • "+" :   Pass : IP 가 일치하면 SPF 통과합니다.
  • "-":    Fail : IP가 일치하면 SPF 실패 처리합니다.
  • "~":    SoftFail : IP가 일치할 경우 SPF 소프트 페일 처리하며 의미는 수신자가 메일 수신을 허용할 수 있지만 SPF failure 라고 표시합니다.
  • "?":    Neutral : IP 가 일치할 경우 SPF pass 또는 fail 로 처리합니다.


다음과 같은 SPF 설정이 있을 경우 의미는 다음과 같습니다.

v=spf1 a mx ip4:1.2.3.4 include:_spf.google.com ~all

 메카니즘


include 메카니즘


all 메카니즘

"v=spf1 mx -all"

Allow domain's MXes to send mail for the domain, prohibit all others.
"v=spf1 -all"

The domain sends no mail at all.
"v=spf1 +all"

The domain owner thinks that SPF is useless and/or doesn't care.
"v=spf1 mx -all"

Allow domain's MXes to send mail for the domain, prohibit all others.
"v=spf1 -all"

The domain sends no mail at all.
"v=spf1 +all"

The domain owner thinks that SPF is useless and/or doesn't care.



lesstif.com. IN TXT ""v=spf1 ip4:1.2.3.4 ip4:10.20.30.40 -all""


-all 과 ~all 의 의미

  • - 의미: 위 메일발송IP를 위조하여 보내온 메일은 수신자의 메일서버에서 drop
  • -


같이 보기

Ref




blog comments powered by Disqus