]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.5-20070516
authorWietse Venema <wietse@porcupine.org>
Wed, 16 May 2007 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:33:10 +0000 (06:33 +0000)
postfix/HISTORY
postfix/html/error.8.html
postfix/src/discard/discard.c
postfix/src/error/error.c
postfix/src/global/abounce.c
postfix/src/global/bounce.c
postfix/src/global/defer.c
postfix/src/global/deliver_request.c
postfix/src/global/mail_version.h
postfix/src/local/mailbox.c
postfix/src/local/unknown.c

index acd7273b6eb9e2e69a47f07c947e11bc128034f5..64187a2325ebac1ead92bfdfa844db58e64693af 100644 (file)
@@ -9281,7 +9281,7 @@ Apologies for any names omitted.
        conf/mumble_table files removed, new commands added to
        conf/postfix-script.
 
-       Cleanups: function declared in but used as void, missing
+       Cleanups: function declared int but used as void, missing
        include file, missing const qualifier, unused variable.
        Matthias Andree. Files:  bounce/bounce_notify_util.c,
        bounce/bounce_service.h, postlog/postlog.c, smtpd/smtpd_check.c,
@@ -13543,12 +13543,10 @@ Apologies for any names omitted.
        build on a 2.6 kernel. And that two weeks after the workaround
        had been posted to the mailing list. File: makedefs.
 
-       Workaround: local(8) nixed the recipient file offset for
-       delegated transports. This broke delegation via
-       mailbox_transport(_maps) and fallback_transport(_maps) to
-       the error(8) transport. Unfortunately it is not possible
-       to nix the file offset for local(8) only.  Files:
-       local/mailbox.c, local/unknown.c.
+       Bugfix: mailbox_transport(_maps) and fallback_transport(_maps)
+       were broken when used with the error(8) or discard(8)
+       transports. Cause: insufficient documentation.  Files:
+       error/error.c, discard/discard.c.
 
 Wish list:
 
index d66f9ead40b34ffd2a7e3dbc3219df3169b16938..c14495dc277f074fb7eb63f14d03a15f8d514754 100644 (file)
@@ -17,8 +17,8 @@ ERROR(8)                                                              ERROR(8)
        requests from the queue manager. Each request specifies  a
        queue  file, a sender address, the reason for non-delivery
        (specified as the  next-hop  destination),  and  recipient
-       information.   The  reason  may  be  prefixed  with an RFC
-       3463-compatible detail code.  This program expects  to  be
+       information.   The  reason  may  be  prefixed  with an <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC</a>
+       <a href="http://www.faqs.org/rfcs/rfc3463.html">3463</a>-compatible detail code.  This program expects  to  be
        run from the <a href="master.8.html"><b>master</b>(8)</a> process manager.
 
        Depending  on  the  service  name  in  <a href="master.5.html">master.cf</a>, <b>error</b> or
index 17bdeceeed49f3fd69231daccd186fbec8d9b55d..c0e5e6debac05a67a4522bf9b9ef18573a95da82 100644 (file)
@@ -174,13 +174,11 @@ static int deliver_message(DELIVER_REQUEST *request)
     (void) DSN_SIMPLE(&dsn, DSN_STATUS(dp.dsn), dp.text);
     for (nrcpt = 0; nrcpt < request->rcpt_list.len; nrcpt++) {
        rcpt = request->rcpt_list.info + nrcpt;
-       if (rcpt->offset >= 0) {
-           status = sent(BOUNCE_FLAGS(request), request->queue_id,
-                         &request->msg_stats, rcpt, "none", &dsn);
-           if (status == 0 && (request->flags & DEL_REQ_FLAG_SUCCESS))
-               deliver_completed(src, rcpt->offset);
-           result |= status;
-       }
+       status = sent(BOUNCE_FLAGS(request), request->queue_id,
+                     &request->msg_stats, rcpt, "none", &dsn);
+       if (status == 0 && (request->flags & DEL_REQ_FLAG_SUCCESS))
+           deliver_completed(src, rcpt->offset);
+       result |= status;
     }
 
     /*
index 019900b2b957624099b05ce74812c45142446fe6..73777cd101d8a46fa76a994da69cc1854d723bb3 100644 (file)
@@ -181,13 +181,11 @@ static int deliver_message(DELIVER_REQUEST *request, const char *def_dsn,
     (void) DSN_SIMPLE(&dsn, DSN_STATUS(dp.dsn), dp.text);
     for (nrcpt = 0; nrcpt < request->rcpt_list.len; nrcpt++) {
        rcpt = request->rcpt_list.info + nrcpt;
-       if (rcpt->offset >= 0) {
-           status = append(BOUNCE_FLAGS(request), request->queue_id,
-                           &request->msg_stats, rcpt, "none", &dsn);
-           if (status == 0)
-               deliver_completed(src, rcpt->offset);
-           result |= status;
-       }
+       status = append(BOUNCE_FLAGS(request), request->queue_id,
+                       &request->msg_stats, rcpt, "none", &dsn);
+       if (status == 0)
+           deliver_completed(src, rcpt->offset);
+       result |= status;
     }
 
     /*
index f7d2dcad3998f96c5c88ef33a796a5cdaa503bb9..8c31694265aebbab6f26e49cff91f31f97684e8c 100644 (file)
 /* .IP BOUNCE_FLAG_CLEAN
 /*     Delete the bounce log in case of an error (as in: pretend
 /*     that we never even tried to bounce this message).
+/* .IP BOUNCE_FLAG_DELRCPT
+/*     When specified with a flush operation, request that
+/*     recipients be deleted from the queue file.
+/*
+/*     Note: the bounce daemon ignores this request when the
+/*     recipient queue file offset is <= 0.
 /* .IP BOUNCE_FLAG_COPY
 /*     Request that a postmaster copy is sent.
 /* .RE
index 31c696205e5b13bae2cecc7222e98c2bce8466ab..d260be766b866513c4337177fe291e0d3b7c95ae 100644 (file)
 /* .IP BOUNCE_FLAG_CLEAN
 /*     Delete the bounce log in case of an error (as in: pretend
 /*     that we never even tried to bounce this message).
+/* .IP BOUNCE_FLAG_DELRCPT
+/*     When specified with a flush request, request that
+/*     recipients be deleted from the queue file.
+/*
+/*     Note: the bounce daemon ignores this request when the
+/*     recipient queue file offset is <= 0.
 /* .IP DEL_REQ_FLAG_MTA_VRFY
 /*     The message is an MTA-requested address verification probe.
 /*     Update the address verification database instead of bouncing
index d98bf6f33729a715d2b63b62c38b931f7b471b25..a2b44a3e46f65bb4db297109ca15b1927e340672 100644 (file)
 /* .IP BOUNCE_FLAG_CLEAN
 /*     Delete the defer log in case of an error (as in: pretend
 /*     that we never even tried to defer this message).
+/* .IP BOUNCE_FLAG_DELRCPT
+/*     When specified with a flush request, request that
+/*     recipients be deleted from the queue file.
+/*
+/*     Note: the bounce daemon ignores this request when the
+/*     recipient queue file offset is <= 0.
 /* .IP DEL_REQ_FLAG_MTA_VRFY
 /*     The message is an MTA-requested address verification probe.
 /*     Update the address verification database instead of deferring
index d9ccc0c22c5090419ef3ab1ca0402b347c6ea722..17be6541e2bce835aaa97341594180b99f12a5de 100644 (file)
 /*     of the following:
 /* .IP \fBDEL_REQ_FLAG_SUCCESS\fR
 /*     Delete successful recipients from the queue file.
+/*
+/*     Note: currently, this also controls whether bounced recipients
+/*     are deleted.
+/*
+/*     Note: the deliver_completed() function ignores this request
+/*     when the recipient queue file offset is -1.
 /* .IP \fBDEL_REQ_FLAG_BOUNCE\fR
 /*     Delete bounced recipients from the queue file. Currently,
-/*     this flag is considered to be "always on".
+/*     this flag is non-functional.
 /* .PP
 /*     The \fBDEL_REQ_FLAG_DEFLT\fR constant provides a convenient shorthand
 /*     for the most common case: delete successful and bounced recipients.
index 6560b7a157b936e55b742864c380a111ae175beb..9cf7727a8f48452f579726e74c99dda916822954 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20070515"
+#define MAIL_RELEASE_DATE      "20070516"
 #define MAIL_VERSION_NUMBER    "2.5"
 
 #ifdef SNAPSHOT
index 900075b02063f5429c913db538322bcac8a6af76..92bd79d6767c28b518b3417e77e0fa434690faa5 100644 (file)
@@ -271,14 +271,17 @@ int     deliver_mailbox(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp)
     if (*var_mbox_transp_maps && transp_maps == 0)
        transp_maps = maps_create(VAR_MBOX_TRANSP_MAPS, var_mbox_transp_maps,
                                  DICT_FLAG_LOCK | DICT_FLAG_NO_REGSUB);
+    /* The -1 is a hint for the down-stream deliver_completed() function. */
     if (*var_mbox_transp_maps
        && (map_transport = maps_find(transp_maps, state.msg_attr.user,
                                      DICT_FLAG_NONE)) != 0) {
+       state.msg_attr.rcpt.offset = -1L;
        *statusp = deliver_pass(MAIL_CLASS_PRIVATE, map_transport,
                                state.request, &state.msg_attr.rcpt);
        return (YES);
     }
     if (*var_mailbox_transport) {
+       state.msg_attr.rcpt.offset = -1L;
        *statusp = deliver_pass(MAIL_CLASS_PRIVATE, var_mailbox_transport,
                                state.request, &state.msg_attr.rcpt);
        return (YES);
index 8ae8f0b12604fca8d50aad0e7975aba4a867a0d9..068f9eed2683ca44e59e069861112e9a2e5c42e8 100644 (file)
@@ -109,13 +109,16 @@ int     deliver_unknown(LOCAL_STATE state, USER_ATTR usr_attr)
     if (*var_fbck_transp_maps && transp_maps == 0)
        transp_maps = maps_create(VAR_FBCK_TRANSP_MAPS, var_fbck_transp_maps,
                                  DICT_FLAG_LOCK | DICT_FLAG_NO_REGSUB);
+    /* The -1 is a hint for the down-stream deliver_completed() function. */
     if (*var_fbck_transp_maps
        && (map_transport = maps_find(transp_maps, state.msg_attr.user,
                                      DICT_FLAG_NONE)) != 0) {
+       state.msg_attr.rcpt.offset = -1L;
        return (deliver_pass(MAIL_CLASS_PRIVATE, map_transport,
                             state.request, &state.msg_attr.rcpt));
     }
     if (*var_fallback_transport) {
+       state.msg_attr.rcpt.offset = -1L;
        return (deliver_pass(MAIL_CLASS_PRIVATE, var_fallback_transport,
                             state.request, &state.msg_attr.rcpt));
     }