summaryrefslogtreecommitdiffstats
path: root/realrcptto.c
diff options
context:
space:
mode:
authorManuel Mausz <manuel@mausz.at>2026-06-26 13:53:30 +0200
committerManuel Mausz <manuel@mausz.at>2026-06-26 13:53:30 +0200
commit663c6be564efdb355598b34b8f083f79a38c726d (patch)
tree94f5eff36139e3e22f7d3a5f25cd49c14e8c5ca6 /realrcptto.c
parent3e992e7fbf16c7f4249223bb807e13b56f078022 (diff)
downloadqmail-663c6be564efdb355598b34b8f083f79a38c726d.tar.gz
qmail-663c6be564efdb355598b34b8f083f79a38c726d.tar.bz2
qmail-663c6be564efdb355598b34b8f083f79a38c726d.zip
Implement plus addressing for localsHEADmaster
Diffstat (limited to 'realrcptto.c')
-rw-r--r--realrcptto.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/realrcptto.c b/realrcptto.c
index 5ae9684..8f4d50e 100644
--- a/realrcptto.c
+++ b/realrcptto.c
@@ -269,7 +269,7 @@ int depth;
269 && extension && !str_diffn(extension, "mailbox-", 8)) 269 && extension && !str_diffn(extension, "mailbox-", 8))
270 username = extension + 8; 270 username = extension + 8;
271 271
272 /* remove plus-addressing */ 272 /* remove sub-addressing */
273 username[str_chr(username, '+')] = '\0'; 273 username[str_chr(username, '+')] = '\0';
274 274
275 env_put2("DTUSER", username); 275 env_put2("DTUSER", username);
@@ -316,6 +316,13 @@ int depth;
316 if (constmap(&maplocals,localpart.s + at + 1,localpart.len - at - 1)) { 316 if (constmap(&maplocals,localpart.s + at + 1,localpart.len - at - 1)) {
317 localpart.len = at; 317 localpart.len = at;
318 localpart.s[at] = '\0'; 318 localpart.s[at] = '\0';
319 /* sub-addressing for local domains */
320 for (i = 1; i < localpart.len - 1; ++i) {
321 if (localpart.s[i] == '+') {
322 localpart.s[i] = '-';
323 break;
324 }
325 }
319 } else { 326 } else {
320 unsigned int xlen,newlen; 327 unsigned int xlen,newlen;
321 char *x; 328 char *x;