Hello,

this patch allows to override the From: header in quota warning
messages.  Right now, you would end up with two from headers if
you tried that.  Any comments are appreciated.

Michael
----------------------------------------------------------------------
--- src/deliver.c.orig  2005-12-02 13:55:32.000000000 +0100
+++ src/deliver.c       2005-12-02 13:59:03.000000000 +0100
@@ -1399,6 +1399,40 @@
 
 
 
+/******************************************************
+*   Check, if a mail in string contains a From-Header *
+******************************************************/
+
+/*
+Arguments:
+  message     the mail as CS
+
+Returns:      TRUE
+              FALSE no From:-Header present in message
+*/
+
+BOOL
+header_contains_from(const char *message)
+{
+const char *pch=message;
+while (pch[0]!='\0')
+  {
+  if (tolower(pch[0])=='f' && tolower(pch[1])=='r' &&
+      tolower(pch[2])=='o' && tolower(pch[3])=='m')
+    {
+    pch+=4;
+    while (pch[0]==' ' || pch[0]=='\t') pch++;
+    if (pch[0]==':') return TRUE;
+    }
+  else if (pch[0]=='\n') return FALSE; /* end of header */
+  /* eat up line */
+  while (pch[0]!='\n' && pch[0]!='\0') pch++;
+  if (pch[0]=='\n') pch++;
+  }
+return FALSE;
+}
+
+
 
 /*************************************************
 *   Check the size of a message for a transport  *
@@ -1992,8 +2026,9 @@
       if (errors_reply_to != NULL)
         fprintf(f, "Reply-To: %s\n", errors_reply_to);
       fprintf(f, "Auto-Submitted: auto-replied\n");
-      fprintf(f, "From: Mail Delivery System <[EMAIL PROTECTED]>\n",
-        qualify_domain_sender);
+      if (!header_contains_from(CS warn_message))
+        fprintf(f, "From: Mail Delivery System <[EMAIL PROTECTED]>\n",
+          qualify_domain_sender);
       fprintf(f, "%s", CS warn_message);
 
       /* Close and wait for child process to complete, without a timeout. */

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-dev Exim details 
at http://www.exim.org/ ##

Reply via email to