携帯サイトをターゲットに会員向けメール配信をしたいと考えている。
高速かつSPAM問題を考えるとやはり対応が必要なのはSPFかなと調べて
みた。
そもそもSPFとは Sender Policy Framework
の略称で送信元ドメインの偽証を防ぐ手段らしい。
いちお大手4社は対応済み (Docomo,AU,Softbank,Willcom)
対応への提言として
http://jeag.jp/news/pdf/wireless20060223.pdf
対応状況とかまとめられてるが本稿とはあんまり関係ない。
そもそも認証をするためにはDNS側およびメールサーバ側での実装が必要
になる。
同様な仕様としてDomainKeyという仕組みがあるこれも同様に送信者側の
偽装を防ぐ仕組みではあるがメール側にデジタル署名をするなど差がある
ようだ。一報SPFは送ってきたやつが登録されているかを確認することに
よりほんとにそいつ?という仕組みらしい。
対応に関しては日本ではこんな資料があった
http://www.iij.ad.jp/news/pressrelease/2006/0223.html
BIND側の設定
BINDゾーンファイルにおいてテキストレコードを追記する。
#cat ostl.zone
省略
ostl.net. IN TXT "v=spf1 MX ~all"
IPv4のアドレスによる表記もある。
ostl.net. IN TXT "v=spf1 +IP4:192.168.254.1/28 ~all"
受信側の対応
postfixにはこれを組み込めば良いらしい
Postfix-Policyd
perlのプログラムなのでCPANカラの導入が必要。
Mail::SPF::Query
良い子は真似してはいけないROOTインスト
[root@centos Mail-SPF-Query-1.999.1]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Warning: prerequisite Net::CIDR::Lite 0.15 not found.
Warning: prerequisite Net::DNS 0.46 not found.
Warning: prerequisite Sys::Hostname::Long 0 not found.
Writing Makefile for Mail::SPF::Query
[root@centos Mail-SPF-Query-1.999.1]# make
cp lib/Mail/SPF/Query.pm blib/lib/Mail/SPF/Query.pm
cp bin/spfd blib/script/spfd
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/spfd
cp bin/spfquery blib/script/spfquery
/usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/spfquery
Manifying blib/man1/spfd.1
Manifying blib/man1/spfquery.1
Manifying blib/man3/Mail::SPF::Query.3pm
[root@centos Mail-SPF-Query-1.999.1]# make install
Installing /usr/lib/perl5/site_perl/5.8.5/Mail/SPF/Query.pm
Installing /usr/share/man/man1/spfquery.1
Installing /usr/share/man/man1/spfd.1
Installing /usr/share/man/man3/Mail::SPF::Query.3pm
Installing /usr/bin/spfquery
Installing /usr/bin/spfd
Writing /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/auto/Mail/SPF/Query/.packlist
Appending installation info to /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/perllocal.pod
あ、make testも。
/etc/postfix/master.cf
policy unix - n n - - spawn user=nobody argv=/usr/bin/perl /usr/libexec/postfix-policyd-spf-perl
postfix-policyd-spf-perl-1.08.1.tar.gz
cp ./postfix-policyd-spf-perl /usr/libexec/postfix/
/etc/postfix/main.cf
smtpd_recipient_restrictions =
check_policy_service unix:private/policy を追加する。
注記
SoftWareDesignの2月号のDNS特集にSPF/DomainKeyによる構築事例があった。