I have a router which munges the errors_to address on outgoing mail,
including a timestamp and signature in the address.
The current implementation is generates a new errors_to address on each
delivery attempt, which doesn't play nicely with sites doing
greylisting. They presumably note the MAIL FROM:<> address I offer, and
would accept the mail if I offered it a second time with the same
address.. but I don't; next time the timestamp is different.
Is there a simple way to make the reverse-path rewrite happen only once
and be stored for subsequent delivery attempts? The one_time option
appears to do this when the _recipients_ are changed, but doesn't have
the desired effect on the errors_to address.
This is the router in question; the rest of the config is at
http://www.infradead.org/rpr.html
rpr_rewrite:
caseful_local_part
# headers_add = "X-SRS-Rewrite: SMTP reverse-path rewritten from <$sender_address> by $primary_hostname\n\tSee SRS_URL"
# Encode sender address, hash and timestamp according to http://www.anarres.org/projects/srs/
# We try to keep the generated localpart small. We add our own tracking info to the domain part.
address_data = ${eval:($tod_epoch/86400)-12288}+\
${sender_address_domain}+$sender_address_local_part\
@${sg {$primary_hostname}{^([^.]*)\..*}{\$1}}-\
${sg {$tod_log}{^.* ([0-9]+):([0-9]+):([0-9+])}{\$1\$2\$3}}.\
SRS_DOMAIN
errors_to = ${quote_local_part:SRS0+${length_SRS_HASH_LENGTH:${hmac{md5}{SRS_SECRET}{${lc:$address_data}}}}+\
${sg{$address_data}{(^.*)@[^@]*}{\$1}}}@\
${sg{$address_data}{^.*@([^@]*)}{\$1}}
driver = redirect
data = ${quote_local_part:$local_part}@$domain
# Straight to output; don't start routing again from the beginning.
redirect_router = lookuphost
no_verify
one_time
--
dwmw2