あどけない話

インターネットに関する技術的な話など

Receiver Policy Framework バージョン 0.2 のリリース

SenderID/SPF に加えて、DomainKeys/DKIM を実装した RPF をリリースしました。

背景

メールアドレスの詐称を判断できるようするドメイン認証には、IP ベースと署名ベースの2種類があり、それぞれに長所短所があります。

RPF は、メールの受信側において、ドメイン認証を含む複数の情報を元に、MTA の挙動を決定するプログラムです。SendmailPostfix がサポートする Milter プログラムとして実装されています。

バージョン 0.1 からの違い

  • 一枚岩だったプログラムを分割し、複数のライブラリとして公開しました。
    • ドメイン認証のライブラリ名は domain-auth です。
  • インストールを難しくしているライブラリを一から書き直しました。
    • DNS ライブラリを作成し、Gnu adns は不要になりました。
    • Parsec 3 が使いたいのですが、Haskell Platform が提供するのは Parsec 2 です。そこで、一から Appar というパーサーライブラリを書きました。
  • hackageDB に登録し、cabal install のみでインストールできるようにしました。
  • IP アドレスリストやドメインリストを探索するデータ構造を線形リストから木に変えました。
    • ポリシーファイルに長いリストを書いても、もう大丈夫です。
  • プロセスベースから、スレッドベースにしました。
    • select() の 1,024 コネクションの壁を越える c10k ライブラリを作成しました。
  • DomainKeysDKIM の検証側を実装しました。
  • デバッグモードでは、ログを端末に出すようにしました。