金曜日, 7月 27, 2007

クライアント制限設定ファイルを分割

 7月21日「逆引き失敗時の拒否メッセージを変更する方法」の記事に対して、「(拒否メッセージの設定を)別ファイルに分ける必要があるのでしょうか」とのコメントをいただいた。ホワイトリストと拒否条件を一つのファイルに書いているので、逆引き名が「/^unknown$/」にマッチするときの条件は別ファイルにしないと、逆引きできないホストをIPアドレスの十進表記で許可することができないというのが回答になる。7月21日「ルール3に関する説明を訂正」で説明した、Postfixが条件をサーチする順序が原因である。
 しかし、そこではたと気付いた。ホワイトリストファイルと拒否条件のファイルを別々にするという方法がある。そうすれば、ホワイトリストが単独のファイルになるので、逆引き名が一般規則かブラックリストに引っかかるホストの許可条件をIPアドレスの十進表記で指定しても許可されないという問題が解消される。そして、逆引き名が「/^unknown$/」にマッチするときの条件をS25Rのルール1~6といっしょに拒否条件のファイルに組み込むことができる。それに、許可条件と拒否条件とでファイルを分けることにより、ファイルの役割分担がわかりやすくなり、ファイルのメンテナンスがやりやすくなる。
 以前にも、ホワイトリストファイルを別にした方がよいだろうかと考えたことはあったのだが、わざわざ設定方法を変更するほどのメリットはないと思っていた。こんなに大きなメリットを生むとは今まで気付かなかった。
 さっそく検証し、論文の付録A.を書き直した。また、「逆引きできるホストのホワイトリスト登録は、IPアドレスの十進表記でなく逆引き名で指定した方がよい」という注意点は不要になったので、その説明文を削除した。
 なお、逆引きできないという条件は「ルール0」と名付け、ルール1~6の直前に指定するようにした。
 また、ファイル名の例示は、役割をわかりやすく表すものに変更した。main.cfファイルに追加するsmtpd_client_restrictionsパラメータは次のようになる。

spmtd_client_restrictions =
  permit_mynetworks,
  check_client_access regexp:/etc/postfix/white_list,
  check_client_access regexp:/etc/postfix/rejections

0 件のコメント: