Postfix でSPF に対応しようと思い作業したメモ。
受信側の設定
参考にしたサイトはTATSUYA.info – サーバ構築関係/PostfixでSPF/DomainKeysに対応/SPF(C) で、ここに書かれている手順に従ってlibspf2 と Policyd を導入すれば問題なく利用できるようになりました。導入した環境は、Vine 3.2 + Postfix 2.2.5 。
有効に動作していると、受信した際にメールのヘッダに、
Received-SPF: pass (mail.u-1.net: domain of bounces.amazon.com designates 207.171.188.8 as permitted sender) client-ip=207.171.188.8; envelope-from=emailSenderApp+EQH00H53JNFR-1RSXYQ8ODI5X5-9R2G7HIGYP8U@bounces.amazon.com; helo=mm-retail-out-103.amazon.com;
みたいな情報が追加されるようになります。受信する側の設定はこんなもので。必要に応じてSpamAssassin とかのルールを追加して、passした際のスコアを減じるなどしてやるとよろしいかと。
送信側の設定
Postfix の設定ではないけれども、送信する側は、DNSのレコードを適切に追加してやる必要があるということです。この辺、ややこしくて、完全に理解し切れてないけれども、ウチのようにシンプルな構成のネットワークならば、
u-1.net. IN TXT "v=spf1 ip4:124.41.72.8 ~all"
というようなTXTレコードを追加してやればOK。実際に、dig
コマンドなどで確認すると、
$ dig @ns1.u-1.net u-1.net txt ; <<>> DiG 9.3.2-P2 <<>> @ns1.u-1.net u-1.net txt ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18410 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 1 ;; QUESTION SECTION: ;u-1.net. IN TXT ;; ANSWER SECTION: u-1.net. 86400 IN TXT "v=spf1 ip4:124.41.72.8 ~all" ;; AUTHORITY SECTION: u-1.net. 86400 IN NS ns1.everydns.net. u-1.net. 86400 IN NS ns2.everydns.net. u-1.net. 86400 IN NS ns3.everydns.net. u-1.net. 86400 IN NS ns4.everydns.net. u-1.net. 86400 IN NS ns.maihama-net.com. u-1.net. 86400 IN NS ns1.u-1.net. ;; ADDITIONAL SECTION: ns1.u-1.net. 86400 IN A 124.41.72.8 ;; Query time: 44 msec ;; SERVER: 124.41.72.8#53(124.41.72.8) ;; WHEN: Fri Feb 23 13:49:29 2007 ;; MSG SIZE rcvd: 212[/code] というように、TXTレコードの追加が確認できます。 実際に設定が適当かどうかは、check-auth@verifier.port25.com 宛へメールを送信すると、チェックして結果を送り返してくれます。ウチの場合、どうもDNS 情報の更新が完了してないようで、まだ<code>neutral</code> が帰されるのですが、テストメールを送信すると、受信側ではしっかり<code>Pass</code> になっているので、とりあえずは良いのかな、と。 <h3>Amavisd-new との併用でトラブった?</h3> バージョンがやや古めの<a href="http://www.ijs.si/software/amavisd/">Amavisd-new</a> を稼働させていた環境だと、 [code] Feb 23 14:16:18 host amavis[30504]: (27164-05) run_command: child process [30504]: Error closing main::stdin: \311\324\300\265\244\312\245\325\245\2 41\245\244\245\353\265\255\275\322\273\322\244\307\244\271 at /usr/sbin/amavisd line 1879.\n Feb 23 14:16:18 host amavis[27164]: (27164-05) TROUBLE in check_mail: parts_decode_ext FAILED: parsing file(1) results - missing last 1 results at ( eval 40) line 154. Feb 23 14:16:18 host amavis[27164]: (27164-05) PRESERVING EVIDENCE in /var/amavis/tmp/amavis-20070223T141618-27164
のようなエラーがmaillog に記録され、キューも大変なことになりかけました。
私の環境ではMOX – Take It Eazy! 配布の日本語版を使用しているので、そちらから最新のアーカイブをダウンロードして、導入したら解消しました。
$ wget http://marijuana.ddo.jp/download/amavisd-new-2.4.3-JP.tgz $ gtar xvzf amavisd-new-2.4.3-JP.tgz $ cd amavisd-new-2.4.3-JP $ sudo sh amavisd_install.sh update perl
update perl
をパラメータとしてamavisd_install.sh
に渡してやると、Amavisd-new 本体および、使用するPerlのモジュールが更新されるます。エラー内容からすると、Amavisd-new 本体のバグがあったのかな?
コメント