Monthly Archives: March 2007

화이트도메인, SPF, RBL & Postfix

회사 서비스에서 회원들에게 메일을 보내보면, 메일이 잘 안가고 반송되고 해서, 얼마동안 이메일 발송을 거의 안했었는데, 작년에 화이트 도메인 제도가 포탈 등에 적용되면서 좀 상황이 나아진 것도 같네요.

자세한 내용은 www.kisarbl.or.kr에서 확인할수 있습니다.

자신의 도메인(DNS) 서비스에서 어떤 아이피 주소에서 메일을 보낼수 있는지를 DNS TXT 영역에 등록합니다. 메일 받는 서버에서 메일을 보내는 도메인의 DNS TXT를 확인하여 등록된 아이피 주소와 다르면 메일을 드랍하도록 하는 원리입니다. SPF(Sender Policy Framework)라고 불리는 기술인데 2006년 RFC 4408  표준으로 지정되었으며, KISA에서 발빠르게 도입을 하여 국내 메이저 포탈등에 대부분 적용되었습니다.

여기 등록을 하면, 다른 화이트도메인 서비스에 등록한 서버간에는 메일이 원활히 전달되며, 서비스에 등록하고 스팸을 보낼수도 있으므로, 등록한 도메인에 대해서 내부적으로 평가하는 시스템을 갖춰서 스팸을 보내는것으로 판단되면 RBL(Real-time Blackhole List)에 등록되어 메일 전달이 어렵게 됩니다. RBL은 스팸을 보내는 아이피주소인지 알려주는 서비스로 여러곳에서 제공하고 있습니다. 원리는 간단합니다. 아이피주소를 조회하면 그 아이피가 스팸을 보내는지 알려주는 서비스입니다. 서비스를 제공하는 곳에 따라서 다른 아이피 주소 리스트를 관리하기 때문에, 보통 여러 RBL을 참조하도록 메일서버를 설정합니다.

KISA에서 제공하는 RBL이 spamlist.or.kr이며, 여기를 보시면 여러 RBL에 대한 비교가 있습니다.

그럼 화이트 도메인 등록과 메일서버 세팅을 하면서 사용한 방법을 설명드리도록 하겠습니다. 먼저 DNS서버의 해당 도메인의 zone 파일에 다음 라인을 삽입하고

내도메인명.  IN   TXT   “v=spf1 ip4:메일보내는아이피1 -all

named를 재시작했습니다. -all이나 ~all로 지정할수 있는데, -all은 내도메인명에서 발송되는 메일중 아이피가 SPF 리스트에 없으면 무조건 드랍하고, ~all로 지정하면 받는메일서버의 정책에 따라 판단하라 입니다. 여러 아이피를 지정할수 있으며 1.2.3.0/24 형태로 아이피 영역을 지정할수도 있습니다.

이렇게 하고 도메인정보가 어느정도 전파되면, www.kisarbl.or.kr에서 화이트도메인으로 등록을 할수 있습니다. 등록방법도 어렵지 않고, 친절히 잘 설명되어 있습니다.

메일서버는 sendmail, qmail을 거쳐서 postfix를 사용하고 있는데 postfix가 제일 설정이 쉽고 모듈화가 잘 되어있는듯하더군요… 하여튼 postfix에서 RBL 등록하는 방법은 매우 간단합니다. main.cf 파일에서 smtpd_recipent_restrictions에 적당한 위치에 reject_rbl_client 항목을 추가해주면 됩니다. 제 서버 설정입니다:

smtpd_recipient_restrictions =
   permit_sasl_authenticated,
   reject_invalid_hostname,
   reject_non_fqdn_hostname,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   reject_unknown_sender_domain,
   reject_unknown_recipient_domain,
   permit_mynetworks,
   reject_unauth_destination,
   reject_rbl_client spamlist.or.kr,
   reject_rbl_client cbl.abuseat.org,
   reject_rbl_client list.dsbl.org,
   reject_rbl_client sbl.spamhaus.org,
   reject_rbl_client pbl.spamhaus.org,
  permit

smtpd_recipent_restrictions 원래 설정된 항목에서 reject_rbl_client들만 원하는 위치에 등록하면 됩니다. 위에서부터 순차적으로 처리하므로 위치는 원하는 위치에 두시면 됩니다.

메일서버에 RBL을 지정하고 나니 스팸메일 95% 이상이 걸러지는것 같네요… 안오는 메일이 있으면 문제지만 그건 RBL에 아이피가 등록되면 보내는 측에서 잘못한거니 그쪽에서 해결해야할 문제죠. 예전에 실수로 서버에 프록시를 테스트용으로 잠깐 열어두었다가 해외 RBL에 서버중 하나가 등록된 적이 있었는데 RBL에서 빠른 시간내에 제거하는 게 어렵더군요. 등록되는 RBL에 따라 제거 방법도 다르고요… 관리하는 메일서버에서 스팸이 나가지 않도록 잘 관리해야겠습니다.

Synergy로 여러컴퓨터 편하게 쓰기

Synergy는 하나의 마우스와 키보드로 여러 컴퓨터를 제어할수 있는 프로그램입니다. 원격데스크톱이나 VNC류의 프로그램들은 하나의 화면으로 여러 컴퓨터를 보도록 해주지만, Synergy는 화면은 따로따로 봐야합니다. 한 책상에 2개의 컴퓨터와 두개의 모니터가 있다면 아주 유용하게 쓸수 있습니다. 키보드와 마우스는 하나만으로 두컴퓨터를 자유롭게 사용할수 있죠. 프로그램도 가볍고 설정만 좀 하면 하나의 컴퓨터에 듀얼 모니터를 쓰는 것과 느낌이 비슷합니다. 그리고 간단한 텍스트는 클립보드로 복사가 되서 양쪽으로 쉽게 정보를 주고 받을수 있습니다.

얼마전에 친구 블로그를 통해 알게된 프로그램인데, 회사에 새 데스크탑이 들어와서 노트북은 귀찮아서 잘 사용안했었는데, 시너지로 연결하여 편하게 사용하고 있습니다.

단 사용하면서 한가지 문제가 있었습니다. 한영전환이 키보드로 안되는 치명적인 문제가 있는데, 이 문제를 해결한 패치버전을 찾았습니다 🙂

http://www.magoja.com/tt/242

한글패치된 1.3.1 인스톨 버전입니다: SynergyInstaller_hangulkey.exe

제 서버에서도 받으실수 있습니다: 1020477966.xxx

출처: http://www.javaservice.net/~java/bbs/read.cgi?m=etc&b=etc&c=r_p&n=1151464351&p=1&s=t

XP에서 멀티쓰레드 프로그램 디버깅시 멈추는 문제

XP에서 개발한 이후로 디버깅하면서 모든 프로그램이 멈추는 듯한 현상이 자주 발생했었는데, 이제야 문제에 대한 해결책(?)을 우연히 블로그에서 발견하게 됐습니다.

http://snaiper.tistory.com/198

2000에서 개발할때까지는 디버깅에 전혀 문제가 없었는데, 멀티쓰레드 프로그램 디버깅을 할때 메인 쓰레드가 아닌곳에 breakpoint를 잡고 디버깅하다 보면 마우스만 움직이고 전체 프로그램이 클릭도 안되는 상황이 발생하더군요. 그래서 2000에 개발환경도 갖춘적도 있었는데, 최근에는 주로 OutputDebugString로 원시적인 디버깅을 많이합니다. ㅎㅎ

정확한 원인은 잘 모르겠지만, 고급텍스트서비스라는데서 글로벌 락을 이용해서, 디버거에서 그쪽에 락을 걸어버려서 다른 모든 프로그램들도 데드락이 걸리는거라는 거 같습니다. –;

해결책은

제어판-국가및언어옵션-언어탭-텍스트 및 입력언어 “자세히”-고급탭-고급텍스트서비스사용안함에 체크하고 리부팅

이렇게 바꾸면 멈추는 현상이 대부분(?) 없어진다고 하는군요.