Hello, the attached patch updates our package "mail/postfix" to version 2.8.1. I've compile-time tested it under NetBSD/amd 5.1 with a variety of options and it builds and installs fine. Before I commit the update I would appreciate if somebody who uses Postfix from "pkgsrc" (I use Postfix for the NetBSD base distribution) could test the package. Thanks in advance -- Matthias Scheler http://zhadum.org.uk/
Index: mail/postfix/Makefile =================================================================== RCS file: /cvsroot/pkgsrc/mail/postfix/Makefile,v retrieving revision 1.236 diff -u -r1.236 Makefile --- mail/postfix/Makefile 28 Nov 2010 18:14:10 -0000 1.236 +++ mail/postfix/Makefile 25 Feb 2011 20:36:02 -0000 @@ -1,12 +1,11 @@ # $NetBSD: Makefile,v 1.236 2010/11/28 18:14:10 tron Exp $ -DISTNAME= postfix-2.7.2 +DISTNAME= postfix-2.8.1 CATEGORIES= mail MASTER_SITES= ftp://ftp.porcupine.org/mirrors/postfix-release/official/ MASTER_SITES+= http://postfix.it-austria.net/releases/official/ MASTER_SITES+= http://mirrors.isc.org/pub/postfix/official/ MASTER_SITES+= http://mirror.postfix.jp/postfix-release/official/ -DIST_SUBDIR= postfix MAINTAINER= pkgsrc-users%NetBSD.org@localhost HOMEPAGE= http://www.postfix.org/ Index: mail/postfix/PLIST =================================================================== RCS file: /cvsroot/pkgsrc/mail/postfix/PLIST,v retrieving revision 1.24 diff -u -r1.24 PLIST --- mail/postfix/PLIST 25 Feb 2010 13:01:22 -0000 1.24 +++ mail/postfix/PLIST 25 Feb 2011 20:36:02 -0000 @@ -4,6 +4,7 @@ libexec/postfix/anvil libexec/postfix/bounce libexec/postfix/cleanup +libexec/postfix/dnsblog libexec/postfix/discard libexec/postfix/error libexec/postfix/flush @@ -21,6 +22,7 @@ libexec/postfix/postfix-script libexec/postfix/postfix-wrapper libexec/postfix/postmulti-script +libexec/postfix/postscreen libexec/postfix/proxymap libexec/postfix/qmgr libexec/postfix/qmqpd @@ -30,6 +32,7 @@ libexec/postfix/smtpd libexec/postfix/spawn libexec/postfix/tlsmgr +libexec/postfix/tlsproxy libexec/postfix/trivial-rewrite libexec/postfix/verify libexec/postfix/virtual @@ -67,6 +70,7 @@ man/man5/postfix-wrapper.5 man/man5/regexp_table.5 man/man5/relocated.5 +man/man5/sqlite_table.5 man/man5/tcp_table.5 man/man5/transport.5 man/man5/virtual.5 @@ -75,12 +79,14 @@ man/man8/cleanup.8 man/man8/defer.8 man/man8/discard.8 +man/man8/dnsblog.8 man/man8/error.8 man/man8/flush.8 man/man8/lmtp.8 man/man8/local.8 man/man8/master.8 man/man8/oqmgr.8 +man/man8/postscreen.8 man/man8/pickup.8 man/man8/pipe.8 man/man8/proxymap.8 @@ -92,6 +98,7 @@ man/man8/smtpd.8 man/man8/spawn.8 man/man8/tlsmgr.8 +man/man8/tlsproxy.8 man/man8/trace.8 man/man8/trivial-rewrite.8 man/man8/verify.8 @@ -140,6 +147,7 @@ share/doc/postfix/PACKAGE_README share/doc/postfix/PCRE_README share/doc/postfix/PGSQL_README +share/doc/postfix/POSTSCREEN_README share/doc/postfix/QSHAPE_README share/doc/postfix/RELEASE_NOTES share/doc/postfix/RESTRICTION_CLASS_README @@ -148,6 +156,8 @@ share/doc/postfix/SMTPD_ACCESS_README share/doc/postfix/SMTPD_POLICY_README share/doc/postfix/SMTPD_PROXY_README +share/doc/postfix/SOHO_README +share/doc/postfix/SQLITE_README share/doc/postfix/STANDARD_CONFIGURATION_README share/doc/postfix/STRESS_README share/doc/postfix/TLS_LEGACY_README Index: mail/postfix/distinfo =================================================================== RCS file: /cvsroot/pkgsrc/mail/postfix/distinfo,v retrieving revision 1.132 diff -u -r1.132 distinfo --- mail/postfix/distinfo 28 Nov 2010 18:14:10 -0000 1.132 +++ mail/postfix/distinfo 25 Feb 2011 20:36:02 -0000 @@ -1,12 +1,8 @@ $NetBSD: distinfo,v 1.132 2010/11/28 18:14:10 tron Exp $ -SHA1 (postfix/postfix-2.7.2.tar.gz) = 2415c63c98ba0e0273bcb490ee7753a3891f5a73 -RMD160 (postfix/postfix-2.7.2.tar.gz) = e07a59f2f663b286a6c24e75b98952a51d2234fe -Size (postfix/postfix-2.7.2.tar.gz) = 3421671 bytes +SHA1 (postfix-2.8.1.tar.gz) = c2b5aa6ed3520fd9298b140a71a09fee8ee40f4d +RMD160 (postfix-2.8.1.tar.gz) = 21a7a46c2e62d98108271423129589bff30ee248 +Size (postfix-2.8.1.tar.gz) = 3643859 bytes SHA1 (patch-aa) = 5b4923402c80957e47b8a4e16c897287b88544bb SHA1 (patch-ag) = 53f42aec86af576e1ffc420f1b9a19c988c3fe6c SHA1 (patch-ai) = ef3feef8a4fe7781a89f7e087fc5780760b461b1 -SHA1 (patch-as) = 621b92e56606794f28ab267c6c5d723734471389 -SHA1 (patch-at) = b0abf2c49bfe94153f7a3845b5709ff8e0027a03 -SHA1 (patch-au) = 60396f5f182e0f247b06974dc5cf912dbcf84bbf -SHA1 (patch-av) = 98073186738e1a4fcd0f620096f4be83a9ff9e73 Index: mail/postfix/patches/patch-as =================================================================== RCS file: mail/postfix/patches/patch-as diff -N mail/postfix/patches/patch-as --- mail/postfix/patches/patch-as 25 Feb 2010 13:01:23 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,55 +0,0 @@ -$NetBSD: patch-as,v 1.6 2010/02/25 13:01:23 martti Exp $ - -Support for sqlite. - ---- src/global/Makefile.in.orig 2009-10-07 03:09:52.000000000 +0300 -+++ src/global/Makefile.in 2010-02-25 14:49:15.000000000 +0200 -@@ -4,7 +4,7 @@ - clnt_stream.c conv_time.c db_common.c debug_peer.c debug_process.c \ - defer.c deliver_completed.c deliver_flock.c deliver_pass.c \ - deliver_request.c dict_ldap.c dict_mysql.c dict_pgsql.c \ -- dict_proxy.c domain_list.c dot_lockfile.c dot_lockfile_as.c \ -+ dict_proxy.c dict_sqlite.c domain_list.c dot_lockfile.c dot_lockfile_as.c \ - dsb_scan.c dsn.c dsn_buf.c dsn_mask.c dsn_print.c dsn_util.c \ - ehlo_mask.c ext_prop.c file_id.c flush_clnt.c header_opts.c \ - header_token.c input_transp.c int_filt.c is_header.c log_adhoc.c \ -@@ -35,7 +35,7 @@ - clnt_stream.o conv_time.o db_common.o debug_peer.o debug_process.o \ - defer.o deliver_completed.o deliver_flock.o deliver_pass.o \ - deliver_request.o dict_ldap.o dict_mysql.o dict_pgsql.o \ -- dict_proxy.o domain_list.o dot_lockfile.o dot_lockfile_as.o \ -+ dict_proxy.o dict_sqlite.o domain_list.o dot_lockfile.o dot_lockfile_as.o \ - dsb_scan.o dsn.o dsn_buf.o dsn_mask.o dsn_print.o dsn_util.o \ - ehlo_mask.o ext_prop.o file_id.o flush_clnt.o header_opts.o \ - header_token.o input_transp.o int_filt.o is_header.o log_adhoc.o \ -@@ -65,7 +65,7 @@ - canon_addr.h cfg_parser.h cleanup_user.h clnt_stream.h config.h \ - conv_time.h db_common.h debug_peer.h debug_process.h defer.h \ - deliver_completed.h deliver_flock.h deliver_pass.h deliver_request.h \ -- dict_ldap.h dict_mysql.h dict_pgsql.h dict_proxy.h domain_list.h \ -+ dict_ldap.h dict_mysql.h dict_pgsql.h dict_proxy.h dict_sqlite.h domain_list.h \ - dot_lockfile.h dot_lockfile_as.h dsb_scan.h dsn.h dsn_buf.h \ - dsn_mask.h dsn_print.h dsn_util.h ehlo_mask.h ext_prop.h \ - file_id.h flush_clnt.h header_opts.h header_token.h input_transp.h \ -@@ -868,6 +868,13 @@ - dict_proxy.o: dict_proxy.h - dict_proxy.o: mail_params.h - dict_proxy.o: mail_proto.h -+dict_sqlite.o: ../../include/dict.h -+dict_sqlite.o: ../../include/msg.h -+dict_sqlite.o: ../../include/sys_defs.h -+dict_sqlite.o: cfg_parser.h -+dict_sqlite.o: db_common.h -+dict_sqlite.o: dict_sqlite.c -+dict_sqlite.o: dict_sqlite.h - domain_list.o: ../../include/match_list.h - domain_list.o: ../../include/match_ops.h - domain_list.o: ../../include/sys_defs.h -@@ -1239,6 +1246,7 @@ - mail_dict.o: dict_mysql.h - mail_dict.o: dict_pgsql.h - mail_dict.o: dict_proxy.h -+mail_dict.o: dict_sqlite.h - mail_dict.o: mail_dict.c - mail_dict.o: mail_dict.h - mail_error.o: ../../include/name_mask.h Index: mail/postfix/patches/patch-at =================================================================== RCS file: mail/postfix/patches/patch-at diff -N mail/postfix/patches/patch-at --- mail/postfix/patches/patch-at 16 Oct 2008 09:40:20 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,261 +0,0 @@ -$NetBSD: patch-at,v 1.4 2008/10/16 09:40:20 martti Exp $ - -Support for sqlite. - ---- src/global/dict_sqlite.c.orig 2008-10-17 00:40:21.000000000 +0200 -+++ src/global/dict_sqlite.c -@@ -0,0 +1,254 @@ -+/*++ -+/* NAME -+/* dict_sqlite 3 -+/* SUMMARY -+/* dictionary manager interface to SQLite3 databases -+/* SYNOPSIS -+/* #include <dict_sqlite.h> -+/* -+/* DICT *dict_sqlite_open(name, open_flags, dict_flags) -+/* const char *name; -+/* int open_flags; -+/* int dict_flags; -+/* DESCRIPTION -+/* dict_sqlite_open() creates a dictionary of type 'sqlite'. This -+/* dictionary is an interface for the postfix key->value mappings -+/* to SQLite. The result is a pointer to the installed dictionary, -+/* or a null pointer in case of problems. -+/* .PP -+/* Arguments: -+/* .IP name -+/* Either the path to the SQLite configuration file (if it starts -+/* with '/' or '.'), or the prefix which will be used to obtain -+/* main.cf configuration parameters for this search. -+/* -+/* In the first case, the configuration parameters below are -+/* specified in the file as \fIname\fR=\fBvalue\fR pairs. -+/* -+/* In the second case, the configuration parameters are -+/* prefixed with the value of \fIname\fR and an underscore, -+/* and they are specified in main.cf. For example, if this -+/* value is \fIsqlitecon\fR, the parameters would look like -+/* \fIsqlitecon_user\fR, \fIsqlitecon_table\fR, and so on. -+/* -+/* .IP open_flags -+/* Must be O_RDONLY. -+/* .IP dict_flags -+/* See dict_open(3). -+/* .PP -+/* Configuration parameters: -+/* -+/* The parameters encodes a number of pieces of information: -+/* dbpath, query, table, select_field and where_field: -+/* .IP \fIdbpath\fR -+/* Path to SQLite database -+/* .IP \fIquery\fR -+/* Query template, before the query is actually issued, variable -+/* substitutions are performed. See sqlite_table(5) for details. If -+/* No query is specified, the legacy variables \fItable\fR, -+/* \fIselect_field\fR, \fIwhere_field\fR and \fIadditional_conditions\fR -+/* are used to construct the query template. -+/* .IP \fIresult_format\fR -+/* The format used to expand results from queries. Substitutions -+/* are performed as described in sqlite_table(5). Defaults to returning -+/* the lookup result unchanged. -+/* .IP expansion_limit -+/* Limit (if any) on the total number of lookup result values. Lookups which -+/* exceed the limit fail with dict_errno=DICT_ERR_RETRY. Note that each -+/* non-empty (and non-NULL) column of a multi-column result row counts as -+/* one result. -+/* -+/* SEE ALSO -+/* dict(3) generic dictionary manager -+/* AUTHOR(S) -+/* Axel Steiner -+/* ast%treibsand.com@localhost -+/*--*/ -+ -+/* System library. */ -+#include "sys_defs.h" -+ -+#ifdef HAS_SQLITE -+#include <sqlite3.h> -+ -+/* Utility library. */ -+ -+#include "msg.h" -+#include "dict.h" -+#include "vstring.h" -+#include "stringops.h" -+ -+/* Global library. */ -+ -+#include "cfg_parser.h" -+#include "db_common.h" -+ -+/* Application-specific. */ -+ -+#include "dict_sqlite.h" -+ -+typedef struct { -+ DICT dict; -+ CFG_PARSER *parser; -+ sqlite3 *db; -+ char *dbpath; -+ char *query; -+ char *result_format; -+ int expansion_limit; -+ void *ctx; -+} DICT_SQLITE; -+ -+typedef sqlite3_stmt *SQL; -+ -+/* internal function declarations */ -+ -+static const char *dict_sqlite_lookup(DICT *, const char *); -+DICT *dict_sqlite_open(const char *, int, int); -+static void dict_sqlite_close(DICT *); -+static void sqlite_parse_config(DICT_SQLITE *, const char *); -+ -+ -+/* dict_sqlite_close - close the database */ -+ -+static void dict_sqlite_close(DICT *dict) { -+ const char *myname = "dict_sqlite_close"; -+ DICT_SQLITE *dict_sqlite = (DICT_SQLITE *) dict; -+ -+ if (msg_verbose) -+ msg_info("%s: dict_sqlite_close", myname); -+ if (sqlite3_close(dict_sqlite->db) != SQLITE_OK) -+ msg_fatal("%s: DB close failed", myname); -+ cfg_parser_free(dict_sqlite->parser); -+ if (dict->fold_buf) -+ vstring_free(dict->fold_buf); -+ dict_free(dict); -+} -+ -+ -+/* dict_sqlite_lookup - find database entry */ -+ -+static const char *dict_sqlite_lookup(DICT *dict, const char *name) { -+ const char *myname = "dict_sqlite_lookup"; -+ DICT_SQLITE *dict_sqlite = (DICT_SQLITE *) dict; -+ SQL sql; -+ const char *zErrMsg; -+ static VSTRING *query; -+ static VSTRING *result; -+ const char *r; -+ int expansion = 0; -+ -+ /* -+ * Optionally fold the key. -+ */ -+ if (dict->fold_buf) { -+ vstring_strcpy(dict->fold_buf, name); -+ name = lowercase(vstring_str(dict->fold_buf)); -+ } -+ -+ if (db_common_check_domain(dict_sqlite->ctx, name) == 0) { -+ if (msg_verbose) -+ msg_info("%s: Skipping lookup of '%s'", myname, name); -+ return (0); -+ } -+ -+#define INIT_VSTR(buf, len) do { \ -+ if (buf == 0) \ -+ buf = vstring_alloc(len); \ -+ VSTRING_RESET(buf); \ -+ VSTRING_TERMINATE(buf); \ -+ } while (0) -+ -+ INIT_VSTR(query, 10); -+ -+ if (!db_common_expand(dict_sqlite->ctx, dict_sqlite->query, -+ name, 0, query, NULL)) -+ return (0); -+ -+ if (msg_verbose) -+ msg_info("%s: %s: Searching with query %s", myname, -+ dict_sqlite->parser->name, vstring_str(query)); -+ -+ if(sqlite3_prepare_v2(dict_sqlite->db,vstring_str(query),-1,&sql,&zErrMsg)!=SQLITE_OK) { -+ msg_fatal("%s: sql prepare %s\n",myname,sqlite3_errmsg(dict_sqlite->db)); -+ } -+ -+ INIT_VSTR(result, 10); -+ while (sqlite3_step(sql) == SQLITE_ROW ) { -+ if (db_common_expand(dict_sqlite->ctx, dict_sqlite->result_format, -+ sqlite3_column_text(sql, 0), name, result, 0) -+ && dict_sqlite->expansion_limit > 0 -+ && ++expansion > dict_sqlite->expansion_limit) { -+ msg_warn("%s: %s: Expansion limit exceeded for key: '%s'", -+ myname, dict_sqlite->parser->name, name); -+ dict_errno = DICT_ERR_RETRY; -+ break; -+ } -+ } -+ -+ if(sqlite3_finalize(sql)){ -+ msg_fatal("%s: sql finalize for %s; %s\n",myname,vstring_str(query),sqlite3_errmsg(dict_sqlite->db)); -+ return(0); -+ } -+ -+ -+ r = vstring_str(result); -+ return ((dict_errno == 0 && *r) ? r : 0); -+} -+ -+/* sqlite_parse_config - parse sqlite configuration file */ -+ -+static void sqlite_parse_config(DICT_SQLITE *dict_sqlite, const char *sqlitecf) { -+ CFG_PARSER *p; -+ VSTRING *buf; -+ -+ p = dict_sqlite->parser = cfg_parser_alloc(sqlitecf); -+ dict_sqlite->dbpath = cfg_get_str(p, "dbpath", "", 1, 0); -+ dict_sqlite->result_format = cfg_get_str(p, "result_format", "%s", 1, 0); -+ -+ if ((dict_sqlite->query = cfg_get_str(p, "query", NULL, 0, 0)) == 0) { -+ buf = vstring_alloc(64); -+ db_common_sql_build_query(buf, p); -+ dict_sqlite->query = vstring_export(buf); -+ } -+ dict_sqlite->expansion_limit = cfg_get_int(p,"expansion_limit", 0, 0, 0); -+ dict_sqlite->ctx = 0; -+ -+ (void) db_common_parse(&dict_sqlite->dict, &dict_sqlite->ctx, dict_sqlite->query, 1); -+ (void) db_common_parse(0, &dict_sqlite->ctx, dict_sqlite->result_format, 0); -+ -+ db_common_parse_domain(p, dict_sqlite->ctx); -+ -+ if (db_common_dict_partial(dict_sqlite->ctx)) -+ dict_sqlite->dict.flags |= DICT_FLAG_PATTERN; -+ else -+ dict_sqlite->dict.flags |= DICT_FLAG_FIXED; -+ -+ if (dict_sqlite->dict.flags & DICT_FLAG_FOLD_FIX) -+ dict_sqlite->dict.fold_buf = vstring_alloc(10); -+} -+ -+/* dict_sqlite_open - open sqlite database */ -+ -+DICT *dict_sqlite_open(const char *name, int open_flags, int dict_flags) { -+ DICT_SQLITE *dict_sqlite; -+ -+ /* -+ * Sanity checks. -+ */ -+ if (open_flags != O_RDONLY) -+ msg_fatal("%s:%s map requires O_RDONLY access mode", DICT_TYPE_SQLITE, name); -+ -+ dict_sqlite = (DICT_SQLITE *) dict_alloc(DICT_TYPE_SQLITE, name, sizeof(DICT_SQLITE)); -+ dict_sqlite->dict.lookup = dict_sqlite_lookup; -+ dict_sqlite->dict.close = dict_sqlite_close; -+ dict_sqlite->dict.flags = dict_flags; -+ sqlite_parse_config(dict_sqlite, name); -+ -+ if (sqlite3_open(dict_sqlite->dbpath, &dict_sqlite->db)) { -+ msg_fatal("Can't open database: %s\n", sqlite3_errmsg(dict_sqlite->db)); -+ sqlite3_close(dict_sqlite->db); -+ } -+ -+ return (DICT_DEBUG (&dict_sqlite->dict)); -+} -+#endif Index: mail/postfix/patches/patch-au =================================================================== RCS file: mail/postfix/patches/patch-au diff -N mail/postfix/patches/patch-au --- mail/postfix/patches/patch-au 16 Oct 2008 09:40:20 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,39 +0,0 @@ -$NetBSD: patch-au,v 1.5 2008/10/16 09:40:20 martti Exp $ - -Support for sqlite. - ---- src/global/dict_sqlite.h.orig 2008-10-17 00:40:21.000000000 +0200 -+++ src/global/dict_sqlite.h -@@ -0,0 +1,32 @@ -+#ifndef _DICT_SQLITE_H_INCLUDED_ -+#define _DICT_SQLITE_H_INCLUDED_ -+ -+/*++ -+/* NAME -+/* dict_sqlite 3h -+/* SUMMARY -+/* dictionary manager interface to sqlite databases -+/* SYNOPSIS -+/* #include <dict_sqlite.h> -+/* DESCRIPTION -+/* .nf -+ -+ /* -+ * Utility library. -+ */ -+#include <dict.h> -+ -+ /* -+ * External interface. -+ */ -+#define DICT_TYPE_SQLITE "sqlite" -+ -+extern DICT *dict_sqlite_open(const char *, int, int); -+ -+ -+/* AUTHOR(S) -+/* Axel Steiner -+/* ast%treibsand.com@localhost -+/*--*/ -+ -+#endif Index: mail/postfix/patches/patch-av =================================================================== RCS file: mail/postfix/patches/patch-av diff -N mail/postfix/patches/patch-av --- mail/postfix/patches/patch-av 16 Oct 2008 09:40:20 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,24 +0,0 @@ -$NetBSD: patch-av,v 1.6 2008/10/16 09:40:20 martti Exp $ - -Support for sqlite. - ---- src/global/mail_dict.c.orig 2008-01-08 22:07:47.000000000 +0100 -+++ src/global/mail_dict.c -@@ -36,6 +36,7 @@ - #include <dict_ldap.h> - #include <dict_mysql.h> - #include <dict_pgsql.h> -+#include <dict_sqlite.h> - #include <mail_dict.h> - - typedef struct { -@@ -54,6 +55,9 @@ static const DICT_OPEN_INFO dict_open_in - #ifdef HAS_PGSQL - DICT_TYPE_PGSQL, dict_pgsql_open, - #endif -+#ifdef HAS_SQLITE -+ DICT_TYPE_SQLITE, dict_sqlite_open, -+#endif - 0, - }; -
Attachment:
pgpJtLiJQ2hUV.pgp
Description: PGP signature