작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2005.8.3(수) 오후
상쾌한 아침에 스팸메일로 가득찬 메일함을 열 때 마다 클릭과 삭제의 반복으로 짜증난 하루를 시작한 적은 없는지?
- Antivirus
- RBL, SURBL
- procmail, byspam통한 스팸필터링
- joe job attack에 대한 방어 설정
- spamassassin활용한 점수제 메일 필터링
등 다양한 방법들로 메일 필터링을 하는데 오늘은 SPF에 대해 알아보겠다.
1. SPF(Sender Policy Framework)란
10개의 포털사이트가 SPF기술을 통해서 스팸메일을 필터링할 계획이라는 오늘자 기사를 봤다.
Meng Weng Wong에 의해 2003년에 시작된 SPF기술은 메일의 헤더를 보고 실제 해당 메일서버에서 보내진
것인지를 판단하여 메일 수신을 막는 방법이다.
예를 들어
메일의 From 헤더에 foo@spammer.com 라고 적혀있으면
spammer.com 을 관리하는 DNS를 통해서
해당 메일이 실제 spammer.com에서 설정한 IP와 수신된 메일헤더의 IP와 비교해서 다르면 수신을 거부하게
된다. 즉, 실제로 hanmail.net에서 보내지 않지 않았으면서 메일주소는 @hanmail.net 로 속여서 발송되는
메일은 필터링이 가능하게 되는 것이다.
사진출처 : http://pm-lib.sourceforge.net/
2. SPF 기술 적용위한 DNS 설정
SPF 기술을 적용하기 위해서는 메일서버를 운영중인 사이트의 DNS에는 TXT 레코드 설정이 필요하다.
이 설정은 다른 메일수신서버들에게 SPF정책을 통해 메일을 필터링하도록 도움을 주기위한 설정이지
본인의 메일서버로 수신된 메일이 필터링되도록 설정하는 것이 아니니, DNS 설정했다고 '어~ 필터링이
안되지'하고 헛삽집하지 말기 바란다.
SPF 기술을 적용하겠다고 보도된 10개의 포털 사이트에 대해 DNS 설정을 확인한 결과 5곳의 DNS에는
이미 TXT 설정이 되어 있었다.
※ 10개 포털 사이트
nownuri.net, hanmail.net, chol.com, dreamwiz.com, empas.com(empal.com),
korea.com, hotmail.com, paran.com, naver.com, nate.com
# dig txt 도메인 |
;; ANSWER SECTION: korea.com. 1759 IN TXT "v=spf1 mx ip4:210.117.14.85 ip4:211.109.1.111 ip4:211.109.1.113 ip4:211.109.1.114 ip4:211.109.1.115 ip4:211.109.1.151 ip4:211.109.1.152 ip4:211.109.11.35 ip4:211.109.11.40 ip4:211.109.2.50 ip4:211.109.2.51 ~all" ;; ANSWER SECTION: nownuri.net. 10800 IN TXT "v=spf1 a:203.238.128.57 a:203.238.128.90 ~all" ;; ANSWER SECTION: chol.com. 3600 IN TXT "v=spf1 ip4:203.252.3.0/24 ~all" ;; ANSWER SECTION: dreamwiz.com. 900 IN TXT "v=spf1 ip4:211.39.128.0/24 a mx ptr ~all" ;; ANSWER SECTION: hotmail.com. 3600 IN TXT "v=spf1 include:spf-a.hotmail.com include:spf-b.hotmail.com include:spf-c.hotmail.com include:spf-d.hotmail.com ~all" ;; ANSWER SECTION: spf-a.hotmail.com. 2590 IN TXT "v=spf1 ip4:209.240.192.0/19 ip4:65.52.0.0/14 ip4:131.107.0.0/16 ip4:157.54.0.0/15 ip4:157.56.0.0/14 ip4:157.60.0.0/16 ip4:167.220.0.0/16 ip4:204.79.135.0/24 ip4:204.79.188.0/24 ip4:204.79.252.0/24 ip4:207.46.0.0/16 ip4:199.2.137.0/24 ~all" |
저 설정을 보고 어떻게 TXT를 설정해야하는지 눈치를 챘을 것이다.
---------- ---------------------------------------------------------------------------
methods 설 명
---------- ---------------------------------------------------------------------------
v=spf1 SPF의 버전
ip4 메일을 송신하는 IP주소들. 211.39.128.0/24처럼 CIDR형태로 표시 가능
a DNS의 A 레코드로 설정한 IP주소를 sender로 설정
예를 들어 dreamwiz.com라면
dreamwiz.com의 IP 211.39.128.129와 211.39.128.129을 sender로 판단함을 의미
a:foo.com 처럼 도메인을 지정할 수도 있다.
mx MX 레코드에 지정한 IP주소들을 sender로 판단하라는 의미
ptr IP에 대해 lookup을 하여 PTR 레코드에 지정되어 있으면 sender로 판단하라는 의미
include 지정한 도메인의 TXT 레코드에서 설정을 찾는다.
~all 이 method는 TXT 레코드의 끝에 넣어주기 바란다.
---------- ---------------------------------------------------------------------------
all | all 은 레코드 값의 가장 뒤에 지정을 한다. all 의 의미는 앞의 설정 이 외의 나머지를의미한다. all 앞의 기호는 4 가지의 표현이 있으며 각각 다음의 의미를 지닌다. all 앞의 -,~,+,? 기호는 아래의 모든 설정에서 사용이 가능하며, 생략시에는 + 가 기본값으로사용이 됨을 의미한다.
-all (fail) 앞의 조건과 맞지 않다면 거부 |
a | a 레코드에 지정된 IP 와의 매칭을 비교 한다.
v=spf1 a -all v=spf1 a:exmaple.com -all v=spf1 a:exmaple.com/24 -all |
mx | mx 레코드에 지정된 IP 외 매칭을 비교한다.
v=spf1 mx -all v=spf1 mx:exmaple.com -all v=spf1 mx:exmaple.com/24 -all |
ptr | ptr 레코드에 지정된 IP 와 매칭을 비교한다.
v=spf1 ptr -all v=spf1 ptr:exmaple.com -all |
ip4 | ipv4 규약의 ip 주소와 비교한다.
v=spf1 ipv4:192.168.0.1/16 -all v=spf1 ipv4:192.168.0.1 -all |
ip6 | ipv6 규약의 ip 주소와 비교. ipv4 와 문법이 동일 함. |
include | 지정된 도메인의 TXT 레코드의 값을 가져와 비교. 만약 지정된 도메인의 TXT레코드가 존재하지 않을 경우 에러로 처리 됨.
v=spf1 include:example.com -all |
더보다 자세한 사항은 http://spf.pobox.com/mechanisms.html 를 참조하기 바란다.
3. 관련 사이트
* SPF
http://spf.pobox.com/
http://spf.pobox.com/faq.html
* SPF Mechanisms
http://spf.pobox.com/mechanisms.html
* An Overview of the Sender Policy Framework
http://www.msexchange.org/tutorials/Sender-Policy-Framework.html
* SPF기술을 위한 DNS 설정
http://www.petri.co.il/sender_policy_framework.htm
* SPF Council (SPF 기술, 표준에 대해 논의)
http://spf.mehnle.net/Home_Page
* SPF 테스트
http://www.schlitt.net/spf/tests/
* Domain Registrars and DNS Providers that Support SPF
http://www.kitterman.com/spf/txt.html
* sendmail에서 SPF를 위한 설정(Milter-SPF 설치 방법)
http://spf.pobox.com/sendmail-milter-INSTALL.txt
http://www.brandonhutchinson.com/Installing_Milter-SPF_with_Sendmail.html
'Java' 카테고리의 다른 글
JNI (Java Native Interface) 란 ? (0) | 2010.05.17 |
---|---|
네트워킹 - 서브넷 마스크 계산하기 (0) | 2010.04.22 |
웹인증을 요구하는 사이트에 http 헤더 설정하기 (0) | 2010.04.21 |
log4j의 초간단 사용법 - 날짜별, 패키지(클래스)별, 파일생성 (0) | 2009.07.23 |
Log4J 란 (0) | 2009.07.17 |