Vincent Lefevre put forth on 11/4/2010 7:49 PM: > On 2010-11-04 20:33:11 -0400, Wietse Venema wrote: >> check_client_access searches the address and domain with ALL lookup >> table types. It just doesn't do the substring lookups with PCRE, >> REGEXP and CIDR. > > If I understand correctly, there's another difference: in the default > table format, the string to be checked depends on the pattern form > (e.g. hostname for domain.tld, IP address for net.work.addr.ess), but > for pcre, both strings are checked against all patterns? > > So, with pcre, if I want to check whether the IP address starts with > 1.2.3, I need something like: > > /^1\.2\.3\.[0-9]+$/ > > because /^1\.2\.3\./ could also match hostnames (I've noticed in my > mail archives that hostnames of this form occur in practice).
This is why you need to use "fully qualified" patterns when matching forward/reverse hostnames. For example: /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.dyn\.isp\.net$/ REJECT In practice, most ISPs don't have a /8 worth of dynamically assigned addresses, usually a /16 or less. So for a specific ISP dynamic range it would look my like this: /^201\.33\.[0-9]{1,3}\.[0-9]{1,3}\.dyn\.isp\.net$/ REJECT That will match a /16 of rDNS patterns only at the ISP "isp.net" -- Stan