Prereq: "2.5.15" diff -cr --new-file /var/tmp/postfix-2.5.15/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.5.15/src/global/mail_version.h Fri Sep 2 17:44:42 2011 --- ./src/global/mail_version.h Sun Oct 23 19:55:14 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 "20110902" ! #define MAIL_VERSION_NUMBER "2.5.15" #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 "20111024" ! #define MAIL_VERSION_NUMBER "2.5.16" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr --new-file /var/tmp/postfix-2.5.15/HISTORY ./HISTORY *** /var/tmp/postfix-2.5.15/HISTORY Fri Sep 2 17:44:07 2011 --- ./HISTORY Thu Oct 20 17:40:57 2011 *************** *** 14740,14742 **** --- 14740,14775 ---- Bitrot: OpenSSL const-ified some function result value. Files: tls/tls_client.c, tls/tls_server.c. + + 20110903 + + Bugfix: master daemon panic with "master_spawn: at process + limit" error, when "postfix reload" reduced the process + limit from (a value larger than the current process count + for some service) to (a value <= the current process count), + and then a new connection was made to that service. This + is the smallest change that eliminates the problem. The + final solution involves structural change, and goes into + the development release. File: master/master_avail.c. + + 20110921 + + Bugfix (introduced: Postfix 1.1): smtpd(8) did not sanitize + newline characters in cleanup(8) REJECT messages, causing + them to be sent out via SMTP as bare newline characters. + This happened when a REJECT pattern matched multi-line + header text. Discovered by Kevin Locke. File: smtpd/smtpd.c. + + 20110922 + + Bugfix (introduced: Postfix 2.1): smtpd(8) sent multi-line + responses from a before-queue content filter as text with + bare instead of . Found during code maintenance. + File: smtpd/smtpd_proxy.c. + + 20111020 + + EAI Future-proofing: don't apply strict_mime_encoding_domain + checks to unknown message subtypes such as message/global*. + File: global/mime_state.c. + diff -cr --new-file /var/tmp/postfix-2.5.15/src/global/mime_state.c ./src/global/mime_state.c *** /var/tmp/postfix-2.5.15/src/global/mime_state.c Wed Jan 9 08:59:40 2008 --- ./src/global/mime_state.c Thu Oct 20 17:34:25 2011 *************** *** 925,931 **** if (state->curr_domain != MIME_ENC_7BIT) REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN, mime_state_enc_name(state->curr_encoding)); ! } else { if (state->curr_encoding != state->curr_domain) REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN, mime_state_enc_name(state->curr_encoding)); --- 925,933 ---- if (state->curr_domain != MIME_ENC_7BIT) REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN, mime_state_enc_name(state->curr_encoding)); ! } ! /* EAI: message/global allows non-identity encoding. */ ! else if (state->curr_stype == MIME_STYPE_RFC822) { if (state->curr_encoding != state->curr_domain) REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN, mime_state_enc_name(state->curr_encoding)); diff -cr --new-file /var/tmp/postfix-2.5.15/src/master/master_avail.c ./src/master/master_avail.c *** /var/tmp/postfix-2.5.15/src/master/master_avail.c Thu Sep 6 14:40:38 2007 --- ./src/master/master_avail.c Thu Oct 20 17:34:25 2011 *************** *** 85,91 **** if (event == 0) /* XXX Can this happen? */ return; ! if (MASTER_THROTTLED(serv)) { /* XXX interface botch */ for (n = 0; n < serv->listen_fd_count; n++) event_disable_readwrite(serv->listen_fd[n]); } else { --- 85,93 ---- if (event == 0) /* XXX Can this happen? */ return; ! /* XXX Should check these when the process or service status is changed. */ ! if (!MASTER_LIMIT_OK(serv->max_proc, serv->total_proc) ! || MASTER_THROTTLED(serv)) { /* XXX interface botch */ for (n = 0; n < serv->listen_fd_count; n++) event_disable_readwrite(serv->listen_fd[n]); } else { diff -cr --new-file /var/tmp/postfix-2.5.15/src/smtpd/smtpd.c ./src/smtpd/smtpd.c *** /var/tmp/postfix-2.5.15/src/smtpd/smtpd.c Sat Jan 8 19:23:53 2011 --- ./src/smtpd/smtpd.c Thu Oct 20 17:34:25 2011 *************** *** 2835,2840 **** --- 2835,2841 ---- if (state->err == 0) { why = vstring_alloc(10); state->err = mail_stream_finish(state->dest, why); + printable(STR(why), ' '); } else mail_stream_cleanup(state->dest); state->dest = 0; diff -cr --new-file /var/tmp/postfix-2.5.15/src/smtpd/smtpd_proxy.c ./src/smtpd/smtpd_proxy.c *** /var/tmp/postfix-2.5.15/src/smtpd/smtpd_proxy.c Fri Aug 27 19:48:29 2010 --- ./src/smtpd/smtpd_proxy.c Thu Oct 20 17:35:49 2011 *************** *** 542,548 **** */ if (LEN(state->proxy_buffer) < var_line_limit) { if (VSTRING_LEN(state->proxy_buffer)) ! VSTRING_ADDCH(state->proxy_buffer, '\n'); vstring_strcat(state->proxy_buffer, STR(buffer)); } --- 542,548 ---- */ if (LEN(state->proxy_buffer) < var_line_limit) { if (VSTRING_LEN(state->proxy_buffer)) ! vstring_strcat(state->proxy_buffer, "\r\n"); vstring_strcat(state->proxy_buffer, STR(buffer)); }