Module Name:    src
Committed By:   riz
Date:           Sun Feb 19 18:28:55 UTC 2012

Modified Files:
        src/doc [netbsd-6]: 3RDPARTY CHANGES
        src/external/ibm-public/postfix/dist [netbsd-6]: HISTORY
        src/external/ibm-public/postfix/dist/mantools [netbsd-6]:
            get_anchors.pl
        src/external/ibm-public/postfix/dist/src/bounce [netbsd-6]:
            bounce_trace_service.c
        src/external/ibm-public/postfix/dist/src/global [netbsd-6]: dict_ldap.c
            dict_sqlite.c mail_version.h maps.c
        src/external/ibm-public/postfix/dist/src/local [netbsd-6]: mailbox.c
            unknown.c
        src/external/ibm-public/postfix/dist/src/tlsproxy [netbsd-6]:
            tlsproxy.c
        src/external/ibm-public/postfix/dist/src/util [netbsd-6]: dict.c
        src/external/ibm-public/postfix/dist/src/xsasl [netbsd-6]:
            xsasl_dovecot_server.c

Log Message:
Apply patch (requested by tron in ticket #7):

Import Postfix 2.8.8. Changes since Postfix 2.8.7:
- The Postfix sqlite client, introduced with Postfix 2.8, had an
  embarassing bug in its quoting routine. As the result of a
  last-minute code cleanup before release, this routine returned the
  unquoted text instead of the quoted text. The opportunities for
  mis-use are limited: Postfix sqlite database files are usually owned
  by root, and Postfix daemons usually run with non-root privileges so
  they can't corrupt the database. This problem was reported by Rob
  McGee (rob0).
- The Postfix 2.8.4 fix for local delivery agent database lookup
  errors was incomplete. The fix correctly added new code to detect
  database lookup errors with mailbox_transport_maps,
  mailbox_command_maps or fallback_transport_maps, but it failed to
  log the problem, and to produce a defer logfile record which is
  needed for "delayed mail" and "mail too old" delivery status
  notifications.
- The trace(8) service, used for DSN SUCCESS notifications, did not
  distinguish between notifications for a non-bounce or a bounce
  message, causing it to "reply" to mail with the null sender
  address. Problem reported by Sabahattin Gucukoglu.
- Support for Dovecot auth over TCP sockets, using code that already
  existed for testing purposes. Patrick Koetter kindly provided an
  update for the SASL_README file.
- Workaround in the LDAP client for changes in the under-documented
  OpenLDAP API, by Victor Duchovni.

I've fully tested this under NetBSD/i386 6.99.2 and build tested the
patch for NetBSD/amd64 6.0_BETA.

        Kind regards

P.S. This patch does *not* include SQLite support for Postfix to
     avoid scaring Jeff Rizzo.


To generate a diff of this commit:
cvs rdiff -u -r1.909 -r1.909.2.1 src/doc/3RDPARTY
cvs rdiff -u -r1.1670 -r1.1670.2.1 src/doc/CHANGES
cvs rdiff -u -r1.1.1.12 -r1.1.1.12.2.1 \
    src/external/ibm-public/postfix/dist/HISTORY
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.12.1 \
    src/external/ibm-public/postfix/dist/mantools/get_anchors.pl
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.12.1 \
    src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.6.1 \
    src/external/ibm-public/postfix/dist/src/global/dict_ldap.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.8.1 \
    src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c
cvs rdiff -u -r1.1.1.12 -r1.1.1.12.2.1 \
    src/external/ibm-public/postfix/dist/src/global/mail_version.h
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.12.1 \
    src/external/ibm-public/postfix/dist/src/global/maps.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.4.1 \
    src/external/ibm-public/postfix/dist/src/local/mailbox.c \
    src/external/ibm-public/postfix/dist/src/local/unknown.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.8.1 \
    src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.6.1 \
    src/external/ibm-public/postfix/dist/src/util/dict.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.6.1 \
    src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/doc/3RDPARTY
diff -u src/doc/3RDPARTY:1.909 src/doc/3RDPARTY:1.909.2.1
--- src/doc/3RDPARTY:1.909	Fri Feb 10 23:46:25 2012
+++ src/doc/3RDPARTY	Sun Feb 19 18:28:53 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: 3RDPARTY,v 1.909 2012/02/10 23:46:25 riz Exp $
+#	$NetBSD: 3RDPARTY,v 1.909.2.1 2012/02/19 18:28:53 riz Exp $
 #
 # This file contains a list of the software that has been integrated into
 # NetBSD where we are not the primary maintainer.
@@ -905,7 +905,7 @@ formatting in man pages, disallowing flo
 and more.
 
 Package:	postfix
-Version:	2.8.7
+Version:	2.8.8
 Current Vers:	2.8.8/2.9.0
 Maintainer:	Wietse Venema <wie...@porcupine.org>
 Archive Site:	ftp://postfix.cloud9.net/official/

Index: src/doc/CHANGES
diff -u src/doc/CHANGES:1.1670 src/doc/CHANGES:1.1670.2.1
--- src/doc/CHANGES:1.1670	Mon Feb 13 19:15:30 2012
+++ src/doc/CHANGES	Sun Feb 19 18:28:53 2012
@@ -1,4 +1,4 @@
-# LIST OF CHANGES FROM LAST RELEASE:			<$Revision: 1.1670 $>
+# LIST OF CHANGES FROM LAST RELEASE:			<$Revision: 1.1670.2.1 $>
 #
 #
 # [Note: This file does not mention every change made to the NetBSD source tree.
@@ -1261,3 +1261,4 @@ Changes from NetBSD 5.0 to NetBSD 6.0:
 		[dholland 20120212]
 	quotarestore(8): New quota tool quotarestore for loading backups
 		created with quotadump. [dholland 20120212]
+	postfix(1): Import version 2.8.8 [tron 20120217]

Index: src/external/ibm-public/postfix/dist/HISTORY
diff -u src/external/ibm-public/postfix/dist/HISTORY:1.1.1.12 src/external/ibm-public/postfix/dist/HISTORY:1.1.1.12.2.1
--- src/external/ibm-public/postfix/dist/HISTORY:1.1.1.12	Wed Nov  9 18:58:43 2011
+++ src/external/ibm-public/postfix/dist/HISTORY	Sun Feb 19 18:28:53 2012
@@ -16695,3 +16695,55 @@ Apologies for any names omitted.
 
 	Portability: OpenBSD 5.x is supported. Files: makedefs,
 	util/sys_defs.h.
+
+	Portability: Dovecot now officially supports more socket
+	types for its authentication server. File:
+	xsasl/xsasl_dovecot_server.c.
+
+20111126
+
+	Bitrot: changes in error reporting to the under-documented
+	OpenLDAP API. Problem reported by Quanah Gibson-Mount. Fix
+	by Viktor Dukhovni. File: global/dict_ldap.c.
+
+20111205
+
+	Bugfix: tlsproxy(8) stored TLS sessions with a serverID of
+	"tlsproxy" instead of "smtpd", wasting an opportunity for
+	session reuse.  File: tlsproxy/tlsproxy.c.
+
+20111211
+
+	Bugfix: missing lookup table entry and terminator, causing
+	proxymap server segfault when postscreen(8) or verify(8)
+	attempted to access their cache via the proxymap server.
+	This could never have worked anyway, because the Postfix
+	2.8 proxymap protocol does not support cache cleanup.  File
+	util/dict.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.
+
+20120127
+
+	Bugfix (introduced: Postfix 2.8): the Postfix client sqlite
+	quoting routine returned the unquoted result instead of the
+	quoted text.  The opportunities for misuse are limited,
+	because Postfix sqlite files are usually owned by root, and
+	Postfix daemons usually run with non-root privileges so
+	they can't corrupt the database. Problem reported by Rob
+	McGee (rob0).  File: global/dict_sqlite.c.
+
+20120130
+
+	Bugfix (introduced: Postfix 2.3): the trace service did not
+	distinguish between notifications for a non-bounce or a
+	bounce message. 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.

Index: src/external/ibm-public/postfix/dist/mantools/get_anchors.pl
diff -u src/external/ibm-public/postfix/dist/mantools/get_anchors.pl:1.1.1.1 src/external/ibm-public/postfix/dist/mantools/get_anchors.pl:1.1.1.1.12.1
--- src/external/ibm-public/postfix/dist/mantools/get_anchors.pl:1.1.1.1	Tue Jun 23 10:08:36 2009
+++ src/external/ibm-public/postfix/dist/mantools/get_anchors.pl	Sun Feb 19 18:28:54 2012
@@ -3,9 +3,9 @@
 # Copyright (c) 2004 Liviu Daia <liviu.d...@imar.ro>
 # All rights reserved.
 #
-# $Revision: 1.1.1.1 $
-# $Id: get_anchors.pl,v 1.1.1.1 2009/06/23 10:08:36 tron Exp $
-# $Source: /cvsroot/src/external/ibm-public/postfix/dist/mantools/get_anchors.pl,v $
+# Revision
+# Id
+# Source
 #
 
 use HTML::Parser;

Index: src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c
diff -u src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c:1.1.1.1 src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c:1.1.1.1.12.1
--- src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c:1.1.1.1	Tue Jun 23 10:08:42 2009
+++ src/external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bounce_trace_service.c,v 1.1.1.1 2009/06/23 10:08:42 tron Exp $	*/
+/*	$NetBSD: bounce_trace_service.c,v 1.1.1.1.12.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -85,8 +85,39 @@ int     bounce_trace_service(int flags, 
     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.
@@ -128,7 +159,6 @@ int     bounce_trace_service(int flags, 
 	bounce_mail_free(bounce_info);
 	return (0);
     }
-#define NULL_SENDER		MAIL_ADDR_EMPTY	/* special address */
 #define NULL_TRACE_FLAGS	0
 
     /*
@@ -141,7 +171,8 @@ int     bounce_trace_service(int flags, 
      * 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: src/external/ibm-public/postfix/dist/src/global/dict_ldap.c
diff -u src/external/ibm-public/postfix/dist/src/global/dict_ldap.c:1.1.1.3 src/external/ibm-public/postfix/dist/src/global/dict_ldap.c:1.1.1.3.6.1
--- src/external/ibm-public/postfix/dist/src/global/dict_ldap.c:1.1.1.3	Wed Mar  2 19:32:14 2011
+++ src/external/ibm-public/postfix/dist/src/global/dict_ldap.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dict_ldap.c,v 1.1.1.3 2011/03/02 19:32:14 tron Exp $	*/
+/*	$NetBSD: dict_ldap.c,v 1.1.1.3.6.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -227,6 +227,7 @@
 #include "mail_conf.h"
 
 #if defined(USE_LDAP_SASL) && defined(LDAP_API_FEATURE_X_OPENLDAP)
+
  /*
   * SASL headers, for sasl_interact_t. Either SASL v1 or v2 should be fine.
   */
@@ -244,13 +245,13 @@
 #define DICT_LDAP_DO_SASL(d)	((d)->bind == DICT_LDAP_BIND_SASL)
 
 static const NAME_CODE bindopt_table[] = {
-    CONFIG_BOOL_NO,	DICT_LDAP_BIND_NONE,
-    "none",		DICT_LDAP_BIND_NONE,
-    CONFIG_BOOL_YES,	DICT_LDAP_BIND_SIMPLE,
-    "simple",		DICT_LDAP_BIND_SIMPLE,
+    CONFIG_BOOL_NO, DICT_LDAP_BIND_NONE,
+    "none", DICT_LDAP_BIND_NONE,
+    CONFIG_BOOL_YES, DICT_LDAP_BIND_SIMPLE,
+    "simple", DICT_LDAP_BIND_SIMPLE,
 #ifdef LDAP_API_FEATURE_X_OPENLDAP
 #if defined(USE_LDAP_SASL)
-    "sasl", 		DICT_LDAP_BIND_SASL,
+    "sasl", DICT_LDAP_BIND_SASL,
 #endif
 #endif
     0, -1,
@@ -294,9 +295,9 @@ typedef struct {
 #ifdef LDAP_API_FEATURE_X_OPENLDAP
 #if defined(USE_LDAP_SASL)
     int     sasl;
-    char    *sasl_mechs;
-    char    *sasl_realm;
-    char    *sasl_authz;
+    char   *sasl_mechs;
+    char   *sasl_realm;
+    char   *sasl_authz;
     int     sasl_minssf;
 #endif
     int     ldap_ssl;
@@ -453,28 +454,26 @@ static int dict_ldap_set_errno(LDAP *ld,
 }
 
 #if defined(USE_LDAP_SASL) && defined(LDAP_API_FEATURE_X_OPENLDAP)
+
  /*
   * Context structure for SASL property callback.
   */
 typedef struct bind_props {
-    char *authcid;
-    char *passwd;
-    char *realm;
-    char *authzid;
+    char   *authcid;
+    char   *passwd;
+    char   *realm;
+    char   *authzid;
 } bind_props;
 
-static int
-ldap_b2_interact(LDAP *ld, unsigned flags, void *props, void *inter)
+static int ldap_b2_interact(LDAP *ld, unsigned flags, void *props, void *inter)
 {
 
     sasl_interact_t *in;
-    bind_props *ctx = (bind_props *)props;
+    bind_props *ctx = (bind_props *) props;
 
-    for (in = inter; in->id != SASL_CB_LIST_END; in++)
-    {
+    for (in = inter; in->id != SASL_CB_LIST_END; in++) {
 	in->result = NULL;
-	switch(in->id)
-	{
+	switch (in->id) {
 	case SASL_CB_GETREALM:
 	    in->result = ctx->realm;
 	    break;
@@ -493,6 +492,7 @@ ldap_b2_interact(LDAP *ld, unsigned flag
     }
     return LDAP_SUCCESS;
 }
+
 #endif
 
 /* dict_ldap_result - Read and parse LDAP result */
@@ -500,6 +500,7 @@ ldap_b2_interact(LDAP *ld, unsigned flag
 static int dict_ldap_result(LDAP *ld, int msgid, int timeout, LDAPMessage **res)
 {
     struct timeval mytimeval;
+    int     err;
 
     mytimeval.tv_sec = timeout;
     mytimeval.tv_usec = 0;
@@ -508,9 +509,12 @@ static int dict_ldap_result(LDAP *ld, in
     if (ldap_result(ld, msgid, GET_ALL, &mytimeval, res) == -1)
 	return (dict_ldap_get_errno(ld));
 
-    if (dict_ldap_get_errno(ld) == LDAP_TIMEOUT) {
-	(void) dict_ldap_abandon(ld, msgid);
-	return (dict_ldap_set_errno(ld, LDAP_TIMEOUT));
+    if ((err = dict_ldap_get_errno(ld)) != LDAP_SUCCESS) {
+	if (err == LDAP_TIMEOUT) {
+	    (void) dict_ldap_abandon(ld, msgid);
+	    return (dict_ldap_set_errno(ld, LDAP_TIMEOUT));
+	}
+	return err;
     }
     return LDAP_SUCCESS;
 }
@@ -531,7 +535,7 @@ static int dict_ldap_bind_sasl(DICT_LDAP
     vstring_sprintf(minssf, "minssf=%d", dict_ldap->sasl_minssf);
 
     if ((rc = ldap_set_option(dict_ldap->ld, LDAP_OPT_X_SASL_SECPROPS,
-			       (char *) minssf)) != LDAP_OPT_SUCCESS)
+			      (char *) minssf)) != LDAP_OPT_SUCCESS)
 	return (rc);
 
     props.authcid = dict_ldap->bind_dn;
@@ -540,13 +544,14 @@ static int dict_ldap_bind_sasl(DICT_LDAP
     props.authzid = dict_ldap->sasl_authz;
 
     if ((rc = ldap_sasl_interactive_bind_s(dict_ldap->ld, NULL,
-					    dict_ldap->sasl_mechs, NULL, NULL,
-					    LDAP_SASL_QUIET, ldap_b2_interact,
-					    &props)) != LDAP_SUCCESS)
+					   dict_ldap->sasl_mechs, NULL, NULL,
+					   LDAP_SASL_QUIET, ldap_b2_interact,
+					   &props)) != LDAP_SUCCESS)
 	return (rc);
 
     return (LDAP_SUCCESS);
 }
+
 #endif
 
 /* dict_ldap_bind_st - Synchronous simple auth with timeout */
@@ -554,6 +559,7 @@ static int dict_ldap_bind_sasl(DICT_LDAP
 static int dict_ldap_bind_st(DICT_LDAP *dict_ldap)
 {
     int     rc;
+    int     err = LDAP_SUCCESS;
     int     msgid;
     LDAPMessage *res;
     struct berval cred;
@@ -569,7 +575,8 @@ static int dict_ldap_bind_st(DICT_LDAP *
 	return (rc);
 
 #define FREE_RESULT 1
-    return (ldap_parse_sasl_bind_result(dict_ldap->ld, res, 0, FREE_RESULT));
+    rc = ldap_parse_result(dict_ldap->ld, res, &err, 0, 0, 0, 0, FREE_RESULT);
+    return (rc == LDAP_SUCCESS ? err : rc);
 }
 
 /* search_st - Synchronous search with timeout */
@@ -870,6 +877,7 @@ static int dict_ldap_connect(DICT_LDAP *
 
 #define DN_LOG_VAL(dict_ldap) \
 	((dict_ldap)->bind_dn[0] ? (dict_ldap)->bind_dn : "empty or implicit")
+
     /*
      * If this server requires a bind, do so. Thanks to Sam Tardieu for
      * noticing that the original bind call was broken.
@@ -1875,6 +1883,7 @@ DICT   *dict_ldap_open(const char *ldaps
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP
 #if defined(USE_LDAP_SASL)
+
     /*
      * SASL options
      */

Index: src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c
diff -u src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c:1.1.1.1 src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c:1.1.1.1.8.1
--- src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c:1.1.1.1	Wed Mar  2 19:32:14 2011
+++ src/external/ibm-public/postfix/dist/src/global/dict_sqlite.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dict_sqlite.c,v 1.1.1.1 2011/03/02 19:32:14 tron Exp $	*/
+/*	$NetBSD: dict_sqlite.c,v 1.1.1.1.8.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -59,6 +59,12 @@
 /* AUTHOR(S)
 /*	Axel Steiner
 /*	a...@treibsand.com
+/*
+/*	Adopted and updated by:
+/*	Wietse Venema
+/*	IBM T.J. Watson Research
+/*	P.O. Box 704
+/*	Yorktown Heights, NY 10598, USA
 /*--*/
 
 /* System library. */
@@ -111,7 +117,7 @@ static void dict_sqlite_quote(DICT *dict
     /* Fix 20100616 */
     if (quoted_text == 0)
 	msg_fatal("dict_sqlite_quote: out of memory");
-    vstring_strcat(result, raw_text);
+    vstring_strcat(result, quoted_text);
     sqlite3_free(quoted_text);
 }
 
@@ -153,6 +159,11 @@ static const char *dict_sqlite_lookup(DI
     int     status;
 
     /*
+     * In case of return without lookup (skipped key, etc.).
+     */
+    dict_errno = 0;
+
+    /*
      * Don't frustrate future attempts to make Postfix UTF-8 transparent.
      */
     if (!valid_utf_8(name, strlen(name))) {

Index: src/external/ibm-public/postfix/dist/src/global/mail_version.h
diff -u src/external/ibm-public/postfix/dist/src/global/mail_version.h:1.1.1.12 src/external/ibm-public/postfix/dist/src/global/mail_version.h:1.1.1.12.2.1
--- src/external/ibm-public/postfix/dist/src/global/mail_version.h:1.1.1.12	Wed Nov  9 19:01:35 2011
+++ src/external/ibm-public/postfix/dist/src/global/mail_version.h	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: mail_version.h,v 1.1.1.12 2011/11/09 19:01:35 tron Exp $	*/
+/*	$NetBSD: mail_version.h,v 1.1.1.12.2.1 2012/02/19 18:28:54 riz Exp $	*/
 
 #ifndef _MAIL_VERSION_H_INCLUDED_
 #define _MAIL_VERSION_H_INCLUDED_
@@ -22,8 +22,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE	"20111105"
-#define MAIL_VERSION_NUMBER	"2.8.7"
+#define MAIL_RELEASE_DATE	"20120201"
+#define MAIL_VERSION_NUMBER	"2.8.8"
 
 #ifdef SNAPSHOT
 # define MAIL_VERSION_DATE	"-" MAIL_RELEASE_DATE

Index: src/external/ibm-public/postfix/dist/src/global/maps.c
diff -u src/external/ibm-public/postfix/dist/src/global/maps.c:1.1.1.1 src/external/ibm-public/postfix/dist/src/global/maps.c:1.1.1.1.12.1
--- src/external/ibm-public/postfix/dist/src/global/maps.c:1.1.1.1	Tue Jun 23 10:08:47 2009
+++ src/external/ibm-public/postfix/dist/src/global/maps.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: maps.c,v 1.1.1.1 2009/06/23 10:08:47 tron Exp $	*/
+/*	$NetBSD: maps.c,v 1.1.1.1.12.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -166,6 +166,11 @@ const char *maps_find(MAPS *maps, const 
     DICT   *dict;
 
     /*
+     * In case of return without map lookup (empty name or no maps).
+     */
+    dict_errno = 0;
+
+    /*
      * Temp. workaround, for buggy callers that pass zero-length keys when
      * given partial addresses.
      */
@@ -191,6 +196,7 @@ const char *maps_find(MAPS *maps, const 
 			 *map_name, name, expansion);
 	    return (expansion);
 	} else if (dict_errno != 0) {
+	    msg_warn("%s:%s lookup of %s failed", dict->type, dict->name, name);
 	    break;
 	}
     }

Index: src/external/ibm-public/postfix/dist/src/local/mailbox.c
diff -u src/external/ibm-public/postfix/dist/src/local/mailbox.c:1.1.1.2 src/external/ibm-public/postfix/dist/src/local/mailbox.c:1.1.1.2.4.1
--- src/external/ibm-public/postfix/dist/src/local/mailbox.c:1.1.1.2	Sun Jul 31 10:02:41 2011
+++ src/external/ibm-public/postfix/dist/src/local/mailbox.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: mailbox.c,v 1.1.1.2 2011/07/31 10:02:41 tron Exp $	*/
+/*	$NetBSD: mailbox.c,v 1.1.1.2.4.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -291,7 +291,8 @@ int     deliver_mailbox(LOCAL_STATE stat
     } 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) {
@@ -335,7 +336,8 @@ int     deliver_mailbox(LOCAL_STATE stat
     } 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: src/external/ibm-public/postfix/dist/src/local/unknown.c
diff -u src/external/ibm-public/postfix/dist/src/local/unknown.c:1.1.1.2 src/external/ibm-public/postfix/dist/src/local/unknown.c:1.1.1.2.4.1
--- src/external/ibm-public/postfix/dist/src/local/unknown.c:1.1.1.2	Sun Jul 31 10:02:41 2011
+++ src/external/ibm-public/postfix/dist/src/local/unknown.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: unknown.c,v 1.1.1.2 2011/07/31 10:02:41 tron Exp $	*/
+/*	$NetBSD: unknown.c,v 1.1.1.2.4.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -74,6 +74,7 @@
 #include <mail_addr.h>
 #include <sent.h>
 #include <deliver_pass.h>
+#include <defer.h>
 
 /* Application-specific. */
 
@@ -122,7 +123,8 @@ int     deliver_unknown(LOCAL_STATE stat
     } 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: src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c
diff -u src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c:1.1.1.1 src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c:1.1.1.1.8.1
--- src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c:1.1.1.1	Wed Mar  2 19:32:39 2011
+++ src/external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tlsproxy.c,v 1.1.1.1 2011/03/02 19:32:39 tron Exp $	*/
+/*	$NetBSD: tlsproxy.c,v 1.1.1.1.8.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -694,7 +694,7 @@ static void tlsp_start_tls(TLSP_STATE *s
 			 timeout = 0,		/* unused */
 			 requirecert = (var_tlsp_tls_req_ccert
 					&& var_tlsp_enforce_tls),
-			 serverid = state->service,
+			 serverid = MAIL_SERVICE_SMTPD,	/* XXX */
 			 namaddr = state->remote_endpt,
 			 cipher_grade = cipher_grade,
 			 cipher_exclusions = STR(cipher_exclusions),

Index: src/external/ibm-public/postfix/dist/src/util/dict.c
diff -u src/external/ibm-public/postfix/dist/src/util/dict.c:1.1.1.3 src/external/ibm-public/postfix/dist/src/util/dict.c:1.1.1.3.6.1
--- src/external/ibm-public/postfix/dist/src/util/dict.c:1.1.1.3	Wed Mar  2 19:32:41 2011
+++ src/external/ibm-public/postfix/dist/src/util/dict.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dict.c,v 1.1.1.3 2011/03/02 19:32:41 tron Exp $	*/
+/*	$NetBSD: dict.c,v 1.1.1.3.6.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -538,6 +538,8 @@ static const NAME_MASK dict_mask[] = {
     "no_unauth", (1 << 13),		/* disallow unauthenticated data */
     "fold_fix", (1 << 14),		/* case-fold with fixed-case key map */
     "fold_mul", (1 << 15),		/* case-fold with multi-case key map */
+    "open_lock", (1 << 16),		/* permanent lock upon open */
+    0,
 };
 
 /* dict_flags_str - convert mask to string for debugging purposes */

Index: src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c
diff -u src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c:1.1.1.3 src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c:1.1.1.3.6.1
--- src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c:1.1.1.3	Wed Mar  2 19:32:48 2011
+++ src/external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c	Sun Feb 19 18:28:54 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: xsasl_dovecot_server.c,v 1.1.1.3 2011/03/02 19:32:48 tron Exp $	*/
+/*	$NetBSD: xsasl_dovecot_server.c,v 1.1.1.3.6.1 2012/02/19 18:28:54 riz Exp $	*/
 
 /*++
 /* NAME
@@ -373,11 +373,6 @@ XSASL_SERVER_IMPL *xsasl_dovecot_server_
 {
     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;

Reply via email to