On 2016-08-24 09:20, Tanstaafl wrote:
Objection: assumes facts not in evidence.
This is the way it is supposed to work now in dovecot, so, either it is now broken, was always broken ... or you are not doing it right.
But we'd need to see your config to make that determination...
How about source tree?
I now present my case to the court. :)
The changelog: 2009-11-10 * src/lib-lda/lda-settings.c, src/lmtp/commands.c: recipient_delimiter: Allow multi-character delimiters. [0d659ac4656d] <HEAD> (taken from the change log in 2.2.13 since this entry is no longer visible in the change log in 2.2.13.
There are no other relevant entries referencing recipient_delimiter in 2.2.25. This isn't a sure indication, but it seems to me to imply what the intention was.rcpt_address_parse() in lmtp/commands.c
domain = strchr(address, '@'); p = strstr(address, client->unexpanded_lda_set->recipient_delimiter);
This function is looking for the domain separation with strchr(), but looking for the username and detail separation with strstr(). To treat recipient_delimiter as a list of single-character delimiters you can pick from, then you'd need to loop through recipient_delimiter and use strchr() for each character.
- Right now I have recipient_delimiter set to + and it works. When I tried to set it to +_ to use either a plus or underscore, then sent test email to name_detail@domain.org it caused an error, but name+_detail@domain.org was delivered correctly. Reversing the order in dovecot's recipient_delimiter setting to _+ caused only name_+detail@domain.org to work in test emails.
Switching to the behaviour where recipient_delimiter is treated as a list of usable delimiters might not be totally trivial. If you look in address_add_detail() in lmtp/commands.c you'll see why. This function is trying to recreate a complete email address from the recipient, the detail, and domain but since the delimiter that was used when the username/detail was split isn't saved, it simply uses the multi-character recipient_delimiter setting in its entirety.
Kurt