postfix 에서 spf 를 사용하는 방법은 크게 아래와 같이 세가지로 나눌 수 있겠습니다. spf 가 무엇인지에 대해서는 아랫 글을 참고하시기 바랍니다.
http://b.mytears.org/2005/07/226
- spf patch (for postfix 2.1.x or 2.2.x)
- policyd
- milter (need postfix 2.3.x)
각 방법에 대해 설명하자면 아래와 같습니다.
spf patch 를 이용하는 방법
postfix 를 2.1 ~ 2.2.x 사이의 버젼으로 사용하시는 경우 아래 url 에서 patch 를 받을 수 있습니다.
2.1 ~ 2.2.x: http://www.ipnet6.org/postfix/spf/
2.2.x only: http://www.linuxrulz.org/nkukard/postfix/
위의 패치는 libspf2-2.0.x 버젼이 필요하고, 아래 패치는 libspf2-2.1.x 버젼이 필요합니다. 장점이라면 c 로 짜여져 있고, 별도의 프로세스가 필요 없다는 점이라고 할 수 있겠습니다.
하지만 대부분의 배포판에서 기본으로 체택하지 않고 있기 때문에 직접 소스 패키지를 가져다가 패치를 적용하고 다시 빌드해서 사용해야 한다는 단점이 있습니다. 또한 postfix 2.3 대 버젼을 위한 패치는 아직 나와있지 않기 때문에 최신 버젼을 사용하시는 경우 이 방법은 사용하실 수 없습니다.
패치를 적용해서 빌드한 후 main.cf 에 아래와 같은 설정을 넣어주는 것으로 spf 를 사용할 수 있습니다. 두가지 패치 모두 설정 방법은 동일합니다.
[spoiler ‘simple”추가할 부분”숨기기’]
1 2 3 4 5 6 7 |
smtpd_recipient_restrictions = ... reject_unauth_destination, reject_spf_invalid_sender, ... # spf query 결과를 마킹만 하게합니다. (optional) spf_mark_only = yes |
[/spoiler]
policyd 를 이용하는 방법
이 경우는 별다른 패치가 필요없고 main.cf 와 master.cf 만을 수정하면 되므로 실제 적용하기가 아주 쉽습니다. 또한 postfix 에 기본으로 spf 관련된 policyd 가 포함이 되어 있으므로 따로 무언가를 가져다 설치할 필요도 없습니다.
[spoiler ‘simple”master.cf”숨기기’]
1 2 |
policy unix - n n - - spawn user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf.pl |
[/spoiler]
[spoiler ‘simple”main.cf”숨기기’]
1 2 3 4 5 |
smtpd_recipient_restrictions = ... reject_unauth_destination, check_policy_service unix:private/policy, ... |
[/spoiler]
위의 master.cf 에서 policyd-spf.pl 파일의 경로는 자신의 환경에 맞게 수정하셔서 사용하시면 됩니다. 제 경우엔 ‘epm -ql postifx|grep spf’ 를 통해 spf 와 관련된 policyd 파일을 찾아 /usr/libexec/postfix/ 에 복사 해놓고 사용 중 입니다.
* spf 가 표준으로 채택되기 전까진 이런 식으로 유지가 될 모양입니다. (아래 url 의 policy server/library 부분의 Note 를 보시길)
http://www.postfix.org/addon.html
milter 를 이용하는 방법
milter 는 sendmail 쪽에서 만들어낸 mail filtering interface 입니다만 postfix 에서도 2.3 대 버젼으로 들어서면서 지원하기 시작했습니다. 역시나 별다른 패치가 필요 없고, spf milter daemon 을 띄운 후 main.cf 에 약간의 설정을 추가해주는 것만으로 사용이 가능합니다.
[spoiler ‘simple”main.cf”숨기기’]
# milter 를 여러개 사용하려는 경우 , 로 이어서 써주면 됩니다.
smtpd_milters = inet:호스트네임:포트번호
[/spoiler]
단점이라면 별다른 프로세스가 떠있어야 한다는 점과 최신의 postfix 를 사용해야만 된다는 점이 되겠습니다.
스팸이 사라지는 그 날까지 -_-! 파이팅입니다!!