mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-22 09:57:34 +00:00
postfix-2.12-20140709
This commit is contained in:
parent
1042e00cfd
commit
ab5d95ae1d
@ -20122,3 +20122,17 @@ Apologies for any names omitted.
|
|||||||
action when giving up. The defaults are backwards-compatible.
|
action when giving up. The defaults are backwards-compatible.
|
||||||
Files: global/mail_params.h, mantools/postlink,
|
Files: global/mail_params.h, mantools/postlink,
|
||||||
proto/postconf.proto, smtpd/smtpd.c, smtpd/smtpd_check.c.
|
proto/postconf.proto, smtpd/smtpd.c, smtpd/smtpd_check.c.
|
||||||
|
|
||||||
|
20140708
|
||||||
|
|
||||||
|
Bugfix (introduced 20140701): did not restore jumpbuf
|
||||||
|
while evaluatingsmtpd_policy_service_default_action.
|
||||||
|
Viktor Dukhovni. File: smtpd/smtpd_check.c.
|
||||||
|
|
||||||
|
20140709
|
||||||
|
|
||||||
|
Cleanup: bitrot in unused function. File: global/defer.c.
|
||||||
|
|
||||||
|
Cleanup: add SYSLIBS minus static libraries while building
|
||||||
|
Postfix shared-library objects. Files: makedefs, util/Makefile.in,
|
||||||
|
global/Makefile.in, dns/Makefile.in, master/Makefile.in/.
|
||||||
|
@ -41,6 +41,26 @@ Maintainers may also benefit from the makedefs documentation
|
|||||||
(mantools/srctoman - makedefs | nroff -man | less) with information
|
(mantools/srctoman - makedefs | nroff -man | less) with information
|
||||||
about build options that are not described in the INSTALL instructions.
|
about build options that are not described in the INSTALL instructions.
|
||||||
|
|
||||||
|
Major changes with snapshot 20140703
|
||||||
|
====================================
|
||||||
|
|
||||||
|
This release introduces three new configuration parameters that
|
||||||
|
control error recovery for failed SMTPD policy requests.
|
||||||
|
|
||||||
|
* smtpd_policy_service_default_action (default: 451 4.3.5 Server
|
||||||
|
configuration problem): The default action when an SMTPD policy
|
||||||
|
service request fails.
|
||||||
|
|
||||||
|
* smtpd_policy_service_try_limit (default: 2): The maximal number
|
||||||
|
of attempts to send an SMTPD policy service request before
|
||||||
|
giving up. This must be a number greater than zero.
|
||||||
|
|
||||||
|
* smtpd_policy_service_retry_delay (default: 1s): The delay between
|
||||||
|
attempts to resend a failed SMTPD policy service request. This
|
||||||
|
must be a number greater than zero.
|
||||||
|
|
||||||
|
See postconf(5) for details and limitations.
|
||||||
|
|
||||||
Incompatible changes with snapshot 20140701
|
Incompatible changes with snapshot 20140701
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
|
@ -8,14 +8,18 @@ Wish list:
|
|||||||
|
|
||||||
Things to do after the stable release:
|
Things to do after the stable release:
|
||||||
|
|
||||||
|
Document and test restriction_classes example for
|
||||||
|
smtpd_policy_service_default_action.
|
||||||
|
|
||||||
Don't accept AUTH or other features that are not announced
|
Don't accept AUTH or other features that are not announced
|
||||||
in the EHLO response.
|
in the EHLO response.
|
||||||
|
|
||||||
Per-Milter error action.
|
Per-Milter error action.
|
||||||
|
|
||||||
Suggested at Mailserver conference: Postscreen RDNS-based
|
Suggested at Mailserver conference: Postscreen RDNS-based
|
||||||
reputation (but this introduces dependency on random DNS
|
reputation (but this makes postscreen performance highly
|
||||||
servers).
|
unpredicable because it introduces a dependency on random
|
||||||
|
DNS servers).
|
||||||
|
|
||||||
Discourage the use of "after 220" tests in POSTSCREEN_README
|
Discourage the use of "after 220" tests in POSTSCREEN_README
|
||||||
and the documentation of individual parameter settings.
|
and the documentation of individual parameter settings.
|
||||||
|
@ -926,6 +926,7 @@ no|"")
|
|||||||
SHLIB_CFLAGS=
|
SHLIB_CFLAGS=
|
||||||
SHLIB_SUFFIX=
|
SHLIB_SUFFIX=
|
||||||
SHLIB_LD=:
|
SHLIB_LD=:
|
||||||
|
SHLIB_SYSLIBS=
|
||||||
SHLIB_RPATH=
|
SHLIB_RPATH=
|
||||||
SHLIB_ENV=
|
SHLIB_ENV=
|
||||||
LIB_PREFIX=
|
LIB_PREFIX=
|
||||||
@ -984,6 +985,21 @@ AUXLIBS_$name = \$AUXLIBS_$name\""
|
|||||||
done;;
|
done;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Remove static libraries from SYSLIBS when building shared objects,
|
||||||
|
# Can't use the shell "case" patterns to detect names ending in *.a.
|
||||||
|
|
||||||
|
case "$shared" in
|
||||||
|
yes) SHLIB_SYSLIBS=`${AWK} '
|
||||||
|
BEGIN { wc = split("'"$SYSLIBS"'", words)
|
||||||
|
for (n = 1; n <= wc; n++)
|
||||||
|
if (words[n] !~ /\.a$/)
|
||||||
|
printf(" %s", words[n])
|
||||||
|
}
|
||||||
|
'`
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Finally...
|
||||||
|
|
||||||
sed 's/ */ /g' <<EOF
|
sed 's/ */ /g' <<EOF
|
||||||
# System-dependent settings and compiler/linker overrides.
|
# System-dependent settings and compiler/linker overrides.
|
||||||
SYSTYPE = $SYSTYPE
|
SYSTYPE = $SYSTYPE
|
||||||
@ -1009,6 +1025,7 @@ SHLIB_CFLAGS = $SHLIB_CFLAGS
|
|||||||
SHLIB_DIR = $shlib_directory
|
SHLIB_DIR = $shlib_directory
|
||||||
SHLIB_ENV = $SHLIB_ENV
|
SHLIB_ENV = $SHLIB_ENV
|
||||||
SHLIB_LD = $SHLIB_LD
|
SHLIB_LD = $SHLIB_LD
|
||||||
|
SHLIB_SYSLIBS = $SHLIB_SYSLIBS
|
||||||
SHLIB_RPATH = $SHLIB_RPATH
|
SHLIB_RPATH = $SHLIB_RPATH
|
||||||
# Switch between dynamicmaps.cf plugins and hard-linked databases.
|
# Switch between dynamicmaps.cf plugins and hard-linked databases.
|
||||||
NON_PLUGIN_MAP_OBJ = $NON_PLUGIN_MAP_OBJ
|
NON_PLUGIN_MAP_OBJ = $NON_PLUGIN_MAP_OBJ
|
||||||
|
@ -33,7 +33,7 @@ root_tests:
|
|||||||
$(LIB): $(OBJS)
|
$(LIB): $(OBJS)
|
||||||
$(AR) $(ARFL) $(LIB) $?
|
$(AR) $(ARFL) $(LIB) $?
|
||||||
$(RANLIB) $(LIB)
|
$(RANLIB) $(LIB)
|
||||||
$(SHLIB_LD) -o $(LIB) $(OBJS)
|
$(SHLIB_LD) -o $(LIB) $(OBJS) $(SHLIB_SYSLIBS)
|
||||||
|
|
||||||
$(LIB_DIR)/$(LIB): $(LIB)
|
$(LIB_DIR)/$(LIB): $(LIB)
|
||||||
cp $(LIB) $(LIB_DIR)
|
cp $(LIB) $(LIB_DIR)
|
||||||
|
@ -138,7 +138,7 @@ test: $(TESTPROG)
|
|||||||
$(LIB): $(OBJS)
|
$(LIB): $(OBJS)
|
||||||
$(AR) $(ARFL) $(LIB) $?
|
$(AR) $(ARFL) $(LIB) $?
|
||||||
$(RANLIB) $(LIB)
|
$(RANLIB) $(LIB)
|
||||||
$(SHLIB_LD) -o $(LIB) $(OBJS)
|
$(SHLIB_LD) -o $(LIB) $(OBJS) $(SHLIB_SYSLIBS)
|
||||||
|
|
||||||
$(LIB_DIR)/$(LIB): $(LIB)
|
$(LIB_DIR)/$(LIB): $(LIB)
|
||||||
cp $(LIB) $(LIB_DIR)
|
cp $(LIB) $(LIB_DIR)
|
||||||
|
@ -24,10 +24,12 @@
|
|||||||
/* const char *dsn_envid;
|
/* const char *dsn_envid;
|
||||||
/* int dsn_ret;
|
/* int dsn_ret;
|
||||||
/*
|
/*
|
||||||
/* int defer_warn(flags, queue, id, sender, dsn_envid, dsn_ret)
|
/* int defer_warn(flags, queue, id, encoding, sender,
|
||||||
|
/* dsn_envid, dsn_ret)
|
||||||
/* int flags;
|
/* int flags;
|
||||||
/* const char *queue;
|
/* const char *queue;
|
||||||
/* const char *id;
|
/* const char *id;
|
||||||
|
/* const char *encoding;
|
||||||
/* const char *sender;
|
/* const char *sender;
|
||||||
/* const char *dsn_envid;
|
/* const char *dsn_envid;
|
||||||
/* int dsn_ret;
|
/* int dsn_ret;
|
||||||
@ -196,7 +198,7 @@ int defer_append(int flags, const char *id, MSG_STATS *stats,
|
|||||||
* DSN filter (Postfix 2.12).
|
* DSN filter (Postfix 2.12).
|
||||||
*/
|
*/
|
||||||
if (delivery_status_filter != 0
|
if (delivery_status_filter != 0
|
||||||
&& (dsn_res = dsn_filter_lookup(delivery_status_filter, &my_dsn)) != 0) {
|
&& (dsn_res = dsn_filter_lookup(delivery_status_filter, &my_dsn)) != 0) {
|
||||||
if (dsn_res->status[0] == '5')
|
if (dsn_res->status[0] == '5')
|
||||||
return (bounce_append_intern(flags, id, stats, rcpt, relay, dsn_res));
|
return (bounce_append_intern(flags, id, stats, rcpt, relay, dsn_res));
|
||||||
my_dsn = *dsn_res;
|
my_dsn = *dsn_res;
|
||||||
@ -312,13 +314,15 @@ int defer_flush(int flags, const char *queue, const char *id,
|
|||||||
* do not flush the log */
|
* do not flush the log */
|
||||||
|
|
||||||
int defer_warn(int flags, const char *queue, const char *id,
|
int defer_warn(int flags, const char *queue, const char *id,
|
||||||
const char *sender, const char *envid, int dsn_ret)
|
const char *encoding, const char *sender,
|
||||||
|
const char *envid, int dsn_ret)
|
||||||
{
|
{
|
||||||
if (mail_command_client(MAIL_CLASS_PRIVATE, var_defer_service,
|
if (mail_command_client(MAIL_CLASS_PRIVATE, var_defer_service,
|
||||||
ATTR_TYPE_INT, MAIL_ATTR_NREQ, BOUNCE_CMD_WARN,
|
ATTR_TYPE_INT, MAIL_ATTR_NREQ, BOUNCE_CMD_WARN,
|
||||||
ATTR_TYPE_INT, MAIL_ATTR_FLAGS, flags,
|
ATTR_TYPE_INT, MAIL_ATTR_FLAGS, flags,
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_QUEUE, queue,
|
ATTR_TYPE_STR, MAIL_ATTR_QUEUE, queue,
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_QUEUEID, id,
|
ATTR_TYPE_STR, MAIL_ATTR_QUEUEID, id,
|
||||||
|
ATTR_TYPE_STR, MAIL_ATTR_ENCODING, encoding,
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_SENDER, sender,
|
ATTR_TYPE_STR, MAIL_ATTR_SENDER, sender,
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_DSN_ENVID, envid,
|
ATTR_TYPE_STR, MAIL_ATTR_DSN_ENVID, envid,
|
||||||
ATTR_TYPE_INT, MAIL_ATTR_DSN_RET, dsn_ret,
|
ATTR_TYPE_INT, MAIL_ATTR_DSN_RET, dsn_ret,
|
||||||
@ -352,7 +356,7 @@ int defer_one(int flags, const char *queue, const char *id,
|
|||||||
* DSN filter (Postfix 2.12).
|
* DSN filter (Postfix 2.12).
|
||||||
*/
|
*/
|
||||||
if (delivery_status_filter != 0
|
if (delivery_status_filter != 0
|
||||||
&& (dsn_res = dsn_filter_lookup(delivery_status_filter, &my_dsn)) != 0) {
|
&& (dsn_res = dsn_filter_lookup(delivery_status_filter, &my_dsn)) != 0) {
|
||||||
if (dsn_res->status[0] == '5')
|
if (dsn_res->status[0] == '5')
|
||||||
return (bounce_one_intern(flags, queue, id, encoding, sender,
|
return (bounce_one_intern(flags, queue, id, encoding, sender,
|
||||||
dsn_envid, dsn_ret, stats, rcpt,
|
dsn_envid, dsn_ret, stats, rcpt,
|
||||||
|
@ -24,7 +24,7 @@ extern int defer_append(int, const char *, MSG_STATS *, RECIPIENT *,
|
|||||||
extern int defer_flush(int, const char *, const char *, const char *,
|
extern int defer_flush(int, const char *, const char *, const char *,
|
||||||
const char *, const char *, int);
|
const char *, const char *, int);
|
||||||
extern int defer_warn(int, const char *, const char *, const char *,
|
extern int defer_warn(int, const char *, const char *, const char *,
|
||||||
const char *, int);
|
const char *, const char *, int);
|
||||||
extern int defer_one(int, const char *, const char *, const char *,
|
extern int defer_one(int, const char *, const char *, const char *,
|
||||||
const char *, const char *,
|
const char *, const char *,
|
||||||
int, MSG_STATS *, RECIPIENT *,
|
int, MSG_STATS *, RECIPIENT *,
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20140703"
|
#define MAIL_RELEASE_DATE "20140709"
|
||||||
#define MAIL_VERSION_NUMBER "2.12"
|
#define MAIL_VERSION_NUMBER "2.12"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@ -44,7 +44,7 @@ root_tests:
|
|||||||
$(LIB): $(LIB_OBJ)
|
$(LIB): $(LIB_OBJ)
|
||||||
$(AR) $(ARFL) $(LIB) $?
|
$(AR) $(ARFL) $(LIB) $?
|
||||||
$(RANLIB) $(LIB)
|
$(RANLIB) $(LIB)
|
||||||
$(SHLIB_LD) -o $(LIB) $(LIB_OBJ)
|
$(SHLIB_LD) -o $(LIB) $(LIB_OBJ) $(SHLIB_SYSLIBS)
|
||||||
|
|
||||||
$(LIB_DIR)/$(LIB): $(LIB)
|
$(LIB_DIR)/$(LIB): $(LIB)
|
||||||
cp $(LIB) $(LIB_DIR)/$(LIB)
|
cp $(LIB) $(LIB_DIR)/$(LIB)
|
||||||
|
@ -3727,6 +3727,8 @@ static int check_policy_service(SMTPD_STATE *state, const char *server,
|
|||||||
"policy query", reply_name,
|
"policy query", reply_name,
|
||||||
reply_class, def_acl);
|
reply_class, def_acl);
|
||||||
nesting_level -= 1;
|
nesting_level -= 1;
|
||||||
|
memcpy(ADDROF(smtpd_check_buf), ADDROF(savebuf),
|
||||||
|
sizeof(smtpd_check_buf));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -143,7 +143,7 @@ test: $(TESTPROG)
|
|||||||
$(LIB): $(OBJS)
|
$(LIB): $(OBJS)
|
||||||
$(AR) $(ARFL) $(LIB) $?
|
$(AR) $(ARFL) $(LIB) $?
|
||||||
$(RANLIB) $(LIB)
|
$(RANLIB) $(LIB)
|
||||||
$(SHLIB_LD) -o $(LIB) $(OBJS)
|
$(SHLIB_LD) -o $(LIB) $(OBJS) $(SHLIB_SYSLIBS)
|
||||||
|
|
||||||
$(LIB_DIR)/$(LIB): $(LIB)
|
$(LIB_DIR)/$(LIB): $(LIB)
|
||||||
cp $(LIB) $(LIB_DIR)
|
cp $(LIB) $(LIB_DIR)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user