Thomas Wolff. Matthias Andree.
* Kerberos IV detection fix for FreeBSD 4. Simon Barner. (MA)
* Fix display and documentation of --envelope option. Matthias Andree
+* Make "envelope 'Delivered-To'" work with dropdelivered. Timothy Lee. (MA)
# INTERNAL CHANGES
* Switched to automake. Matthias Andree.
* Brian Sammon's patch to deal with malformed message lines containing NULs.
* Fai's patch to ignore all but the first Return-Path (some spams have
more than one of these).
-* Benjamin Drieu's patch to properly byte-stuff when talking to BSNTP.
+* Benjamin Drieu's patch to properly byte-stuff when talking to BSMTP.
Fixes Debian bug #184469.
* Benjamin Drieu's patch to enable auth=cram-md5.
Fixes Debian bug #185232.
static char *delivered_to = NULL;
int n, oldlen, ch, remaining, skipcount;
size_t linelen;
+ int delivered_to_count;
struct idlist *idp;
flag no_local_matches = FALSE;
flag has_nuls;
oldlen = 0;
msgblk.msglen = 0;
skipcount = 0;
+ delivered_to_count = 0;
ctl->mimemsg = 0;
for (remaining = fetchlen; remaining > 0 || protocol->delimited; )
}
/*
- * We remove all Delivered-To: headers.
- *
- * This is to avoid false mail loops messages when delivering
- * local messages to and from a Postfix/qmail mailserver.
+ * We remove all Delivered-To: headers if dropdelivered is set
+ * - special care must be taken if Delivered-To: is also used
+ * as envelope at the same time.
+ *
+ * This is to avoid false mail loops errors when delivering
+ * local messages to and from a Postfix or qmail mailserver.
*/
if (ctl->dropdelivered && !strncasecmp(line, "Delivered-To:", 13))
{
- if (delivered_to)
+ if (delivered_to ||
+ ctl->server.envelope == STRING_DISABLED ||
+ !ctl->server.envelope ||
+ strcasecmp(ctl->server.envelope, "Delivered-To") ||
+ delivered_to_count != ctl->server.envskip)
free(line);
else
delivered_to = line;
+ delivered_to_count++;
continue;
}