Mac OS X Server 10.4(Tiger)にバンドルされるpostfix環境をなるべく壊さずにSPF(Sender Policy Framwork)に対応させるメモ書き。
cd /usr/libexec/postfix
sudo curl -O http://www.openspf.org/svn/software/postfix-policyd-spf-perl/trunk/postfix-policyd-spf-perl
cd /etc/postfix
main.cfとmaster.cfを編集。差分は
cube:/etc/postfix% diff -u main.cf.bak main.cf
--- main.cf.bak 2006-08-15 07:48:28.000000000 +0900
+++ main.cf 2006-08-26 22:41:59.000000000 +0900
@@ -665,7 +665,7 @@
enable_server_options = yes
smtpd_sasl_auth_enable = yes
smtpd_use_pw_server = yes
-smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,permit
+smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,check_policy_service unix:private/policy,permit
smtpd_pw_server_security_options = plain,login
myhostname = cube.aikawa.jp
content_filter = smtp-amavis:[127.0.0.1]:10024
cube:/etc/postfix% diff -u master.cf.bak master.cf
--- master.cf.bak 2006-06-22 21:03:48.000000000 +0900
+++ master.cf 2006-08-26 22:41:58.000000000 +0900
@@ -152,3 +152,5 @@
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o receive_override_options=no_header_body_checks
+policy unix - n n - - spawn
+ user=nobody argv=/usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl
こんな感じ。postfix-policyd-spf-perlを軽く動かしてみるとエラー発生
% sudo -u nobody /usr/bin/perl /usr/libexec/postfix/postfix-policyd-spf-perl Can't locate Mail/SPF/Query.pm in @INC (@INC contains: /System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5.8.6 /Library/Perl /Network/Library/Perl/5.8.6/darwin-thread-multi-2level /Network/Library/Perl/5.8.6 /Network/Library/Perl /System/Library/Perl/Extras/5.8.6/darwin-thread-multi-2level /System/Library/Perl/Extras/5.8.6 /Library/Perl/5.8.1 .) at postfix-policyd-spf-perl line 14. BEGIN failed--compilation aborted at postfix-policyd-spf-perl line 14.CPAN使って必要なモジュールを片っ端からインストール。そしてpostfixに喝!
sudo cpan Mail::SPF::Query sudo postfix check sudo postfix reload届いたメールのメールヘッダにReceived-Spf:が挿入されることを確認。これで他ドメインから受けたメールはSPFチェックが効くようになった。ただし他ドメインのためにDNSのTXT-RRにSPF情報を付加することはMac OS X Serverの「サーバ管理」の仕様(バグ)のためできない。(詳細)
