Hi there
this howto describes how to use greylisting within postfix only für unknow host or hostname that looks like they are coming out of dynamic ip ranges.
1. Install postfix pcre package
> apt-get install postfix-pcre
2. Create new file /etc/postfix/dynip.pcre
EDIT: Attention the long regex is one single line!!!
# everything with 4 or more dots/hyphens in the hostname
/(\-.+){4}$/ rc_greylisting
/(\..+){4}$/ rc_greylisting
# some well known dynamic patterns
/(^|[0-9.x_-])(abo|br(e|oa)dband|cabel|(hk)?cablep?|catv|cbl|cidr
|d?client2?|cust(omer)?s?|dhcp|dial?(in|up)?|d[iu]p|[asx]?dsld?|dyn(a(dsl|mic)?)?
|home|in-addr|modem(cable)?|(di)?pool|ppp|ptr|rev|user|YahooBB[0-9]{12}
|c[[:alnum:]]{6,}(\.[a-z]{3})?\.virtua|[1-9]Cust[0-9]+|AC[A-Z][0-9A-F]{5}\.ipt
|pcp[0-9]{6,}pcs|S0106[[:alnum:]]{12,}\.[a-z]{2})[0-9.x_-]/ rc_greylisting
# systems without a hostname
/^unknown$/ rc_greylisting
3. Change the main.cf
Add
smtpd_restriction_classes = rc_greylisting
rc_greylisting = check_policy_service inet:127.0.0.1:60000
Change in the smpd_recipient_restrictions:
check_policy_service inet:127.0.0.1:60000
to
check_client_access pcre:/etc/postfix/dynip.pcre
4. Thats it