]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.7.8 v2.7.8
authorWietse Venema <wietse@porcupine.org>
Sat, 4 Feb 2012 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Sat, 10 Feb 2018 19:11:56 +0000 (14:11 -0500)
postfix/HISTORY
postfix/src/bounce/bounce_trace_service.c
postfix/src/cleanup/cleanup_milter.c
postfix/src/global/mail_version.h
postfix/src/local/mailbox.c
postfix/src/local/unknown.c
postfix/src/xsasl/xsasl_dovecot_server.c

index 1db4fc3a06b5ee26f440299a5ddd8be570887d84..ea459c96693f278a315fcadfdb6e5bc4033ee082 100644 (file)
@@ -15989,3 +15989,34 @@ Apologies for any names omitted.
        checks to unknown message subtypes such as message/global*.
        File: global/mime_state.c.
 
+20111117
+
+       Portability: Dovecot now officially supports more socket
+       types for its authentication server. File:
+       xsasl/xsasl_dovecot_server.c.
+
+20111226
+
+       Bugfix (introduced 20110426): after lookup error with
+       mailbox_transport_maps, mailbox_command_maps or
+       fallback_transport_maps, the local delivery agent did not
+       log the problem before deferring mail, and produced no defer
+       logfile record. Files: local/mailbox.c, local/unknown.c.
+
+20120130
+
+       Bugfix (introduced: Postfix 2.3): the trace service did not
+       distinguish between DSN SUCCESS notifications for a non-bounce
+       or a bounce message, and replied to mail from <>. This code
+       pre-dates DSN support and should have been updated when it
+       was re-purposed to handle DSN SUCCESS notifications.  Problem
+       reported by Sabahattin Gucukoglu.  File:
+       bounce/bounce_trace_service.c.
+
+20120202
+
+       Bugfix (introduced: Postfix 2.3): the "change header" milter
+       request could replace the wrong header. A long header name
+       could match a shorter one, because a length check was done
+       on the wrong string.  Reported by Vladimir Vassiliev.  File:
+       cleanup/cleanup_milter.c.
index 850515902a78f7269f960af9b174f346c7e19356..824931d60becfe192e70f144b97f432ffc140cae 100644 (file)
@@ -83,8 +83,39 @@ int     bounce_trace_service(int flags, char *service, char *queue_name,
     BOUNCE_INFO *bounce_info;
     int     bounce_status = 1;
     VSTREAM *bounce;
-    VSTRING *new_id = vstring_alloc(10);
+    int     notify_mask = name_mask(VAR_NOTIFY_CLASSES, mail_error_masks,
+                                   var_notify_classes);
+    VSTRING *new_id;
     int     count;
+    const char *sender;
+
+    /*
+     * For consistency with fail/delay notifications, send notification for a
+     * non-bounce message as a single-bounce message, send notification for a
+     * single-bounce message as a double-bounce message, and drop requests to
+     * send notification for a double-bounce message.
+     */
+#define NULL_SENDER            MAIL_ADDR_EMPTY /* special address */
+
+    if (strcasecmp(recipient, mail_addr_double_bounce()) == 0) {
+       msg_info("%s: not sending trace/success notification for "
+                "double-bounce message", queue_id);
+       return (0);
+    } else if (*recipient == 0) {
+       if ((notify_mask & MAIL_ERROR_2BOUNCE) != 0) {
+           recipient = var_2bounce_rcpt;
+           sender = mail_addr_double_bounce();
+       } else {
+           msg_info("%s: not sending trace/success notification "
+                    "for single-bounce message", queue_id);
+           if (mail_queue_remove(service, queue_id) && errno != ENOENT)
+               msg_fatal("remove %s %s: %m", service, queue_id);
+           return (0);
+       }
+    } else {
+       /* Always send notification for non-bounce message. */
+       sender = NULL_SENDER;
+    }
 
     /*
      * Initialize. Open queue file, bounce log, etc.
@@ -126,7 +157,6 @@ int     bounce_trace_service(int flags, char *service, char *queue_name,
        bounce_mail_free(bounce_info);
        return (0);
     }
-#define NULL_SENDER            MAIL_ADDR_EMPTY /* special address */
 #define NULL_TRACE_FLAGS       0
 
     /*
@@ -139,7 +169,8 @@ int     bounce_trace_service(int flags, char *service, char *queue_name,
      * there are fewer potential left-over files to remove up when we create
      * a new queue file.
      */
-    if ((bounce = post_mail_fopen_nowait(NULL_SENDER, recipient,
+    new_id = vstring_alloc(10);
+    if ((bounce = post_mail_fopen_nowait(sender, recipient,
                                         INT_FILT_MASK_BOUNCE,
                                         NULL_TRACE_FLAGS,
                                         new_id)) != 0) {
index 9667dc72503cf2a2bfaed8b75cadef305abfaa98..fb3d836feec87ced0e146ab2efc4ffe12451a071 100644 (file)
@@ -840,8 +840,7 @@ static off_t cleanup_find_header_start(CLEANUP_STATE *state, ssize_t index,
             /* Reset the saved PTR record and update last_type. */ ;
        else if ((header_label == 0
                  || (strncasecmp(header_label, STR(buf), len) == 0
-                     && (IS_SPACE_TAB(STR(buf)[len])
-                         || STR(buf)[len] == ':')))
+                     && (strlen(header_label) == len)))
                 && --index == 0) {
            /* If we have a saved PTR record, it points to start of header. */
            break;
index 75fd37a5673517b6c61fad15a039f69b54349374..6edb5df6d24d3decd7253c1ac44e105a93423a8e 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20111024"
-#define MAIL_VERSION_NUMBER    "2.7.7"
+#define MAIL_RELEASE_DATE      "20120204"
+#define MAIL_VERSION_NUMBER    "2.7.8"
 
 #ifdef SNAPSHOT
 # define MAIL_VERSION_DATE     "-" MAIL_RELEASE_DATE
index 58b01f79f2fb8f14fdab84ccf42ed893d9d66302..89c7392749b56e884775630860a49db0bfaf77d5 100644 (file)
@@ -289,7 +289,8 @@ int     deliver_mailbox(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp)
     } else if (dict_errno != 0) {
        /* Details in the logfile. */
        dsb_simple(state.msg_attr.why, "4.3.0", "table lookup failure");
-       *statusp = DEL_STAT_DEFER;
+       *statusp = defer_append(BOUNCE_FLAGS(state.request),
+                               BOUNCE_ATTR(state.msg_attr));
        return (YES);
     }
     if (*var_mailbox_transport) {
@@ -333,7 +334,8 @@ int     deliver_mailbox(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp)
     } else if (dict_errno != 0) {
        /* Details in the logfile. */
        dsb_simple(state.msg_attr.why, "4.3.0", "table lookup failure");
-       status = DEL_STAT_DEFER;
+       status = defer_append(BOUNCE_FLAGS(state.request),
+                             BOUNCE_ATTR(state.msg_attr));
     } else if (*var_mailbox_command) {
        status = deliver_command(state, usr_attr, var_mailbox_command);
     } else if (*var_home_mailbox && LAST_CHAR(var_home_mailbox) == '/') {
index eb5bbf25054ef29e75512f0b08d0dd60b59c0e01..57e49af849e2d0ca9ae187fb401ba128d846e422 100644 (file)
@@ -120,7 +120,8 @@ int     deliver_unknown(LOCAL_STATE state, USER_ATTR usr_attr)
     } else if (dict_errno != 0) {
        /* Details in the logfile. */
        dsb_simple(state.msg_attr.why, "4.3.0", "table lookup failure");
-       return (DEL_STAT_DEFER);
+       return (defer_append(BOUNCE_FLAGS(state.request),
+                            BOUNCE_ATTR(state.msg_attr)));
     }
     if (*var_fallback_transport) {
        state.msg_attr.rcpt.offset = -1L;
index 5fc1e0f7d0d411a92e706e78714a21f02239ad5b..3e1d250ec34fe57772dac9a1632e10be36d8897a 100644 (file)
@@ -370,11 +370,6 @@ XSASL_SERVER_IMPL *xsasl_dovecot_server_init(const char *server_type,
 {
     XSASL_DOVECOT_SERVER_IMPL *xp;
 
-    if (strchr(path_info, '/') == 0)
-       msg_warn("when SASL type is \"%s\", SASL path \"%s\" "
-                "should be a socket pathname",
-                server_type, path_info);
-
     xp = (XSASL_DOVECOT_SERVER_IMPL *) mymalloc(sizeof(*xp));
     xp->xsasl.create = xsasl_dovecot_server_create;
     xp->xsasl.done = xsasl_dovecot_server_done;