Sender Policy Framework

planet.findout.or.kr 이라던가 기타 여러 곳에서 spf 에 관련된 내용을 듣다가 spf filter 를 붙이면 얼마나 효과가 있을지 궁금해지길래 postfix 에 spf 패치를 해봤습니다. 정상적으로 spf 인증을 통과한 메일헤더에는 pass 했다는 표시가 붙고, 네임서버가 spf 를 지원하지 않는 곳이라면 none, 실패했을 경우엔 spf 정책에 따라 fail 이나 softfail 이라는 에러코드가 붙게 됩니다.

spf 는 Sender Policy Framework 의 약자로 메일에 붙은 return address 를 이용 메일이 인증받은 메일 서버를 통해 발송되었는지를 체크하는 방식입니다. dns(송신 측) 와 smtp server(수신 측) 모두 spf 를 지원하는 경우에 사용할 수 있습니다. (생각해보면 smtp server 대신 mta 에서 지원해도 안될 건 없을거라고 생각합니다.)

SPF makes it easy for a domain, whether it’s an ISP, a business, a school or a vanity domain, to say, “I only send mail from these machines. If any other machine claims that I’m sending mail from there, they’re lying.”

spf 의 원리를 아주 간단하게 표현해 놨길래 인용해봅니다… “난 이 메일서버를 통해서만 메일을 보내니까 만약 다른 메일 서버를 통해 이 메일주소로 메일이 온다면 그건 허위 메일이야!!” 뭐 이 정도로 이해하면 되겠습니다.

아래에 quote 된 결과와 같이, 2006년 9월 24일 현재 대부분의 이메일 서비스에서 spf 를 지원하고 있는 것을 확인할 수 있습니다. 다만 sk telecom 의 경우 이메일 고지서의 return address 가 emailadmin@emailrms.sktelecom.com 로 명시되어 있기 때문에 이메일 고지서는 spf 의 영향을 받지 않아 약간 아쉬움이 남네요. (사실 sk 에 아쉬운 부분은 그것 만이 아니죠. 괜히 ‘ass k’ 라고 부르는 게 아닙니다.)

yahoo 에서 spf 를 지원 안한다는 점 또한 무척이나 아쉬운 부분 중 하나입니다.

[spoiler ‘apblind”결과보기”결과 감추기’]

aqua@Macintosh aqua $ nslookup
> set q=txt

> unfix.net
unfix.net text = “v=spf1 a mx ptr ~all”

> dreamwiz.com
dreamwiz.com text = “v=spf1 ip4:211.39.128.0/24 ip4:211.39.129.0/24 ip4:222.122.42.0/25 ~all”

> korea.com
korea.com text = “v=spf1 mx ip4:211.49.224.0/24 ip4:211.109.1.0/24 ip4:211.49.227.32 ip4:211.49.227.33 ~all”

> hanmail.net
hanmail.net text = “v=spf1 ip4:211.43.197.0/24 ptr ~all”

> hotmail.com
hotmail.com text = “v=spf1 include:spf-a.hotmail.com include:spf-b.hotmail.com include:spf-c.hotmail.com include:spf-d.hotmail.com ~all”

> gmail.com
gmail.com text = “v=spf1 redirect=_spf.google.com”

> _spf.google.com
_spf.google.com text = “v=spf1 ip4:216.239.56.0/23 ip4:64.233.160.0/19 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ?all”

> nate.com
nate.com text = “v=spf1 ip4:203.226.253.0/24 ip4:203.226.255.0/24 ~all”

> naver.com
naver.com text = “v=spf1 ip4:220.95.234.208 ip4:61.74.70.0/23 ip4:222.122.16.0/24 ip4:220.73.156.0/24 ip4:211.218.150.0/24 ip4:211.218.151.0/24 ip4:211.218.152.0/24 ip4:218.145.30.0/24 ip4:220.95.237.0/24 ~all”

> msn.co.kr
*** Can’t find msn.co.kr: No answer

> msn.com
msn.com text = “v=spf1 include:spf-a.hotmail.com include:spf-b.hotmail.com include:spf-c.hotmail.com include:spf-d.hotmail.com ~all”

> yahoo.com
*** Can’t find yahoo.com: No answer

> yahoo.co.kr
*** Can’t find yahoo.co.kr: No answer

> hitel.net
hitel.net text = “v=spf1 ip4:211.41.82.0/24 a mx ptr ~all”

> sktelecom.com
sktelecom.com text = “v=spf1 ip4:203.236.1.100 -all”

> emailrms.sktelecom.com
*** Can’t find emailrms.sktelecom.com: No answer

[/spoiler]

이번엔 대학 메일 서비스의 경우를 살펴보겠습니다. 결과부터 말하자면 아주 실망스럽습니다. 제가 테스트 해본 대학들의 경우 전부 spf 를 지원하지 않네요.

[spoiler ‘apblind”결과 보기”결과 감추기’]
aqua@Macintosh aqua $ nslookup
> set q=txt

> hongik.ac.kr
*** Can’t find hongik.ac.kr: No answer

> wow.hongik.ac.kr
*** Can’t find wow.hongik.ac.kr: No answer

> korea.ac.kr
*** Can’t find korea.ac.kr: No answer

> snu.ac.kr
*** Can’t find snu.ac.kr: No answer

> yonsei.ac.kr
*** Can’t find yonsei.ac.kr: No answer

> hanyang.ac.kr
*** Can’t find hanyang.ac.kr: No answer

[/spoiler]

spf 를 지원하기 위해선 네임서버의 zone 파일에 “IN TXT “v=spf1 a mx ptr ~all” 정도의 룰을 삽입하면 되며, 룰은 아래의 링크를 이용하면 쉽게 만들 수 있습니다.

http://www.openspf.org/wizard.html?mydomain=&x=21&y=7

p.s) 국내 포털이 spf 를 지원하기 시작한 이후로 스팸의 70% 이상은 spf 로 걸러낼 수 있게 되었습니다.

Published by

6 thoughts on “Sender Policy Framework”

  1. spf 의 level은 여러가지가 있는데,

    neutral, softfail, fail 등이 있어요.

    그리고 spf가 설정되지 않은 도메인은 neutral(혹은 unknown?) 에 속하기 때문에 별로 걱정 할 필요가 없지요.

    fail / softfail 만 거르면 된답니다.

  2. 아하 hanmail 같은데서 보내는건 none 으로 나오고 msn.com 같은데서 보내는건 pass 로 나오길래… none 이 실패한게 아닐까 했는데 그건 아닌가보군요…

    korea.com 도 spf 를 지원하는데 누가 korea.com 에서 보낸걸로 사칭하고 보내니까 softfail 이라고 나오네요… warn_only 를 제거해버려도 될 거 같군요

  3. 예 Sender Policy Framework 이라는거 보니까 같은 게 맞는거 같아요… 근데 다음/네이버등의 포털과 함께 라고 되있는데 정작 다음은… 아직도 spf 가 없네요…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">