is subject to address rewriting and other processing where
applicable. File: cleanup/cleanup_message.c.
+20050402
+
+ Cleanup: updated error messages about MIME processing errors
+ in the SMTP client. These errors are no longer specific to
+ 8bit->7bit conversion; they can also happen with generic
+ address mapping. File: smtp/smtp_proto.c.
+
20050407
@%^!#& Thanks to inadequate SASL documentation the client
SASL support was implemented, and now Postfix needs to be
fixed. Files: */*_sasl_glue.c.
-20050402
-
- Cleanup: updated error messages about MIME processing errors
- in the SMTP client. These errors are no longer specific to
- 8bit->7bit conversion; they can also happen with generic
- address mapping. File: smtp/smtp_proto.c.
-
20050409
Safety: the CDB map now logs a warning when the source file
the fall-back relay can't be used because it was already
tried via a cached session. Files: util/argv.c,
smtp/smtp_connect.c.
+
+20050517
+
+ Bugfix: in a DSN report, the original recipient should not
+ be xtext encoded. File: bounce/bounce_notify_util.c.
+
+20050523
+
+ Bugfix: mymalloc() panic with mistyped server host list.
+ File: global/dict_pgsql.c.
+
+20040530
+
+ Bugfix: TLS MUST_NOPEERMATCH didn't work (inherited from
+ TLS patch), and a dangling pointer in the corresponding
+ error handling. File: smtp/smtp_proto.c.
+
+20050615
+
+ Cleanup: the SMTP client now sends QUIT when the initial
+ HELO handshake fails. it still doesn't send QUIT when the
+ server greets with a [45]XX code, as that is handled in the
+ connection management code before a session context exists.
+ File: smtp/smtp_connect.c.
+
+20050616
+
+ Bugfix: missing or mis-placed va_end() macros, found in
+ Postfix 2.3 code review. Files: util/netstring.c,
+ util/myaddrinfo.c, util/attr_clnt.c, util/vstream.c.
+
+20050621
+
+ Portability: file descriptor passing is available for Tru64
+ UNIX, but AIX4 and IRIX6 will have to do without. This means
+ no SMTP connection caching for those platforms. Albert
+ Chin. File: util/sys_defs.h.
+
wherever you can use read-only "hash", "btree" or "dbm" tables. However, the
"p\bpo\bos\bst\btm\bma\bap\bp -\b-i\bi" (incremental record insertion) and "p\bpo\bos\bst\btm\bma\bap\bp -\b-d\bd" (incremental
record deletion) command-line options are not available. For the same reason
-the "cdb" map type cannot be used to store the volatile address verification
+the "cdb" map type cannot be used to store the persistent address verification
cache for the verify(8) service.
/etc/netconfig
/etc/default/init
/etc/inet/services
+/etc/resolv.conf
/etc/services
/usr/lib/ld.so
/usr/lib/ld.so.1
"dbm" tables. However, the "<b>postmap -i</b>" (incremental record
insertion) and "<b>postmap -d</b>" (incremental record deletion)
command-line options are not available. For the same reason the
-"cdb" map type cannot be used to store the volatile address
+"cdb" map type cannot be used to store the persistent address
verification cache for the <a href="verify.8.html">verify(8)</a> service. </p>
version.
Postfix 2.2 has enhanced query interfaces for MySQL and
- PostreSQL, these include features previously available
+ PostgreSQL, these include features previously available
only in the Postfix LDAP client. In the new interface the
SQL query is specified via a single <b>query</b> parameter
(described in more detail below). When the new <b>query</b>
written in main.cf, which is normally world-readable. Support
for this form will be removed in a future Postfix version.
-Postfix 2.2 has enhanced query interfaces for MySQL and PostreSQL,
+Postfix 2.2 has enhanced query interfaces for MySQL and PostgreSQL,
these include features previously available only in the Postfix
LDAP client. In the new interface the SQL query is specified via
a single \fBquery\fR parameter (described in more detail below).
"dbm" tables. However, the "<b>postmap -i</b>" (incremental record
insertion) and "<b>postmap -d</b>" (incremental record deletion)
command-line options are not available. For the same reason the
-"cdb" map type cannot be used to store the volatile address
+"cdb" map type cannot be used to store the persistent address
verification cache for the verify(8) service. </p>
# written in main.cf, which is normally world-readable. Support
# for this form will be removed in a future Postfix version.
#
-# Postfix 2.2 has enhanced query interfaces for MySQL and PostreSQL,
+# Postfix 2.2 has enhanced query interfaces for MySQL and PostgreSQL,
# these include features previously available only in the Postfix
# LDAP client. In the new interface the SQL query is specified via
# a single \fBquery\fR parameter (described in more detail below).
post_mail_fprintf(bounce, "Final-Recipient: rfc822; %s",
bounce_info->log_handle->recipient);
if (bounce_info->log_handle->orig_rcpt) {
- xtext_quote(bounce_info->buf, bounce_info->log_handle->orig_rcpt, "+=");
post_mail_fprintf(bounce, "Original-Recipient: rfc822; %s",
- STR(bounce_info->buf));
+ bounce_info->log_handle->orig_rcpt);
}
post_mail_fprintf(bounce, "Action: %s",
bounce_info->flush == BOUNCE_MSG_FAIL ?
hosts = cfg_get_str(p, "hosts", "", 0, 0);
dict_pgsql->hosts = argv_split(hosts, " ,\t\r\n");
- if (dict_pgsql->hosts == 0) {
+ if (dict_pgsql->hosts->argc == 0) {
argv_add(dict_pgsql->hosts, "localhost", ARGV_END);
argv_terminate(dict_pgsql->hosts);
if (msg_verbose)
* Patches change the patchlevel and the release date. Snapshots change the
* release date only.
*/
-#define MAIL_RELEASE_DATE "20050428"
-#define MAIL_VERSION_NUMBER "2.2.3"
+#define MAIL_RELEASE_DATE "20050621"
+#define MAIL_VERSION_NUMBER "2.2.4"
#define VAR_MAIL_VERSION "mail_version"
#ifdef SNAPSHOT
state->final_server = (cpp[1] == 0 && next == 0);
if (addr->pref == domain_best_pref)
session->features |= SMTP_FEATURE_BEST_MX;
- if ((session->features & SMTP_FEATURE_FROM_CACHE) != 0
- || smtp_helo(state, misc_flags) == 0)
+ if ((session->features & SMTP_FEATURE_FROM_CACHE) == 0
+ && smtp_helo(state, misc_flags) != 0) {
+ if (vstream_ferror(session->stream) == 0
+ && vstream_feof(session->stream) == 0)
+ smtp_quit(state);
+ } else
smtp_xfer(state);
smtp_cleanup_session(state);
} else {
if (session->tls_info.peer_CN != NULL) {
if (!session->tls_info.peer_verified) {
msg_info("Server certificate could not be verified");
- if (session->tls_enforce_tls) {
+ if (session->tls_enforce_peername) {
tls_client_stop(smtp_tls_ctx, session->stream,
var_smtp_starttls_tmout, 1,
&(session->tls_info));
+ session->tls_context = 0;
return (smtp_site_fail(state, 450,
"TLS failure: Cannot verify server certificate"));
}
* testing if a certificate is available.
*/
else {
- if (session->tls_enforce_tls) {
+ if (session->tls_enforce_peername) {
tls_client_stop(smtp_tls_ctx, session->stream,
var_smtp_starttls_tmout, 1,
&(session->tls_info));
+ session->tls_context = 0;
return (smtp_site_fail(state, 450,
"TLS failure: Cannot verify server hostname"));
}
vstream_fclose(state->stream);
vstring_free(state->buffer);
myfree((char *) state);
- if (max_count > 0 && ++counter >= max_count)
+ if (max_count > 0 && counter >= max_count)
exit(0);
}
msg_panic("%s: bad name %d", myname, name);
}
}
+ va_end(ap);
}
msg_panic("%s: bad name %d", myname, name);
}
}
+ va_end(ap);
}
#ifdef EMULATE_IPV4_ADDRINFO
if (vstream_fwrite(stream, data, data_len) != data_len)
netstring_except(stream, vstream_ftimeout(stream) ?
NETSTRING_ERR_TIME : NETSTRING_ERR_EOF);
- va_end(ap);
}
+ va_end(ap);
vstream_fwrite(stream, ",", 1);
}
#define STATFS_IN_SYS_MOUNT_H
#define HAS_POSIX_REGEXP
#define BROKEN_WRITE_SELECT_ON_NON_BLOCKING_PIPE
+#define NO_MSGHDR_MSG_CONTROL
#ifndef NO_IPV6
# define HAS_IPV6
#endif
#define NATIVE_COMMAND_DIR "/usr/sbin"
#define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
+#define CANT_USE_SEND_RECV_MSG
#endif
#ifdef AIX3
extern int initgroups(const char *, int);
#define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
+#define CANT_USE_SEND_RECV_MSG
#endif
/*
#define USE_STATVFS
#define STATVFS_IN_SYS_STATVFS_H
#define BROKEN_WRITE_SELECT_ON_NON_BLOCKING_PIPE
+#define CANT_USE_SEND_RECV_MSG
#endif
#if defined(IRIX5)
#endif
#if defined(IRIX6)
+#ifndef NO_IPV6
+# define HAS_IPV6
+#endif
#define HAS_POSIX_REGEXP
#define PIPES_CANT_FIONREAD
#endif
msg_panic("%s: bad name %d", myname, name);
}
}
+ va_end(ap);
}
/* vstream_vfprintf - formatted print engine */