Christoph Moench-Tegeder wrote:
To solve this issue, each address must be split into username and domain. I will write a patch as soon as we have migrated our cyrus-1.5-environment to 2.2.
Here we go (patching deliver.c is easier than converting thousands of filters):
diff -Nru cyrus-imapd-2.2.3.orig/imap/deliver.c cyrus-imapd-2.2.3/imap/deliver.c
--- cyrus-imapd-2.2.3.orig/imap/deliver.c Wed Oct 22 20:50:07 2003
+++ cyrus-imapd-2.2.3/imap/deliver.c Wed Apr 21 15:24:11 2004
@@ -338,6 +338,7 @@
struct lmtp_txn *txn = LMTP_TXN_ALLOC(numusers ? numusers : 1);
int j;
int ml = 0;
+ char *t;
/* must have either some users or a mailbox */
if (!numusers && !mailbox) {
@@ -370,7 +371,13 @@
/* we let it leak ! */
txn->rcpt[j].addr = (char *) xmalloc(strlen(users[j]) + ml + 2);
- sprintf(txn->rcpt[j].addr, "%s+%s", users[j], mailbox);
+ t=strchr(users[j], '@');
+ if(t!=NULL && strchr(users[j], '+')==NULL) {
+ sprintf(txn->rcpt[j].addr, "[EMAIL PROTECTED]",
+ (int) (t-users[j]), users[j], mailbox, t+1);
+ } else {
+ sprintf(txn->rcpt[j].addr, "%s+%s", users[j], mailbox);
+ }
} else {
txn->rcpt[j].addr = users[j];
}
Note: direct plus-addressing overrides -m.
Regards, Christoph
I just committed a modified version fo your patch to CVS:
https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/deliver.c.diff?r1=1.172&r2=1.173
Thanks.
-- Kenneth Murchison Oceana Matrix Ltd. Software Engineer 21 Princeton Place 716-662-8973 x26 Orchard Park, NY 14127 --PGP Public Key-- http://www.oceana.com/~ken/ksm.pgp --- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
--- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html