summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qmail-send.c7
-rw-r--r--realrcptto.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/qmail-send.c b/qmail-send.c
index caa5b39..168d190 100644
--- a/qmail-send.c
+++ b/qmail-send.c
@@ -147,6 +147,13 @@ char *recip;
147 at = byte_rchr(addr.s,addr.len,'@'); 147 at = byte_rchr(addr.s,addr.len,'@');
148 148
149 if (constmap(&maplocals,addr.s + at + 1,addr.len - at - 1)) { 149 if (constmap(&maplocals,addr.s + at + 1,addr.len - at - 1)) {
150 /* sub-addressing for local domains */
151 for (i = 1; i < at - 1; ++i) {
152 if (addr.s[i] == '+') {
153 addr.s[i] = '-';
154 break;
155 }
156 }
150 if (!stralloc_cat(&rwline,&addr)) return 0; 157 if (!stralloc_cat(&rwline,&addr)) return 0;
151 if (!stralloc_0(&rwline)) return 0; 158 if (!stralloc_0(&rwline)) return 0;
152 return 1; 159 return 1;
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;