메일서버 입장에서 보면, 지금 접속해 들어온 IP 주소가 혹시 스패머가 이용하는 설정이 제대로 안되어 아무나 메일 서버로 사용되는 서버이거나, 아니면 실제 메일 발송기가 장착된 스팸 발송 머신이 아닐까 확인할 수 있는 방법이 있다면 참 좋은 것이 아니겠는가?
이를 위해서 별도의 연동 라이브러리가 필요없이 DNS를 기반으로 그 서비스를 한다니 참 신통방통한 방법이다. 그 원리는 다음과 같다.
만약 외부에서 접속해 들어온 IP가 172.17.122.20 이라하고, "172.16.122.20.rbl-service.net" 라는 호스트 명에 해당하는 IP 주소를 찾아보는 일상적인 행위(?)를 자신의 DNS 서버에게 물어 본다고 가정하자. 그러면 그 DNS 서버는 최상위 도메인 net을 주관하는 서버에게 rbl-service.net 의 DNS 서버를 알아낼것이고, 그 서버에게 저런 장황한 영문 호스트가 있는지 물어 보게 된다. 그러면, 그 호스트에 만약 172.16.122.20이 확실히 스패머인지 알고 있다면 "127.0.0.2" 라는 IP 주소를 돌려준다고 하자
이런 시나리오에서 "127.0.0.2" 라는 IP는 결코 사용되지 않는 IP 주소 이지만, (실제 127.0.0.x 는 localhost를 나타내는 127.0.0.1 외에는 존재하지 않는다!) DNS 서비스상 그 내용에는 아무 하자가 없는 패킷이므로 처음 도메인 네임을 찾아본 녀석에게까지 전달된다. 여기서 어떻게 그 IP가 스팸이었는지 아는 방법은 그 회사만의 노하우라고 하자. 우리의 관심사는 어떻게 하나의 IP에 대한 질의/응답 채널을 만들것이냐이고, 위와같이 DNS는 훌륭한 솔루션이 될 수 있다는 것을 알 수 있다.
실제 상황으로 돌아와서 생각해보자. 위에서는 IP 주소를 그대로 사용하였지만, 실제 RBL 서비스 규칙은 IP를 거꾸로 사용한다. 위의 예에서 rbl-service.net에 해당하는 것을 RBL base라하면,
http://www.uceprotect.net/ 에서 제공하는 RBL base로 dnsbl-2.uceprotect.net 이라는 것을 사용해보자. ( http://www.uceprotect.net/en/index.php?m=6&s=11 ) 위의 예에서 사용된 IP를 거꾸로 하면 20.122.17.172 가 되고 여기에 RBL base를 붙이면
20.122.17.172.dnsbl-2.uceprotect.net
과 같이 된다. 이 호스트를 nslookup 명령으로 찾아 보자.
> 20.122.17.172.dnsbl-2.uceprotect.net
Server: 172.16.11.25
Address: 172.16.11.25#53
** server can't find 20.122.17.172.dnsbl-2.uceprotect.net: NXDOMAIN
NXDOMAIN! 이것은 DNS에 타임아웃이 아니라 DNS로부터 온 정상적인 응답이며, Non-eXistent DOMAIN 이라는 뜻이다.
222.111.22.33 이라는 호스트를 질의한다면,
33.22.111.222.dnsbl-2.uceprotect.net과 같이 될 것이다. 이 IP주소는 몇번의 추측으로 찾아낸것이므로, 별 생각하지 마시라.
> 33.22.111.222.dnsbl-2.uceprotect.net
Server: 172.16.11.25
Address: 172.16.11.25#53
Name: 33.22.111.222.dnsbl-2.uceprotect.net
Address: 127.0.0.2
이게 왠일이냐. 127.0.0.2 랜다. 아! 요놈은 스팸 전력이 있는 놈이구나! 하~ 이거 신기하지 않은가?
IP를 DNS에 질의할 때는 위와 같이 IP 주소를 거꾸로 하여 질의하는 경향이 있다. 그 이유는 관리상 편의 때문인데, 위의 예를 가지고 설명하자면, 만약 222.111.22.x 전체가 유동 IP 주소대역이라, 결코 메일을 직접 보낼일이 없는 주소공간이라는 것이 확실하다면, 굳이 255개의 IP 정보를 다 가지고 있을 필요가 없다. 즉,
22.111.222.dnsbl-2.uceprotect.net 이라는 도메인에 맨 앞에 어떤 추가적인 호스트 이름이 오던지 모두 127.0.0.2로 돌려줄 수 있다. 이를 DNS 쪽 용어로는 Wild card 지원이라하는데, 실제 DNS에
*.22.111.222 라는 호스트 명을 127.0.0.2 로 등록하여 놓으면 위 설명과 같은 응답이 가능하다.
아뭏든 위와 같이 DNS 를 기반으로하는 IP 검사방법에 대한 좋은 예가 있으니 뒤져서 머리를 건강하게 해보시라.
GateScan for Email이라는 스팸/안티바이러스 제품에는 이미 RBL을 검사할 수 있는 기능이 UI에 들어 있음에도 잘 사용되지 않는 경향이 있다. 그것은 국내에는 아직 공신력있는 RBL 서비스를 하는 곳이 없기 때문이리라.
언젠가는 쉬는 날이 오겠지요. 그때까지는 달리렵니다.