Hello,

(Sent from my private Gmail address as our uni mail server isn’t fond of the 
CNAME for lists.exim.org)

We are using exim with a sympa mailing list server and have mostly managed to 
use a dynamic exim configuration for this, i.e. we do not generate a list of 
addresses out of sympa up front but check the validity of list email addresses 
on reception with require-files checking the existence of a mailing list at 
that address.

We have not yet managed to get bounce addresses with VERP working. Those are of 
the form

[email protected] 
<mailto:[email protected]>

Unfortunately I have not been able to create a config in which the local_part 
is untainted and can be reused for a pipe transport.

In broad strokes, our router and transport currently look like this:

sympa_list_bounce:
debug_print = "R: sympa_list_bounce for 
${local_part_prefix}${local_part}@$domain"
driver = accept
domains = +sympa_domains
local_parts = ${if bool_lax{${lookup {${if 
match{$local_part}{\N^.+==([^=]+)$\N} {$1}{$local_part}}} dsearch 
{SYMPA_EXPL/${domain_data}}}} {${local_part}}}
local_part_prefix = bounce+
require_files = +SYMPA_EXPL/${lc::$domain_data}/${if 
match{$local_part}{\N^.+==([^=]+)$\N} {$1}{$local_part}}/config
retry_use_local_part
transport = sympa_bounce

sympa_bounce:
driver = pipe
command = "SYMPA_BOUNCE ${local_part_prefix}${local_part_data}\@${domain_data}"
return_fail_output
user = sympa

A few details:
- SYMPA_BOUNCE is the executable to which the message should be passed
- SYMPA+EXPL is the folder in which sympa keeps list configs in the form 
lists.ourdomain/thelist/config and some other files in the same folder
- sympa_domains has a list of domains that are, well, domains where sympa 
mailing lists exist

I now am a little stuck. Extending the prefix with prefix until the list name 
with for example local_part_prefix = *== would give me a local part that I 
don’t need to slice up before using it, but I don’t know how I then could 
ensure that the local part starts with bounce+ and it would be similarly 
tainted, correct?

The local_parts stanza is theoretically not necessary as the validity of the 
address is already checked in the require_files. We however use local_parts = 
dsearch;SYMPA_EXPL/${domain_data} or something similar in other routers to 
untaint the local_part. Here though the local_parts test returns a tainted 
string which I guess is the reason why the transport returns with the tainted 
arg error?

Does anyone have a suggestion how to solve this?

Thank you,

Felix Schäfer
Admin der FSInfo der TU Dortmund

-- 
## subscription configuration (requires account):
##   https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
##   [email protected]
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to