SPF対応(CentOS Postfix)
メールサーバ(Postfix)をSPF(Sender Policy Framework)の検査に対応してみる。相手にチェックさせるだけであればDNSにレコードがあるだけでいいので、DKIM,DomainKeysと比べて実装はしやすい。自身に届くメールのチェックをするにはPosftfixの「check_policy_service」でチェックするようにする。
DKIM(Domainkeys)対応はこちら
必要なパッケージのインストール
yum install perl-Mail-SPF perl-Sys-Hostname-Long
SPFのチェック用のモジュールはパッケージではないのでソースをダウンロードしてくる(perlスクリプト)
http://www.openspf.org/Softwareのあたりから、postfix-policyd-spf-perl-2.010.tar.gzをダウンロードしてくる。
ファイルの配置
tar xzvf postfix-policyd-spf-perl-2.010.tar.gz cp postfix-policyd-spf-perl-2.010/postfix-policyd-spf-perl /usr/local/lib/postfix-policyd-spf-perl
/etc/postfix/master.cf
policy unix - n n - 0 spawn user=nobody argv=/usr/bin/perl /usr/local/lib/policyd-spf-perl
/etc/postfix/main.cf(Postgreyと併用)
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, check_policy_service unix:private/policy policy_time_limit = 3600
DNSのレコードにSPFの情報を記述(例)
spf01 IN TXT "v=spf1 +ip4:xxx.xxx.xxx.xxx/24 ~all" spf02 IN TXT "v=spf1 +ip4:yyy.yyy.yyy.yyy/24 ~all" @ IN TXT "v=spf1 include:spf01.example.com include:spf02.example.com ~all"
確認
SPFに対応しているアドレス(gmailなど)とやりとりしてヘッダーにSPFの情報があるか確認
Received-SPF: none ~ Received-SPF: pass ~ Received-SPF: softfail ~
以下のアドレスへメールを送るとチェックしてメールが返信されてくる。(SPF,DKIM,DomainKeysなどがチェックできる)
check-auth@verifier.port25.com sa-test@sendmail.net http://senderid.espcoalition.org/
<追記>
デフォルトだと、「fail」になった時に550でrejectしてしまうので、チェックだけしてスルーするように変更してみた。
< return "550 $helo_authority_exp"; --- > #return "550 $helo_authority_exp"; > return "PREPEND $helo_spf_header" > unless $cache->{added_spf_header}++; 297c299,301 < return "DEFER_IF_PERMIT SPF-Result=$helo_local_exp"; --- > #return "DEFER_IF_PERMIT SPF-Result=$helo_local_exp"; > return "PREPEND $helo_spf_header" > unless $cache->{added_spf_header}++; 371c375,377 < return "550 $mfrom_authority_exp"; --- > #return "550 $mfrom_authority_exp"; > return "PREPEND $mfrom_spf_header" > unless $cache->{added_spf_header}++; 374c380,382 < return "DEFER_IF_PERMIT SPF-Result=$mfrom_local_exp"; --- > #return "DEFER_IF_PERMIT SPF-Result=$mfrom_local_exp"; > return "PREPEND $mfrom_spf_header" > unless $cache->{added_spf_header}++;
</追記>
カテゴリー: Linux
最近のコメント