Hi,
the following (simplified) mail.acl works great with HEAD; It now has
dnswl and relies more on default values:
# mail.acl
# headers
define hdr_counter "relay=" + counter_relay + " sender=" + counter_penpal
define hdr_delay "tarpit=" + tarpit_delayed + "s greylist=" + greylist_delayed + "s"
define hdr_score "score=" + spamd_score + " symbols=" + spamd_symbols
# category
define bl_local list_local == "127.0.0.5"
define bl_remote list_spamhaus || list_spamcop || list_sorbs
define wl_remote regex_match("127\.0\.[0-9]+\.3", list_dnswl)
define spf_fail spf == SPF_FAIL || spf == SPF_SOFTFAIL
define friend counter_relay >= 5 || wl_remote
# misc
define has_counter counter_relay > 0 || counter_penpal > 0
define has_delay tarpit_delayed || greylist_delayed
# connect
connect friend continue
connect bl_local tarpit 25s
connect tarpit 5s
# envrcpt
envrcpt friend continue
envrcpt bl_local reject
envrcpt greylist
envrcpt spf_fail greylist delay 15m attempts 4
envrcpt bl_remote greylist delay 15m attempts 4
# eom
eom friend jump stamp
eom milter_body_size >= 2M jump stamp
eom spamd_score >= 3 set $do_hdr_score = 1
eom spamd_score >= 10 reject
eom spamd_score >= 5 greylist delay 15m attempts 4
eom spamd_score >= 4 greylist delay 10m attempts 3
eom spamd_score >= 3 greylist delay 5m attempts 2
eom jump stamp
# stamp
stamp has_counter add header "X-Mopher-CTR" value hdr_counter
stamp has_delay add header "X-Mopher-DLY" value hdr_delay
stamp $do_hdr_score add header "X-Mopher-SCR" value hdr_score
I noticed one minor inefficiency, though---statements like:
list_spamhaus || list_spamcop || list_sorbs
will always resolve all symbols:
169: connect: host=[90.151.157.237] addr=90.151.157.237
169: connect: tarpit: delay=5
169: helo: name=[90.151.157.237]
169: envfrom: envfrom=<
boud...@oc12.nl>
169: envrcpt: envrcpt=<
in...@smokva.net>
169: envrcpt: spf: helo=[90.151.157.237], from=
boud...@oc12.nl, spf=none
169: envrcpt: rbl_query: addr=90.151.157.237, rbl=
zen.spamhaus.org, result=127.0.0.4
169: envrcpt: rbl_query: addr=90.151.157.237, rbl=
dnsbl.sorbs.net, result=127.0.0.7
169: envrcpt: greylist: status=defer, delay=0/900, attempts=1/4
169: close
mopherd.conf:
# mopherd.conf
# general
mopherd_user = "mopher"
mopherd_group = "mopher"
workdir_path = "/var/mopher"
milter_socket = "unix:/var/mopher/mopherd.sock"
milter_socket_permissions = 660
# db
table[state] = {
driver = "bdb",
path = "state.db"
}
table[greylist] = {
driver = "bdb",
path = "greylist.db"
}
table[counter_relay] = {
driver = "bdb",
path = "counter_relay.db"
}
table[counter_penpal] = {
driver = "bdb",
path = "counter_penpal.db"
}
# rbl
rbl[list_local] = "bl.local"
rbl[list_spamhaus] = "
zen.spamhaus.org"
rbl[list_spamcop] = "
bl.spamcop.net"
rbl[list_sorbs] = "
dnsbl.sorbs.net"
rbl[list_dnswl] = "
list.dnswl.org"
mopher is becoming a great do-it-all milter..