From: Kouhei S. <ko...@cl...> - 2010-08-04 04:50:51
|
須藤です。 In <84bp9jnarl.wl%og...@ve...> "[milter-manager-users-ja:00107] Re: 汎用ホワイトリスト" on Tue, 03 Aug 2010 21:25:34 +0900, Mitsuru Ogino <og...@ve...> wrote: >> 実は、SIGHUPを送ると設定をreloadしたりします。 >> (うまく動かなかったら教えてください。) > > なるほど。試してみます。/etc/init.d スクリプトのコマンドにあると良いで > すね。 reloadオプションをつけるとSIGHUPを送るようになっています。 >> それでも、設定内容が間違っていたら期待通りに動かなくのは解消 >> できませんね。 >> --show-configで確認してもらうのも手間、ですよね。。。 > > --show-config は文法チェックまでやってくれるのでしょうか。 エラーがあれば報告します。 設定がmilter managerにどのように認識されているかも確認できま す。 >> s25rではなくて、dynamic_hostとかいう名前になって >> >> dynamic_host.add_whitelist >> dynamic_host.add_blacklist >> >> となるとどうでしょうか。 >> 子milterに判断を任せるというよりは、「動的にIPアドレスを割り >> 当てられているホストっぽいかどうか」を判断するリストを変更し >> ている感じがするような気がします。 > > 個人的な違和感の元は、 > > whitelist: 無条件で受信する > blacklist: 無条件で拒否する > > と対なので、対になっていない機能のメソッド名につけられると違和感があり > ます。blacklist から離れた方が良いんじゃないでしょうか。もし、子 > milter を呼ばずに拒否と判定するリストがあれば、それを blacklist と呼ぶ > べきでは、ということです。「blacklist に載っているから milter-greylist > の auto white の対象になった」とかだと混乱しそうです。 うーん、whitelist/blacklistは受信/拒否と結びついているんです か。。。 この機能(動的にアドレスを割り当てられているホストっぽいかど うかをカスタマイズする機能)にはどのような名前がよいと思いま すか? >> clientはわけた方がよいのかどうかはちょっとまだわかりません >> が。。。 > > client を分けるメリットは若干の効率を除けば、正規表現でひっかけようとし > たときに予期せず IPv6 が引っかかるということぐらいでしょうか。S25R がこ > れを踏んで改訂されたのが印象に残っています。しかし、IP アドレスを毎回 > [] で囲うのも美しくないように感じます。 なるほど。 よい記法があれば、というあたりなんですね。 >> 子milterを適用するかどうかの判断にネームサーバのホスト名も使 >> いたい、ということでよいでしょうか。 > > このあたり、milter-manager の役割は何で、子 milter の役割がなにか、とい > うポリシーを持っていただかないと milter-manager が巨大 milter と化して > しまうかもしれません。 はい。 そのため、まずは、(1)どういうことを実現したいのか、というこ とと、(2)どのように実現するのがオススメか、ということを知り たいと思っています。 >> Postfixと互換性のある形式+αがよいかなぁと思っています。 >> cidrの使いやすい例を教えてもらってもよいですか? > > whois データベースを引いた結果を丸ごと載せるのにいつも使っています。取 > 引先とか、監督省庁とかからのメールが拒否されたりしたときは、その IP ア > ドレスを whois で引いて丸ごとホワイトリストに載せています。 > > 自分のアドレスを "My Network" に登録するのも CIDR が良いと思います。 > > また、IPv4 と IPv6 両方を扱おうと思ったら、IPv6 は CIDR 形式しか実用に > ならないと思うので、IPv4 も CIDR で書けた方が良いと思うのですが。 なるほど。 ありがとうございます。 >> > 開発版「逆引きリファレンス」の restrict_accounts_by_list というのは >> > Web を読んでも MAIL FROM なのか RCPT TO なのかが良くわかりませんでしたが >> > (用途から考えれば MAIL FROM?)、両方として >> >> 特定の受信者にだけmilterを適用する例なので、RCPT TOでした。 > (略) >> 他の条件は無視しないで、追加ですね。 > > ...すみません、まだ理解できていません。 > > ・restrict_accounts_by_list にマッチすれば子 milter を呼ぶ > ・restrict_accounts_by_list にマッチしなければ、applicable_conditions > に従う > > とかでしょうか。 * restrict_accounts_by_listにマッチすれば子milterを呼ぶ * restrict_accounts_by_listにマッチしなければ子milterを呼ばない * ただし、他のapplicable_conditionsにマッチしなければ、 restrict_accounts_by_listに関わらず子milterは呼ばれない。 です。 (「restrict_accounts_by_listにマッチ」というのは「アカウン トがリストに含まれるなら」という意味ですよね?) > いずれせよ、テーブルマッチでなくても何らかの記法を作ら > ないと、Ruby コードを読めない人間が付いていけなくなりそうです。 はい。メソッド呼び出しではない形式にはしたいなぁと思っていま す。 >> あぁ、もしかして、各SMTPセッション毎にタグを付けていくという >> ことでしょうか。 >> >> milter managerの動きはmilter毎に適用条件を適用して、そのSMTP >> セッションでmilterを使うかどうかを判断しています。しかし、 >> condition_tableを使った例は、そうではなくて、すべてのSMTPセッ >> ションに対してまずは適用条件を適用して、その結果を使って >> milterを適用するかどうかを判断するということなんですね。 > > そうかもしれません。タグを付けておいて applicable_conditions で判断する > と言っても良いかもしれません。 > > 実用上は、子 milter の結果をみて、条件分岐(関数型の if や case のよう > な)の方がわかりやすいかと思ったのですが、applicable_conditions を前提 > に考えると milter-manager の仕様を大きく変えずに応用範囲を広げるにはこ > の形が良いような気がしました。 なるほど。どうするのが使いやすいか考えてみます。 >> 今でもreloadすれば設定ファイルを再読み込みするので、そのよう >> になると思います。milter managerはメール毎にプロセスは立ち上 >> げません。I/Oを多重化して1つのプロセスで複数のSMTPセッション >> を並行に処理します。 > > なるほど。そうすると DNS やファイルのテーブルを検索した結果をセッション > を超えてキャッシュすることもできそうですね。怒られそうですが、グローバ > ル変数を使えばよいでしょうか。 ちょっと、Rubyの話になってしまいますが、設定ファイルを評価し ている環境はreloadするまでずっと生き残っているので、グローバ ル変数にしなくてもこんな感じで、セッション間でオブジェクトを 共有できます。 counter = 0 define_applicable_condition("Counter") do |condition| condition.description = "SMTPセッション数を数える" condition.define_helo_stopper do |context, fqdn| counter += 1 false end end > 思いつきベースでどこまで実用性があるかは怪しいところもありますが、現在、 > ある大学で国内から送信されたメールの拒否記録をすべてチェックするという > ことをしていますので、迷惑メールの送信元についてはデータはたくさんあり > ます。(活用する能力の方にはちょっと難がありますが…) おぉ、すごい。 今もらっているご意見はPostfixの設定で実現していることを milter managerで実現しよう、という感じだと思いますが、 さらに一歩進んで、こういう風にしたら効果的ではないか、という アイディアもいろいろ持っている感じでしょうか? 一気にまとめて全部だと大変なので、1つずつでも教えてもらえる と嬉しいです。それをmilter managerで実現するなら、こういう機 能があると便利、というものがあれば前向きに検討したいと思いま す! まずは、Postfixでも使えるテーブルを読み込めるようにしようと 思います。 -- 須藤 功平 <ko...@cl...> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Mozilla Firefox/Thunderbirdサポート: http://www.clear-code.com/services/mozilla/menu.html 迷惑メール対策: http://www.clear-code.com/software/milter-manager.html テスティングフレームワーク: http://www.clear-code.com/software/cutter.html http://www.clear-code.com/software/uxu.html |