Allow multiple localpart catch all separators, e.g. both "+" and "-", for addresses you+anything@example.com and you-anything@example.com

The original config option stays, and we still use it for the common case where
we have a single separator. The "+" is configured by default. It is optional,
just like the new option "LocalpartCatchallSeparators" (plural).

When parsing the config file, we combine LocalpartCatchallSeparator and
LocalpartCatchallSeparators into a single list
LocalpartCatchallSeparatorsEffective, which we use throughout the code.

For issue #301 by janc13
This commit is contained in:
Mechiel Lukkien
2025-03-07 14:39:58 +01:00
parent d0b241499f
commit 9a8bb1134b
26 changed files with 255 additions and 95 deletions

View File

@ -1887,9 +1887,8 @@ const compose = (opts: ComposeOptions, listMailboxes: listMailboxes) => {
const normalizeUser = (a: api.MessageAddress) => {
let user = a.User
const domconf = domainAddressConfigs[a.Domain.ASCII]
const localpartCatchallSeparator = domconf.LocalpartCatchallSeparator
if (localpartCatchallSeparator) {
user = user.split(localpartCatchallSeparator)[0]
for (const sep of (domconf.LocalpartCatchallSeparators || [])) {
user = user.split(sep)[0]
}
const localpartCaseSensitive = domconf.LocalpartCaseSensitive
if (!localpartCaseSensitive) {