Prereq: "2.8.0" diff -cr --new-file /var/tmp/postfix-2.8.0/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.8.0/src/global/mail_version.h Thu Jan 20 20:10:41 2011 --- ./src/global/mail_version.h Mon Feb 7 14:07:02 2011 *************** *** 20,27 **** * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20110120" ! #define MAIL_VERSION_NUMBER "2.8.0" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE --- 20,27 ---- * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ ! #define MAIL_RELEASE_DATE "20110207" ! #define MAIL_VERSION_NUMBER "2.8.1-RC1" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr --new-file /var/tmp/postfix-2.8.0/HISTORY ./HISTORY *** /var/tmp/postfix-2.8.0/HISTORY Tue Jan 18 18:21:44 2011 --- ./HISTORY Mon Feb 7 13:38:36 2011 *************** *** 16514,16516 **** --- 16514,16521 ---- Bugfix: support for the "dunno" command somehow disappeared from the postscreen_access_list implementation. File: postscreen/postscreen_access.c. + + 20110207 + + Bugfix (introduced Postfix 2.8): segfault with smtpd_tls_loglevel + >= 3. Files: tls/tls_server.c, tls.h, smtpd.c, tlsproxy.c. diff -cr --new-file /var/tmp/postfix-2.8.0/README_FILES/POSTSCREEN_README ./README_FILES/POSTSCREEN_README *** /var/tmp/postfix-2.8.0/README_FILES/POSTSCREEN_README Tue Jan 18 09:16:19 2011 --- ./README_FILES/POSTSCREEN_README Sat Jan 22 08:51:57 2011 *************** *** 505,511 **** 3. Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries from the smtpd service that was ! commented out in step 1. /etc/postfix/master.cf: smtpd pass - - n - - smtpd --- 505,511 ---- 3. Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries from the smtpd service that was ! commented out in the previous step. /etc/postfix/master.cf: smtpd pass - - n - - smtpd diff -cr --new-file /var/tmp/postfix-2.8.0/html/POSTSCREEN_README.html ./html/POSTSCREEN_README.html *** /var/tmp/postfix-2.8.0/html/POSTSCREEN_README.html Tue Jan 18 09:16:19 2011 --- ./html/POSTSCREEN_README.html Sat Jan 22 08:51:56 2011 *************** *** 701,707 ****
Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries ! from the smtpd service that was commented out in step 1.
/etc/postfix/master.cf: --- 701,708 ----
Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries ! from the smtpd service that was commented out in the previous step. !
/etc/postfix/master.cf: diff -cr --new-file /var/tmp/postfix-2.8.0/html/postscreen.8.html ./html/postscreen.8.html *** /var/tmp/postfix-2.8.0/html/postscreen.8.html Mon Jan 17 19:40:55 2011 --- ./html/postscreen.8.html Fri Feb 4 13:29:09 2011 *************** *** 61,67 **** RFC 1985 (ETRN command) RFC 2034 (SMTP Enhanced Status Codes) RFC 2821 (SMTP protocol) ! RFC 2920 (SMTP Pipelining) RFC 3207 (STARTTLS command) RFC 3461 (SMTP DSN Extension) RFC 3463 (Enhanced Status Codes) --- 61,67 ---- RFC 1985 (ETRN command) RFC 2034 (SMTP Enhanced Status Codes) RFC 2821 (SMTP protocol) ! Not: RFC 2920 (SMTP Pipelining) RFC 3207 (STARTTLS command) RFC 3461 (SMTP DSN Extension) RFC 3463 (Enhanced Status Codes) diff -cr --new-file /var/tmp/postfix-2.8.0/man/man8/postscreen.8 ./man/man8/postscreen.8 *** /var/tmp/postfix-2.8.0/man/man8/postscreen.8 Mon Jan 17 19:40:54 2011 --- ./man/man8/postscreen.8 Fri Feb 4 13:29:09 2011 *************** *** 64,70 **** RFC 1985 (ETRN command) RFC 2034 (SMTP Enhanced Status Codes) RFC 2821 (SMTP protocol) ! RFC 2920 (SMTP Pipelining) RFC 3207 (STARTTLS command) RFC 3461 (SMTP DSN Extension) RFC 3463 (Enhanced Status Codes) --- 64,70 ---- RFC 1985 (ETRN command) RFC 2034 (SMTP Enhanced Status Codes) RFC 2821 (SMTP protocol) ! Not: RFC 2920 (SMTP Pipelining) RFC 3207 (STARTTLS command) RFC 3461 (SMTP DSN Extension) RFC 3463 (Enhanced Status Codes) diff -cr --new-file /var/tmp/postfix-2.8.0/proto/POSTSCREEN_README.html ./proto/POSTSCREEN_README.html *** /var/tmp/postfix-2.8.0/proto/POSTSCREEN_README.html Tue Jan 18 09:16:07 2011 --- ./proto/POSTSCREEN_README.html Sat Jan 22 08:51:55 2011 *************** *** 701,707 ****
Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries ! from the smtpd service that was commented out in step 1.
/etc/postfix/master.cf: --- 701,708 ----
Uncomment the new "smtpd pass ... smtpd" service in master.cf, and duplicate any "-o parameter=value" entries ! from the smtpd service that was commented out in the previous step. !
/etc/postfix/master.cf: diff -cr --new-file /var/tmp/postfix-2.8.0/src/postscreen/postscreen.c ./src/postscreen/postscreen.c *** /var/tmp/postfix-2.8.0/src/postscreen/postscreen.c Thu Jan 20 13:54:49 2011 --- ./src/postscreen/postscreen.c Fri Feb 4 13:28:57 2011 *************** *** 54,60 **** /* RFC 1985 (ETRN command) /* RFC 2034 (SMTP Enhanced Status Codes) /* RFC 2821 (SMTP protocol) ! /* RFC 2920 (SMTP Pipelining) /* RFC 3207 (STARTTLS command) /* RFC 3461 (SMTP DSN Extension) /* RFC 3463 (Enhanced Status Codes) --- 54,60 ---- /* RFC 1985 (ETRN command) /* RFC 2034 (SMTP Enhanced Status Codes) /* RFC 2821 (SMTP protocol) ! /* Not: RFC 2920 (SMTP Pipelining) /* RFC 3207 (STARTTLS command) /* RFC 3461 (SMTP DSN Extension) /* RFC 3463 (Enhanced Status Codes) diff -cr --new-file /var/tmp/postfix-2.8.0/src/smtpd/smtpd.c ./src/smtpd/smtpd.c *** /var/tmp/postfix-2.8.0/src/smtpd/smtpd.c Sat Jan 15 18:18:14 2011 --- ./src/smtpd/smtpd.c Mon Feb 7 13:34:41 2011 *************** *** 4028,4033 **** --- 4028,4034 ---- TLS_SERVER_START(&props, ctx = smtpd_tls_ctx, stream = state->client, + fd = -1, log_level = var_smtpd_tls_loglevel, timeout = var_smtpd_starttls_tmout, requirecert = requirecert, diff -cr --new-file /var/tmp/postfix-2.8.0/src/tls/tls.h ./src/tls/tls.h *** /var/tmp/postfix-2.8.0/src/tls/tls.h Tue Dec 28 19:24:31 2010 --- ./src/tls/tls.h Mon Feb 7 10:25:04 2011 *************** *** 268,273 **** --- 268,274 ---- typedef struct { TLS_APPL_STATE *ctx; /* TLS application context */ VSTREAM *stream; /* Client stream */ + int fd; /* Event-driven file descriptor */ int log_level; /* TLS log level */ int timeout; /* TLS handshake timeout */ int requirecert; /* Insist on client cert? */ *************** *** 293,302 **** ((props)->a12), ((props)->a13), ((props)->a14), ((props)->a15), \ ((props)->a16), ((props)->a17), ((props)->a18), ((props)->a19), (props))) ! #define TLS_SERVER_START(props, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) \ tls_server_start((((props)->a1), ((props)->a2), ((props)->a3), \ ((props)->a4), ((props)->a5), ((props)->a6), ((props)->a7), \ ! ((props)->a8), ((props)->a9), ((props)->a10), (props))) /* * tls_session.c --- 294,303 ---- ((props)->a12), ((props)->a13), ((props)->a14), ((props)->a15), \ ((props)->a16), ((props)->a17), ((props)->a18), ((props)->a19), (props))) ! #define TLS_SERVER_START(props, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \ tls_server_start((((props)->a1), ((props)->a2), ((props)->a3), \ ((props)->a4), ((props)->a5), ((props)->a6), ((props)->a7), \ ! ((props)->a8), ((props)->a9), ((props)->a10), ((props)->a11), (props))) /* * tls_session.c diff -cr --new-file /var/tmp/postfix-2.8.0/src/tls/tls_server.c ./src/tls/tls_server.c *** /var/tmp/postfix-2.8.0/src/tls/tls_server.c Fri Dec 31 19:01:44 2010 --- ./src/tls/tls_server.c Mon Feb 7 10:38:33 2011 *************** *** 89,95 **** /* SSL_accept(), SSL_read(), SSL_write() and SSL_shutdown(). /* /* To maintain control over TLS I/O, an event-driven server ! /* invokes tls_server_start() with a null VSTREAM argument. /* Then, tls_server_start() performs all the necessary /* preparations before the TLS handshake and returns a partially /* populated TLS context. The event-driven application is then --- 89,96 ---- /* SSL_accept(), SSL_read(), SSL_write() and SSL_shutdown(). /* /* To maintain control over TLS I/O, an event-driven server ! /* invokes tls_server_start() with a null VSTREAM argument and ! /* with an fd argument that specifies the I/O file descriptor. /* Then, tls_server_start() performs all the necessary /* preparations before the TLS handshake and returns a partially /* populated TLS context. The event-driven application is then *************** *** 658,663 **** --- 659,676 ---- SSL_set_accept_state(TLScontext->con); /* + * Connect the SSL connection with the network socket. + */ + if (SSL_set_fd(TLScontext->con, props->stream == 0 ? props->fd : + vstream_fileno(props->stream)) != 1) { + msg_info("SSL_set_fd error to %s", props->namaddr); + tls_print_errors(); + uncache_session(app_ctx->ssl_ctx, TLScontext); + tls_free_context(TLScontext); + return (0); + } + + /* * If the debug level selected is high enough, all of the data is dumped: * 3 will dump the SSL negotiation, 4 will dump everything. * *************** *** 676,692 **** return (TLScontext); /* - * Connect the SSL connection with the network socket. - */ - if (SSL_set_fd(TLScontext->con, vstream_fileno(props->stream)) != 1) { - msg_info("SSL_set_fd error to %s", props->namaddr); - tls_print_errors(); - uncache_session(app_ctx->ssl_ctx, TLScontext); - tls_free_context(TLScontext); - return (0); - } - - /* * Turn on non-blocking I/O so that we can enforce timeouts on network * I/O. */ --- 689,694 ---- diff -cr --new-file /var/tmp/postfix-2.8.0/src/tlsproxy/tlsproxy.c ./src/tlsproxy/tlsproxy.c *** /var/tmp/postfix-2.8.0/src/tlsproxy/tlsproxy.c Mon Jan 17 10:43:31 2011 --- ./src/tlsproxy/tlsproxy.c Mon Feb 7 10:32:28 2011 *************** *** 687,692 **** --- 687,693 ---- TLS_SERVER_START(&props, ctx = tlsp_server_ctx, stream = (VSTREAM *) 0,/* unused */ + fd = state->ciphertext_fd, log_level = var_tlsp_tls_loglevel, timeout = 0, /* unused */ requirecert = (var_tlsp_tls_req_ccert *************** *** 703,720 **** } /* - * This program will do the ciphertext I/O, not libtls. In the future, - * the above event-driven engine may be factored out as a libtls library - * module. - */ - if (SSL_set_fd(state->tls_context->con, state->ciphertext_fd) != 1) { - msg_info("SSL_set_fd error to %s", state->remote_endpt); - tls_print_errors(); - tlsp_state_free(state); - return; - } - - /* * XXX Do we care about TLS session rate limits? Good postscreen(8) * clients will occasionally require the tlsproxy to renew their * whitelist status, but bad clients hammering the server can suck up --- 704,709 ----