Prereq: "2.7.5" diff -cr --new-file /var/tmp/postfix-2.7.5/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.7.5/src/global/mail_version.h Thu Jul 7 17:21:24 2011 --- ./src/global/mail_version.h Fri Sep 2 17:53:42 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 "20110707" ! #define MAIL_VERSION_NUMBER "2.7.5" #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 "20110902" ! #define MAIL_VERSION_NUMBER "2.7.6" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr --new-file /var/tmp/postfix-2.7.5/HISTORY ./HISTORY *** /var/tmp/postfix-2.7.5/HISTORY Wed Jun 15 18:36:30 2011 --- ./HISTORY Wed Aug 31 16:01:52 2011 *************** *** 15942,15944 **** --- 15942,15958 ---- IP queries" even if the name has an alphanumerical prefix. We play safe, and skip RHSBL queries for names ending in a numerical suffix. File: smtpd/smtpd_check.c. + + 20110811 + + Workaround: report a {client_connections} Milter macro value + of zero instead of garbage, when the remote SMTP client is + not subject to any smtpd_client_* limits. Problem reported + by Christian Roessner. File: smtpd/smtpd_state.c, + proto/MILTER_README.html. + + 20110831 + + Bugfix: allow for Milters that send an SMTP server reply + without RFC 3463 enhanced status code. Reported by Vladimir + Vassiliev. File: milter/milter8.c. diff -cr --new-file /var/tmp/postfix-2.7.5/README_FILES/MILTER_README ./README_FILES/MILTER_README *** /var/tmp/postfix-2.7.5/README_FILES/MILTER_README Mon May 18 10:49:22 2009 --- ./README_FILES/MILTER_README Wed Aug 31 15:53:16 2011 *************** *** 337,344 **** |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |{client_addr} |Always |Client IP address | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | ! |{client_connections}|CONNECT |Connection concurrency for| ! | | |this client | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | | | |Client hostname | | | |When address -> name | --- 337,347 ---- |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | |{client_addr} |Always |Client IP address | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | ! | | |Connection concurrency for| ! | | |this client (zero if the | ! |{client_connections}|CONNECT |client is excluded from | ! | | |all smtpd_client_* | ! | | |limits). | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | | | |Client hostname | | | |When address -> name | diff -cr --new-file /var/tmp/postfix-2.7.5/html/MILTER_README.html ./html/MILTER_README.html *** /var/tmp/postfix-2.7.5/html/MILTER_README.html Mon May 18 10:49:22 2009 --- ./html/MILTER_README.html Wed Aug 31 15:53:16 2011 *************** *** 556,562 **** address {client_connections} CONNECT ! Connection concurrency for this client {client_name} Always Client hostname
When address → name lookup or name → address --- 556,563 ---- address {client_connections} CONNECT ! Connection concurrency for this client (zero if the client is ! excluded from all smtpd_client_* limits). {client_name} Always Client hostname
When address → name lookup or name → address diff -cr --new-file /var/tmp/postfix-2.7.5/proto/MILTER_README.html ./proto/MILTER_README.html *** /var/tmp/postfix-2.7.5/proto/MILTER_README.html Mon May 18 10:46:56 2009 --- ./proto/MILTER_README.html Wed Aug 31 15:50:00 2011 *************** *** 556,562 **** address {client_connections} CONNECT ! Connection concurrency for this client {client_name} Always Client hostname
When address → name lookup or name → address --- 556,563 ---- address {client_connections} CONNECT ! Connection concurrency for this client (zero if the client is ! excluded from all smtpd_client_* limits). {client_name} Always Client hostname
When address → name lookup or name → address diff -cr --new-file /var/tmp/postfix-2.7.5/src/milter/milter8.c ./src/milter/milter8.c *** /var/tmp/postfix-2.7.5/src/milter/milter8.c Fri Jun 10 14:59:57 2011 --- ./src/milter/milter8.c Wed Aug 31 15:43:36 2011 *************** *** 1252,1262 **** MILTER8_DATA_BUFFER, milter->buf, MILTER8_DATA_END) != 0) MILTER8_EVENT_BREAK(milter->def_reply); if ((STR(milter->buf)[0] != '4' && STR(milter->buf)[0] != '5') || !ISDIGIT(STR(milter->buf)[1]) || !ISDIGIT(STR(milter->buf)[2]) || (STR(milter->buf)[3] != ' ' && STR(milter->buf)[3] != '-') ! || STR(milter->buf)[4] != STR(milter->buf)[0]) { msg_warn("milter %s: malformed reply: %s", milter->m.name, STR(milter->buf)); milter8_conf_error(milter); --- 1252,1264 ---- MILTER8_DATA_BUFFER, milter->buf, MILTER8_DATA_END) != 0) MILTER8_EVENT_BREAK(milter->def_reply); + /* XXX Enforce this for each line of a multi-line reply. */ if ((STR(milter->buf)[0] != '4' && STR(milter->buf)[0] != '5') || !ISDIGIT(STR(milter->buf)[1]) || !ISDIGIT(STR(milter->buf)[2]) || (STR(milter->buf)[3] != ' ' && STR(milter->buf)[3] != '-') ! || (ISDIGIT(STR(milter->buf)[4]) ! && (STR(milter->buf)[4] != STR(milter->buf)[0]))) { msg_warn("milter %s: malformed reply: %s", milter->m.name, STR(milter->buf)); milter8_conf_error(milter); diff -cr --new-file /var/tmp/postfix-2.7.5/src/smtpd/smtpd_state.c ./src/smtpd/smtpd_state.c *** /var/tmp/postfix-2.7.5/src/smtpd/smtpd_state.c Mon Nov 2 20:27:54 2009 --- ./src/smtpd/smtpd_state.c Wed Aug 31 15:50:00 2011 *************** *** 84,89 **** --- 84,90 ---- state->service = mystrdup(service); state->buffer = vstring_alloc(100); state->addr_buf = vstring_alloc(100); + state->conn_count = state->conn_rate = 0; state->error_count = 0; state->error_mask = 0; state->notify_mask = name_mask(VAR_NOTIFY_CLASSES, mail_error_masks,