Feature: SMTPD policy service "policy_context" attribute
and smtpd_policy_service_policy_context main.cf parameter.
- Originally, to share the same SMTPD service endpoint among
- multiple check_policy_service clients. Markus Benning.
+ Originally, to share the same SMTPD policy service endpoint
+ among multiple check_policy_service clients. Markus Benning.
Files: mantools/postlink, proto/SMTPD_POLICY_README.html,
proto/postconf.proto, global/mail_params.h, global/mail_proto.h,
smtpd/smtpd.c, smtpd/smtpd_check.c.
+
+20150923
+
+ Bugfix: the Postfix SMTP server used a larger-than-1 buffer
+ to read the HaProxy connection hand-off information. This
+ broke TLS wrappermode, as the TLS helo packet would end up
+ in the plaintext VSTREAM buffer. Reported by Lukas Erlacher.
+ File: smtpd/smtpd_haproxy.c.
+
+20150924
+
+ Cleanup: eliminated a harmless warning message "seek error
+ after reading END record: Illegal seek" from the cleanup
+ server after a check_sender_access DISCARD action. File:
+ cleanup/cleanup.c.
+
+ Bugfix: incorrect postmulti error message. Reported by
+ Patrik Koetter. Fix by Viktor Dukhovni. File:
+ postmulti/postmulti.c.
+
+ Workaround: don't create a new instance when the template
+ main.cf and master.cf files are missing, as happens on
+ Debian-like systems. Viktor Dukhovni. File: conf/postmulti-script.
fatal "'$config_directory' lacks a master.cf file"
}
+ test -f $meta_directory/main.cf.proto ||
+ fatal "Missing main.cf prototype: $meta_directory/main.cf.proto"
+ test -f $meta_directory/master.cf.proto ||
+ fatal "Missing master.cf prototype: $meta_directory/master.cf.proto"
+
# Create instance-specific directories
#
test -d $config_directory ||
*/
if (CLEANUP_OUT_OK(state) == 0 && type > 0) {
while (type != REC_TYPE_END
- && (type = rec_get(src, buf, 0)) > 0) {
+ && (type = rec_get_raw(src, buf, 0, REC_FLAG_NONE)) > 0) {
if (type == REC_TYPE_MILT_COUNT) {
int milter_count = atoi(vstring_str(buf));
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20150913"
+#define MAIL_RELEASE_DATE "20150924"
#define MAIL_VERSION_NUMBER "3.1"
#ifdef SNAPSHOT
case 'e':
if ((code = EDIT_CMD_CODE(optarg)) < 0)
msg_fatal("Invalid '-e' edit action '%s'. Specify '%s', "
- "'%s', '%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
+ "'%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
optarg,
EDIT_CMD_STR(EDIT_CMD_CREATE),
EDIT_CMD_STR(EDIT_CMD_DESTROY),
EDIT_CMD_STR(EDIT_CMD_ENABLE),
EDIT_CMD_STR(EDIT_CMD_DISABLE),
EDIT_CMD_STR(EDIT_CMD_ASSIGN),
- EDIT_CMD_STR(EDIT_CMD_INIT),
- optarg);
+ EDIT_CMD_STR(EDIT_CMD_INIT));
if (cmd_mode != code)
command_mode_count++;
cmd_mode = code;
int io_err;
VSTRING *escape_buf;
+ /*
+ * While reading HaProxy handshake information, don't buffer input beyond
+ * the end-of-line. That would break the TLS wrappermode handshake.
+ */
+ vstream_control(state->client,
+ VSTREAM_CTL_BUFSIZE, 1,
+ VSTREAM_CTL_END);
+
/*
* Note: the haproxy_srvr_parse() routine performs address protocol
* checks, address and port syntax checks, and converts IPv4-in-IPv6
* Avoid surprises in the Dovecot authentication server.
*/
state->dest_addr = mystrdup(smtp_server_addr.buf);
+
+ /*
+ * Enable normal buffering.
+ */
+ vstream_control(state->client,
+ VSTREAM_CTL_BUFSIZE, VSTREAM_BUFSIZE,
+ VSTREAM_CTL_END);
return (0);
}
}