[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp: 2191] regexpテーブルの適用順について



さとうです。

 check_client_accessでregexpでマッチングしたものに、制限を掛ける設定を
しています。
 そこでホスト名での制限を掛けて、それより前にIPでのホワイトリストを書い
たのですが、機能しませんでした。

 例えば、example.jp が 192.0.2.0/24 を持っている場合、基本的に
example.jpからの接続は拒否するのだけど、192.0.2.1からのみ接続を許したい
場合、下記のregexpで可能なはずですが、出来ません。

/^192\.0\.2\.1$/ OK
/example\.jp$/ REJECT

そのため、check_client_accessを複数行書いて、先のものをホワイトリストと
して利用することで対応しました。


 マニュアルを確認したところ、regexpテーブルの適用順について

Postfix manual - access(5)
http://www.kobitosan.net/postfix/trans-2.2/jhtml/access.5.html
http://www.postfix.org/access.5.html
> パターンは検索文字列にマッチするまで、テーブルに指定された順で適用されます。
> Patterns  are applied in the order as specified in the table,
> until a pattern is found that matches the search string.

とあるのですが、実際にコードを見てみると

src/smtpd/smtpd_check.c
check_namadr_access 関数内

/* Look up the host name, or parent domains thereof. …
check_domain_access(state, table, name, …
/* Look up the network address, or parent networks thereof. …
check_addr_access(state, table, addr, …

という感じに記述されており、先にホスト名でのマッチングが行われてから、IP
でのマッチングが行われているため、このような動作になってしまうように思い
ます。


 このように、regexpテーブルの適用順が、マニュアルの記述と合っていないよ
うに思えるのですが、今までバグレポートなど出たことありますでしょうか?


#「unknown」に対してなにかしたいときに、この記述がしたいのです…


-- 
佐藤 潔 (SATOH Kiyoshi) <satoh@xxxxxxxxx> http://d.hatena.ne.jp/stealthinu/

_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

Follow-Ups
[postfix-jp: 2199] Re: regexpテーブルの適用順について, とみたまさひろ

[検索ページ] [Postfix-JP ML Home]