Prereq: "2.7.8" diff -cr --new-file /var/tmp/postfix-2.7.8/src/global/mail_version.h ./src/global/mail_version.h *** /var/tmp/postfix-2.7.8/src/global/mail_version.h Sat Feb 4 20:35:33 2012 --- ./src/global/mail_version.h Tue Apr 24 13:48:17 2012 *************** *** 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 "20120204" ! #define MAIL_VERSION_NUMBER "2.7.8" #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 "20120424" ! #define MAIL_VERSION_NUMBER "2.7.9" #ifdef SNAPSHOT # define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -cr --new-file /var/tmp/postfix-2.7.8/HISTORY ./HISTORY *** /var/tmp/postfix-2.7.8/HISTORY Sat Feb 4 16:58:11 2012 --- ./HISTORY Tue Apr 24 13:56:45 2012 *************** *** 16020,16022 **** --- 16020,16043 ---- could match a shorter one, because a length check was done on the wrong string. Reported by Vladimir Vassiliev. File: cleanup/cleanup_milter.c. + + 20120214 + + Bugfix (introduced: Postfix 2.4): extraneous null assignment + caused core dump when postlog emitted the "usage" message. + Reported by Kant (fnord.hammer). File: postlog/postlog.c. + + 20120401 + + Bitrot: shut up useless warnings about Cyrus SASL call-back + function pointer type mis-matches. Files: xsasl/xsasl_cyrus.h, + xsasl/xsasl_cyrus_server.c, xsasl/xsasl_client.c. + + 20120422 + + Bit-rot: OpenSSL 1.0.1 introduces new protocols. Update the + known TLS protocol list so that protocols can be turned off + selectively to work around implementation bugs. Based on + a patch by Victor Duchovni. Files: proto/TLS_README.html, + proto/postconf.proto, tls/tls.h, tls/tls_misc.c, tls/tls_client.c, + tls/tls_server.c. diff -cr --new-file /var/tmp/postfix-2.7.8/README_FILES/TLS_README ./README_FILES/TLS_README *** /var/tmp/postfix-2.7.8/README_FILES/TLS_README Thu Jan 28 19:50:29 2010 --- ./README_FILES/TLS_README Tue Apr 24 15:20:38 2012 *************** *** 537,547 **** control over the minimum cipher grade for opportunistic TLS. With Postfix < 2.6, the minimum opportunistic TLS cipher grade is always "export". ! With mandatory TLS encryption, the Postfix SMTP server will by default only use ! SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The ! mandatory TLS protocol list is specified via the smtpd_tls_mandatory_protocols ! configuration parameter. The corresponding smtpd_tls_protocols parameter ! (Postfix >= 2.6) controls the SSL/TLS protocols used with opportunistic TLS. For a server that is not a public Internet MX host, Postfix (>= 2.3) supports configurations with no server certificates that use oonnllyy the anonymous ciphers. --- 537,553 ---- control over the minimum cipher grade for opportunistic TLS. With Postfix < 2.6, the minimum opportunistic TLS cipher grade is always "export". ! With mandatory TLS encryption, the Postfix SMTP server will by default disable ! SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS ! protocol list is specified via the smtpd_tls_mandatory_protocols configuration ! parameter. The corresponding smtpd_tls_protocols parameter (Postfix >= 2.6) ! controls the SSL/TLS protocols used with opportunistic TLS. ! ! Note that the OpenSSL library only supports protocol exclusion (not inclusion). ! For this reason, Postfix can exclude only protocols that are known at the time ! the Postfix software is written. If new protocols are added to the OpenSSL ! library, they cannot be excluded without corresponding changes to the Postfix ! source code. For a server that is not a public Internet MX host, Postfix (>= 2.3) supports configurations with no server certificates that use oonnllyy the anonymous ciphers. *************** *** 556,564 **** smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! smtpd_tls_mandatory_protocols = TLSv1 ! # Also available with Postfix >= 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 If you want to take advantage of ciphers with ephemeral Diffie-Hellman (EDH) key exchange (this offers "forward-secrecy"), DH parameters are needed. Instead --- 562,571 ---- smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! # Preferred form with Postfix >= 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtpd_tls_mandatory_protocols = TLSv1 If you want to take advantage of ciphers with ephemeral Diffie-Hellman (EDH) key exchange (this offers "forward-secrecy"), DH parameters are needed. Instead *************** *** 1009,1017 **** Examples: In the example below, traffic to example.com and its sub-domains via the ! corresponding MX hosts always uses TLS. The protocol version will be "SSLv3" or ! "TLSv1" (the default setting of smtp_tls_mandatory_protocols excludes "SSLv2"). ! Only high or medium strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions. /etc/postfix/main.cf: --- 1016,1024 ---- Examples: In the example below, traffic to example.com and its sub-domains via the ! corresponding MX hosts always uses TLS. The SSLv2 protocol will be disabled ! (the default setting of smtp_tls_mandatory_protocols excludes "SSLv2"). Only ! high- or medium-strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions. /etc/postfix/main.cf: *************** *** 1675,1685 **** control over the minimum cipher grade for opportunistic TLS. With Postfix < 2.6, the minimum opportunistic TLS cipher grade is always "export". ! With mandatory TLS encryption, the Postfix SMTP client will by default only use ! SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The ! mandatory TLS protocol list is specified via the smtp_tls_mandatory_protocols ! configuration parameter. The corresponding smtp_tls_protocols parameter ! (Postfix >= 2.6) controls the SSL/TLS protocols used with opportunistic TLS. Example: --- 1682,1692 ---- control over the minimum cipher grade for opportunistic TLS. With Postfix < 2.6, the minimum opportunistic TLS cipher grade is always "export". ! With mandatory TLS encryption, the Postfix SMTP client will by default disable ! SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS ! protocol list is specified via the smtp_tls_mandatory_protocols configuration ! parameter. The corresponding smtp_tls_protocols parameter (Postfix >= 2.6) ! controls the SSL/TLS protocols used with opportunistic TLS. Example: *************** *** 1687,1695 **** smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! smtp_tls_mandatory_protocols = SSLv3, TLSv1 ! # Also available with Postfix >= 2.5: smtp_tls_mandatory_protocols = !SSLv2 # Also available with Postfix >= 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 --- 1694,1703 ---- smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! # Preferred form with Postfix >= 2.5: smtp_tls_mandatory_protocols = !SSLv2 + # Alternative form. + smtp_tls_mandatory_protocols = SSLv3, TLSv1 # Also available with Postfix >= 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 diff -cr --new-file /var/tmp/postfix-2.7.8/RELEASE_NOTES ./RELEASE_NOTES *** /var/tmp/postfix-2.7.8/RELEASE_NOTES Tue Nov 23 13:53:31 2010 --- ./RELEASE_NOTES Tue Apr 24 15:58:33 2012 *************** *** 14,19 **** --- 14,56 ---- If you upgrade from Postfix 2.5 or earlier, read RELEASE_NOTES-2.6 before proceeding. + Major changes with Postfix 2.7.9 + -------------------------------- + + This release adds support to turn off the TLSv1.1 and TLSv1.2 + protocols. Introduced with OpenSSL version 1.0.1, these are known + to cause inter-operability problems with for example hotmail. + + The radical workaround is to temporarily turn off problematic + protocols globally: + + /etc/postfix/main.cf: + smtp_tls_protocols = !SSLv2, !TLSv1.1, !TLSv1.2 + smtp_tls_mandatory_protocols = !SSLv2, !TLSv1.1, !TLSv1.2 + + smtpd_tls_protocols = !SSLv2, !TLSv1.1, !TLSv1.2 + smtpd_tls_mandatory_protocols = !SSLv2, !TLSv1.1, !TLSv1.2 + + However, it may be better to temporarily turn off problematic + protocols for broken sites only: + + /etc/postfix/main.cf: + smtp_tls_policy_maps = hash:/etc/postfix/tls_policy + + /etc/postfix/tls_policy: + example.com may protocols=!SSLv2:!TLSv1.1:!TLSv1.2 + + Important: + + - Note the use of ":" instead of comma or space. Also, note that + there is NO space around the "=" in "protocols=". + + - The smtp_tls_policy_maps lookup key must match the "next-hop" + destination that is given to the Postfix SMTP client. If you + override the next-hop destination with transport_maps, relayhost, + sender_dependent_relayhost_maps, or otherwise, you need to specify + the same destination for the smtp_tls_policy_maps lookup key. + Incompatibility with Postfix 2.7.2 ---------------------------------- diff -cr --new-file /var/tmp/postfix-2.7.8/html/TLS_README.html ./html/TLS_README.html *** /var/tmp/postfix-2.7.8/html/TLS_README.html Thu Jan 28 19:50:27 2010 --- ./html/TLS_README.html Tue Apr 24 15:20:36 2012 *************** *** 785,796 **** "export".
With mandatory TLS encryption, the Postfix SMTP server will by ! default only use SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtpd_tls_mandatory_protocols configuration parameter. The corresponding smtpd_tls_protocols parameter (Postfix ≥ 2.6) controls the SSL/TLS protocols used with opportunistic TLS.
For a server that is not a public Internet MX host, Postfix (≥ 2.3) supports configurations with no server certificates that use only the anonymous ciphers. This is --- 785,802 ---- "export".
With mandatory TLS encryption, the Postfix SMTP server will by ! default disable SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtpd_tls_mandatory_protocols configuration parameter. The corresponding smtpd_tls_protocols parameter (Postfix ≥ 2.6) controls the SSL/TLS protocols used with opportunistic TLS.
+Note that the OpenSSL library only supports protocol exclusion + (not inclusion). For this reason, Postfix can exclude only protocols + that are known at the time the Postfix software is written. If new + protocols are added to the OpenSSL library, they cannot be excluded + without corresponding changes to the Postfix source code.
+For a server that is not a public Internet MX host, Postfix (≥ 2.3) supports configurations with no server certificates that use only the anonymous ciphers. This is *************** *** 808,816 **** smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! smtpd_tls_mandatory_protocols = TLSv1 ! # Also available with Postfix ≥ 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 --- 814,823 ---- smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! # Preferred form with Postfix ≥ 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtpd_tls_mandatory_protocols = TLSv1 *************** *** 1407,1415 ****
Examples:
In the example below, traffic to example.com and its sub-domains ! via the corresponding MX hosts always uses TLS. The protocol version will be ! "SSLv3" or "TLSv1" (the default setting of smtp_tls_mandatory_protocols ! excludes "SSLv2"). Only high or medium strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions.
--- 1414,1422 ----Examples:
In the example below, traffic to example.com and its sub-domains ! via the corresponding MX hosts always uses TLS. The SSLv2 protocol ! will be disabled (the default setting of smtp_tls_mandatory_protocols ! excludes "SSLv2"). Only high- or medium-strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions.
*************** *** 2258,2264 **** "export".With mandatory TLS encryption, the Postfix SMTP client will by ! default only use SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtp_tls_mandatory_protocols configuration parameter. The corresponding smtp_tls_protocols parameter (Postfix ≥ 2.6) controls --- 2265,2271 ---- "export".
With mandatory TLS encryption, the Postfix SMTP client will by ! default disable SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtp_tls_mandatory_protocols configuration parameter. The corresponding smtp_tls_protocols parameter (Postfix ≥ 2.6) controls *************** *** 2272,2280 **** smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! smtp_tls_mandatory_protocols = SSLv3, TLSv1 ! # Also available with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2 # Also available with Postfix ≥ 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 --- 2279,2288 ---- smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! # Preferred form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2 + # Alternative form. + smtp_tls_mandatory_protocols = SSLv3, TLSv1 # Also available with Postfix ≥ 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 diff -cr --new-file /var/tmp/postfix-2.7.8/html/lmtp.8.html ./html/lmtp.8.html *** /var/tmp/postfix-2.7.8/html/lmtp.8.html Sun Nov 15 09:24:51 2009 --- ./html/lmtp.8.html Tue Apr 24 15:29:58 2012 *************** *** 450,456 **** non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! smtp_tls_mandatory_protocols (SSLv3, TLSv1) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. --- 450,456 ---- non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! smtp_tls_mandatory_protocols (!SSLv2) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. diff -cr --new-file /var/tmp/postfix-2.7.8/html/postconf.5.html ./html/postconf.5.html *** /var/tmp/postfix-2.7.8/html/postconf.5.html Tue Jun 15 18:19:06 2010 --- ./html/postconf.5.html Tue Apr 24 15:20:37 2012 *************** *** 4534,4540 ****
The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details.
--- 4534,4540 ----The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details.
*************** *** 9698,9704 ****List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by --- 9698,9704 ----
List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by *************** *** 9707,9718 **** empty value means allow all protocols. The valid protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported; use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by --- 9707,9725 ---- empty value means allow all protocols. The valid protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
+Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. !
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by *************** *** 9725,9733 ****
Example:
! smtp_tls_mandatory_protocols = TLSv1 ! # Alternative form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
This feature is available in Postfix 2.3 and later.
--- 9732,9741 ----Example:
! # Preferred form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtp_tls_mandatory_protocols = TLSv1
This feature is available in Postfix 2.3 and later.
*************** *** 9983,9996 **** protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax.
Example:
--- 9991,10008 ---- protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1". +Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix.
Example:
*************** *** 13244,13250 ****
The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all --- 13256,13262 ----
The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all *************** *** 13253,13264 **** names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive.
With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported, use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that --- 13265,13283 ---- names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive.
+Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. !
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that *************** *** 13292,13305 **** "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon.
To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax.
Example:
--- 13311,13328 ---- "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon. +*************** *** 1407,1415 ****Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix.
Example:
diff -cr --new-file /var/tmp/postfix-2.7.8/html/smtp.8.html ./html/smtp.8.html *** /var/tmp/postfix-2.7.8/html/smtp.8.html Sun Nov 15 09:24:51 2009 --- ./html/smtp.8.html Tue Apr 24 15:29:58 2012 *************** *** 450,456 **** non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! smtp_tls_mandatory_protocols (SSLv3, TLSv1) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. --- 450,456 ---- non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! smtp_tls_mandatory_protocols (!SSLv2) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. diff -cr --new-file /var/tmp/postfix-2.7.8/html/smtpd.8.html ./html/smtpd.8.html *** /var/tmp/postfix-2.7.8/html/smtpd.8.html Wed Jun 15 16:47:56 2011 --- ./html/smtpd.8.html Tue Apr 24 15:20:38 2012 *************** *** 462,468 **** exclude from the SMTP server cipher list at manda- tory TLS security levels. ! smtpd_tls_mandatory_protocols (SSLv3, TLSv1) The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. --- 462,468 ---- exclude from the SMTP server cipher list at manda- tory TLS security levels. ! smtpd_tls_mandatory_protocols (!SSLv2) The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. diff -cr --new-file /var/tmp/postfix-2.7.8/man/man5/postconf.5 ./man/man5/postconf.5 *** /var/tmp/postfix-2.7.8/man/man5/postconf.5 Tue Jun 15 18:19:06 2010 --- ./man/man5/postconf.5 Tue Apr 24 15:20:38 2012 *************** *** 2461,2467 **** configuration parameter. See there for details. .PP This feature is available in Postfix 2.3 and later. ! .SH lmtp_tls_mandatory_protocols (default: SSLv3, TLSv1) The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details. .PP --- 2461,2467 ---- configuration parameter. See there for details. .PP This feature is available in Postfix 2.3 and later. ! .SH lmtp_tls_mandatory_protocols (default: !SSLv2) The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details. .PP *************** *** 5718,5724 **** attribute. See smtp_tls_policy_maps for notes and examples. .PP This feature is available in Postfix 2.3 and later. ! .SH smtp_tls_mandatory_protocols (default: SSLv3, TLSv1) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by whitespace, commas or colons. In the policy table "protocols" attribute --- 5718,5724 ---- attribute. See smtp_tls_policy_maps for notes and examples. .PP This feature is available in Postfix 2.3 and later. ! .SH smtp_tls_mandatory_protocols (default: !SSLv2) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by whitespace, commas or colons. In the policy table "protocols" attribute *************** *** 5726,5737 **** empty value means allow all protocols. The valid protocol names, (see \\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3" and "TLSv1". .PP With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported; use the form you find more intuitive. .PP Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by --- 5726,5743 ---- empty value means allow all protocols. The valid protocol names, (see \\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3" and "TLSv1". .PP + Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled. + .PP With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. .PP Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by *************** *** 5746,5754 **** .nf .na .ft C ! smtp_tls_mandatory_protocols = TLSv1 ! # Alternative form with Postfix >= 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 .fi .ad .ft R --- 5752,5761 ---- .nf .na .ft C ! # Preferred form with Postfix >= 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtp_tls_mandatory_protocols = TLSv1 .fi .ad .ft R *************** *** 5981,5994 **** protocol names, (see \\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3" and "TLSv1". .PP To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax. .PP Example: .nf --- 5988,6005 ---- protocol names, (see \\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3" and "TLSv1". .PP + Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled. + .PP To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix. .PP Example: .nf *************** *** 8386,8392 **** (see there for syntax details). .PP This feature is available in Postfix 2.3 and later. ! .SH smtpd_tls_mandatory_protocols (default: SSLv3, TLSv1) The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all available SSL/TLS protocol versions. A non-empty value is a list --- 8397,8403 ---- (see there for syntax details). .PP This feature is available in Postfix 2.3 and later. ! .SH smtpd_tls_mandatory_protocols (default: !SSLv2) The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all available SSL/TLS protocol versions. A non-empty value is a list *************** *** 8394,8405 **** names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive. .PP With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported, use the form you find more intuitive. .PP Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that --- 8405,8422 ---- names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive. .PP + Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled. + .PP With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. .PP Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that *************** *** 8431,8444 **** "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon. .PP To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax. .PP Example: .nf --- 8448,8465 ---- "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon. .PP + Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled. + .PP To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix. .PP Example: .nf diff -cr --new-file /var/tmp/postfix-2.7.8/man/man8/smtp.8 ./man/man8/smtp.8 *** /var/tmp/postfix-2.7.8/man/man8/smtp.8 Sun Nov 15 09:24:50 2009 --- ./man/man8/smtp.8 Tue Apr 24 15:29:58 2012 *************** *** 374,380 **** Optional lookup tables with the Postfix SMTP client TLS security policy by next-hop destination; when a non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! .IP "\fBsmtp_tls_mandatory_protocols (SSLv3, TLSv1)\fR" List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. .IP "\fBsmtp_tls_scert_verifydepth (9)\fR" --- 374,380 ---- Optional lookup tables with the Postfix SMTP client TLS security policy by next-hop destination; when a non-empty value is specified, this overrides the obsolete smtp_tls_per_site parameter. ! .IP "\fBsmtp_tls_mandatory_protocols (!SSLv2)\fR" List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. .IP "\fBsmtp_tls_scert_verifydepth (9)\fR" diff -cr --new-file /var/tmp/postfix-2.7.8/man/man8/smtpd.8 ./man/man8/smtpd.8 *** /var/tmp/postfix-2.7.8/man/man8/smtpd.8 Wed Jun 15 16:47:55 2011 --- ./man/man8/smtpd.8 Tue Apr 24 15:20:38 2012 *************** *** 389,395 **** .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR" Additional list of ciphers or cipher types to exclude from the SMTP server cipher list at mandatory TLS security levels. ! .IP "\fBsmtpd_tls_mandatory_protocols (SSLv3, TLSv1)\fR" The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. .IP "\fBsmtpd_tls_received_header (no)\fR" --- 389,395 ---- .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR" Additional list of ciphers or cipher types to exclude from the SMTP server cipher list at mandatory TLS security levels. ! .IP "\fBsmtpd_tls_mandatory_protocols (!SSLv2)\fR" The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. .IP "\fBsmtpd_tls_received_header (no)\fR" diff -cr --new-file /var/tmp/postfix-2.7.8/proto/TLS_README.html ./proto/TLS_README.html *** /var/tmp/postfix-2.7.8/proto/TLS_README.html Thu Jan 28 19:47:25 2010 --- ./proto/TLS_README.html Tue Apr 24 13:47:25 2012 *************** *** 785,796 **** "export".--- 814,823 ---- smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! # Preferred form with Postfix ≥ 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtpd_tls_mandatory_protocols = TLSv1With mandatory TLS encryption, the Postfix SMTP server will by ! default only use SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtpd_tls_mandatory_protocols configuration parameter. The corresponding smtpd_tls_protocols parameter (Postfix ≥ 2.6) controls the SSL/TLS protocols used with opportunistic TLS.
For a server that is not a public Internet MX host, Postfix (≥ 2.3) supports configurations with no server certificates that use only the anonymous ciphers. This is --- 785,802 ---- "export".
With mandatory TLS encryption, the Postfix SMTP server will by ! default disable SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtpd_tls_mandatory_protocols configuration parameter. The corresponding smtpd_tls_protocols parameter (Postfix ≥ 2.6) controls the SSL/TLS protocols used with opportunistic TLS.
+Note that the OpenSSL library only supports protocol exclusion + (not inclusion). For this reason, Postfix can exclude only protocols + that are known at the time the Postfix software is written. If new + protocols are added to the OpenSSL library, they cannot be excluded + without corresponding changes to the Postfix source code.
+For a server that is not a public Internet MX host, Postfix (≥ 2.3) supports configurations with no server certificates that use only the anonymous ciphers. This is *************** *** 808,816 **** smtpd_tls_mandatory_ciphers = high smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 smtpd_tls_security_level = encrypt ! smtpd_tls_mandatory_protocols = TLSv1 ! # Also available with Postfix ≥ 2.5: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
Examples:
In the example below, traffic to example.com and its sub-domains ! via the corresponding MX hosts always uses TLS. The protocol version will be ! "SSLv3" or "TLSv1" (the default setting of smtp_tls_mandatory_protocols ! excludes "SSLv2"). Only high or medium strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions.
--- 1414,1422 ----Examples:
In the example below, traffic to example.com and its sub-domains ! via the corresponding MX hosts always uses TLS. The SSLv2 protocol ! will be disabled (the default setting of smtp_tls_mandatory_protocols ! excludes "SSLv2"). Only high- or medium-strength (i.e. 128 bit or better) ciphers will be used by default for all "encrypt" security level sessions.
*************** *** 2258,2264 **** "export".With mandatory TLS encryption, the Postfix SMTP client will by ! default only use SSLv3 or TLSv1. SSLv2 is only used when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtp_tls_mandatory_protocols configuration parameter. The corresponding smtp_tls_protocols parameter (Postfix ≥ 2.6) controls --- 2265,2271 ---- "export".
With mandatory TLS encryption, the Postfix SMTP client will by ! default disable SSLv2. SSLv2 is used only when TLS encryption is optional. The mandatory TLS protocol list is specified via the smtp_tls_mandatory_protocols configuration parameter. The corresponding smtp_tls_protocols parameter (Postfix ≥ 2.6) controls *************** *** 2272,2280 **** smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! smtp_tls_mandatory_protocols = SSLv3, TLSv1 ! # Also available with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2 # Also available with Postfix ≥ 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 --- 2279,2288 ---- smtp_tls_mandatory_ciphers = medium smtp_tls_mandatory_exclude_ciphers = RC4, MD5 smtp_tls_exclude_ciphers = aNULL ! # Preferred form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2 + # Alternative form. + smtp_tls_mandatory_protocols = SSLv3, TLSv1 # Also available with Postfix ≥ 2.6: smtp_tls_ciphers = export smtp_tls_protocols = !SSLv2 diff -cr --new-file /var/tmp/postfix-2.7.8/proto/postconf.proto ./proto/postconf.proto *** /var/tmp/postfix-2.7.8/proto/postconf.proto Tue Jun 15 18:18:48 2010 --- ./proto/postconf.proto Tue Apr 24 13:47:25 2012 *************** *** 10267,10273 ****
This feature is available in Postfix 2.3 and later.
! %PARAM smtp_tls_mandatory_protocols SSLv3, TLSv1List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by --- 10267,10273 ----
This feature is available in Postfix 2.3 and later.
! %PARAM smtp_tls_mandatory_protocols !SSLv2List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by *************** *** 10276,10287 **** empty value means allow all protocols. The valid protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported; use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by --- 10276,10294 ---- empty value means allow all protocols. The valid protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
+Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. !
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by *************** *** 10294,10302 ****
Example:
! smtp_tls_mandatory_protocols = TLSv1 ! # Alternative form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
This feature is available in Postfix 2.3 and later.
--- 10301,10310 ----Example:
! # Preferred form with Postfix ≥ 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 + # Alternative form. + smtp_tls_mandatory_protocols = TLSv1
This feature is available in Postfix 2.3 and later.
*************** *** 10424,10430 ****This feature is available in Postfix 2.3 and later.
! %PARAM lmtp_tls_mandatory_protocols SSLv3, TLSv1The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details.
--- 10432,10438 ----This feature is available in Postfix 2.3 and later.
! %PARAM lmtp_tls_mandatory_protocols !SSLv2The LMTP-specific version of the smtp_tls_mandatory_protocols configuration parameter. See there for details.
*************** *** 10445,10451 ****This feature is available in Postfix 2.3 and later.
! %PARAM smtpd_tls_mandatory_protocols SSLv3, TLSv1The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all --- 10453,10459 ----
This feature is available in Postfix 2.3 and later.
! %PARAM smtpd_tls_mandatory_protocols !SSLv2The SSL/TLS protocols accepted by the Postfix SMTP server with mandatory TLS encryption. If the list is empty, the server supports all *************** *** 10454,10465 **** names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive.
With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is still ! supported, use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that --- 10462,10480 ---- names separated by whitespace, commas or colons. The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive.
+Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+With Postfix ≥ 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing ! the protocols to include, rather than protocols to exclude, is ! supported, but not recommended. The exclusion form more closely ! matches the behaviour when the OpenSSL library is newer than Postfix. !
Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that *************** *** 11468,11481 **** protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax.
Example:
--- 11483,11500 ---- protocol names, (see SSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1". +Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix.
Example:
*************** *** 11498,11511 **** "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon.To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, is supported, but not recommended. OpenSSL provides no mechanisms ! for excluding protocols not known at compile-time. If Postfix is linked ! against an OpenSSL library that supports additional protocol versions, ! they cannot be excluded using either syntax.
Example:
--- 11517,11534 ---- "TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute values are separated by a colon. +Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" + and "TLSv1.2". If an older Postfix version is linked against OpenSSL + 1.0.1 or later, these, or any other new protocol versions, are + unconditionally enabled.
+To include a protocol list its name, to exclude it, prefix the name with a "!" character. To exclude SSLv2 even for opportunistic TLS set "smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set "smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to ! include, rather than protocols to exclude, is supported, but not ! recommended. The exclusion form more closely matches the behaviour ! when the OpenSSL library is newer than Postfix.
Example:
diff -cr --new-file /var/tmp/postfix-2.7.8/src/global/mail_params.h ./src/global/mail_params.h *** /var/tmp/postfix-2.7.8/src/global/mail_params.h Sun Jun 13 15:20:42 2010 --- ./src/global/mail_params.h Tue Apr 24 13:47:25 2012 *************** *** 1239,1245 **** extern char *var_smtpd_tls_proto; #define VAR_SMTPD_TLS_MAND_PROTO "smtpd_tls_mandatory_protocols" ! #define DEF_SMTPD_TLS_MAND_PROTO "SSLv3, TLSv1" extern char *var_smtpd_tls_mand_proto; #define VAR_SMTPD_TLS_CIPH "smtpd_tls_ciphers" --- 1239,1245 ---- extern char *var_smtpd_tls_proto; #define VAR_SMTPD_TLS_MAND_PROTO "smtpd_tls_mandatory_protocols" ! #define DEF_SMTPD_TLS_MAND_PROTO "!SSLv2" extern char *var_smtpd_tls_mand_proto; #define VAR_SMTPD_TLS_CIPH "smtpd_tls_ciphers" *************** *** 1456,1464 **** extern char *var_smtp_tls_proto; #define VAR_SMTP_TLS_MAND_PROTO "smtp_tls_mandatory_protocols" ! #define DEF_SMTP_TLS_MAND_PROTO "SSLv3, TLSv1" #define VAR_LMTP_TLS_MAND_PROTO "lmtp_tls_mandatory_protocols" ! #define DEF_LMTP_TLS_MAND_PROTO "SSLv3, TLSv1" extern char *var_smtp_tls_mand_proto; #define VAR_SMTP_TLS_VFY_CMATCH "smtp_tls_verify_cert_match" --- 1456,1464 ---- extern char *var_smtp_tls_proto; #define VAR_SMTP_TLS_MAND_PROTO "smtp_tls_mandatory_protocols" ! #define DEF_SMTP_TLS_MAND_PROTO "!SSLv2" #define VAR_LMTP_TLS_MAND_PROTO "lmtp_tls_mandatory_protocols" ! #define DEF_LMTP_TLS_MAND_PROTO "!SSLv2" extern char *var_smtp_tls_mand_proto; #define VAR_SMTP_TLS_VFY_CMATCH "smtp_tls_verify_cert_match" diff -cr --new-file /var/tmp/postfix-2.7.8/src/postlog/postlog.c ./src/postlog/postlog.c *** /var/tmp/postfix-2.7.8/src/postlog/postlog.c Fri Apr 17 16:04:00 2009 --- ./src/postlog/postlog.c Tue Feb 14 09:15:07 2012 *************** *** 206,212 **** if (isatty(STDERR_FILENO)) msg_vstream_init(tag, VSTREAM_ERR); msg_syslog_init(tag, LOG_PID, LOG_FACILITY); - tag = 0; /* * Parse switches. --- 206,211 ---- diff -cr --new-file /var/tmp/postfix-2.7.8/src/smtp/smtp.c ./src/smtp/smtp.c *** /var/tmp/postfix-2.7.8/src/smtp/smtp.c Sun Nov 15 09:24:50 2009 --- ./src/smtp/smtp.c Tue Apr 24 15:29:58 2012 *************** *** 344,350 **** /* Optional lookup tables with the Postfix SMTP client TLS security /* policy by next-hop destination; when a non-empty value is specified, /* this overrides the obsolete smtp_tls_per_site parameter. ! /* .IP "\fBsmtp_tls_mandatory_protocols (SSLv3, TLSv1)\fR" /* List of SSL/TLS protocols that the Postfix SMTP client will use with /* mandatory TLS encryption. /* .IP "\fBsmtp_tls_scert_verifydepth (9)\fR" --- 344,350 ---- /* Optional lookup tables with the Postfix SMTP client TLS security /* policy by next-hop destination; when a non-empty value is specified, /* this overrides the obsolete smtp_tls_per_site parameter. ! /* .IP "\fBsmtp_tls_mandatory_protocols (!SSLv2)\fR" /* List of SSL/TLS protocols that the Postfix SMTP client will use with /* mandatory TLS encryption. /* .IP "\fBsmtp_tls_scert_verifydepth (9)\fR" diff -cr --new-file /var/tmp/postfix-2.7.8/src/smtpd/smtpd.c ./src/smtpd/smtpd.c *** /var/tmp/postfix-2.7.8/src/smtpd/smtpd.c Thu Oct 20 17:33:53 2011 --- ./src/smtpd/smtpd.c Tue Apr 24 15:20:38 2012 *************** *** 357,363 **** /* .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR" /* Additional list of ciphers or cipher types to exclude from the /* SMTP server cipher list at mandatory TLS security levels. ! /* .IP "\fBsmtpd_tls_mandatory_protocols (SSLv3, TLSv1)\fR" /* The SSL/TLS protocols accepted by the Postfix SMTP server with /* mandatory TLS encryption. /* .IP "\fBsmtpd_tls_received_header (no)\fR" --- 357,363 ---- /* .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR" /* Additional list of ciphers or cipher types to exclude from the /* SMTP server cipher list at mandatory TLS security levels. ! /* .IP "\fBsmtpd_tls_mandatory_protocols (!SSLv2)\fR" /* The SSL/TLS protocols accepted by the Postfix SMTP server with /* mandatory TLS encryption. /* .IP "\fBsmtpd_tls_received_header (no)\fR" diff -cr --new-file /var/tmp/postfix-2.7.8/src/tls/tls.h ./src/tls/tls.h *** /var/tmp/postfix-2.7.8/src/tls/tls.h Sat Nov 8 18:35:28 2008 --- ./src/tls/tls.h Tue Apr 24 13:47:25 2012 *************** *** 154,161 **** #define TLS_PROTOCOL_SSLv2 (1<<0) /* SSLv2 */ #define TLS_PROTOCOL_SSLv3 (1<<1) /* SSLv3 */ #define TLS_PROTOCOL_TLSv1 (1<<2) /* TLSv1 */ #define TLS_KNOWN_PROTOCOLS \ ! ( TLS_PROTOCOL_SSLv2 | TLS_PROTOCOL_SSLv3 | TLS_PROTOCOL_TLSv1 ) extern int tls_protocol_mask(const char *); --- 154,172 ---- #define TLS_PROTOCOL_SSLv2 (1<<0) /* SSLv2 */ #define TLS_PROTOCOL_SSLv3 (1<<1) /* SSLv3 */ #define TLS_PROTOCOL_TLSv1 (1<<2) /* TLSv1 */ + #ifdef SSL_TXT_TLSV1_1 + #define TLS_PROTOCOL_TLSv1_1 (1<<3) /* TLSv1_1 */ + #else + #define TLS_PROTOCOL_TLSv1_1 0 /* Unknown */ + #endif + #ifdef SSL_TXT_TLSV1_2 + #define TLS_PROTOCOL_TLSv1_2 (1<<4) /* TLSv1_2 */ + #else + #define TLS_PROTOCOL_TLSv1_2 0 /* Unknown */ + #endif #define TLS_KNOWN_PROTOCOLS \ ! ( TLS_PROTOCOL_SSLv2 | TLS_PROTOCOL_SSLv3 | TLS_PROTOCOL_TLSv1 \ ! | TLS_PROTOCOL_TLSv1_1 | TLS_PROTOCOL_TLSv1_2 ) extern int tls_protocol_mask(const char *); diff -cr --new-file /var/tmp/postfix-2.7.8/src/tls/tls_client.c ./src/tls/tls_client.c *** /var/tmp/postfix-2.7.8/src/tls/tls_client.c Tue Jun 1 19:52:06 2010 --- ./src/tls/tls_client.c Tue Apr 24 13:47:25 2012 *************** *** 814,819 **** --- 814,825 ---- if (protomask != 0) SSL_set_options(TLScontext->con, ((protomask & TLS_PROTOCOL_TLSv1) ? SSL_OP_NO_TLSv1 : 0L) + #ifdef SSL_OP_NO_TLSv1_1 + | ((protomask & TLS_PROTOCOL_TLSv1_1) ? SSL_OP_NO_TLSv1_1 : 0L) + #endif + #ifdef SSL_OP_NO_TLSv1_2 + | ((protomask & TLS_PROTOCOL_TLSv1_2) ? SSL_OP_NO_TLSv1_2 : 0L) + #endif | ((protomask & TLS_PROTOCOL_SSLv3) ? SSL_OP_NO_SSLv3 : 0L) | ((protomask & TLS_PROTOCOL_SSLv2) ? SSL_OP_NO_SSLv2 : 0L)); diff -cr --new-file /var/tmp/postfix-2.7.8/src/tls/tls_misc.c ./src/tls/tls_misc.c *** /var/tmp/postfix-2.7.8/src/tls/tls_misc.c Wed Jul 7 07:04:43 2010 --- ./src/tls/tls_misc.c Tue Apr 24 13:47:25 2012 *************** *** 206,211 **** --- 206,217 ---- SSL_TXT_SSLV2, TLS_PROTOCOL_SSLv2, SSL_TXT_SSLV3, TLS_PROTOCOL_SSLv3, SSL_TXT_TLSV1, TLS_PROTOCOL_TLSv1, + #ifdef SSL_TXT_TLSV1_1 + SSL_TXT_TLSV1_1, TLS_PROTOCOL_TLSv1_1, + #endif + #ifdef SSL_TXT_TLSV1_2 + SSL_TXT_TLSV1_2, TLS_PROTOCOL_TLSv1_2, + #endif 0, TLS_PROTOCOL_INVALID, }; diff -cr --new-file /var/tmp/postfix-2.7.8/src/tls/tls_server.c ./src/tls/tls_server.c *** /var/tmp/postfix-2.7.8/src/tls/tls_server.c Tue Jun 1 19:52:06 2010 --- ./src/tls/tls_server.c Tue Apr 24 13:47:25 2012 *************** *** 366,371 **** --- 366,377 ---- if (protomask != 0) SSL_CTX_set_options(server_ctx, ((protomask & TLS_PROTOCOL_TLSv1) ? SSL_OP_NO_TLSv1 : 0L) + #ifdef SSL_OP_NO_TLSv1_1 + | ((protomask & TLS_PROTOCOL_TLSv1_1) ? SSL_OP_NO_TLSv1_1 : 0L) + #endif + #ifdef SSL_OP_NO_TLSv1_2 + | ((protomask & TLS_PROTOCOL_TLSv1_2) ? SSL_OP_NO_TLSv1_2 : 0L) + #endif | ((protomask & TLS_PROTOCOL_SSLv3) ? SSL_OP_NO_SSLv3 : 0L) | ((protomask & TLS_PROTOCOL_SSLv2) ? SSL_OP_NO_SSLv2 : 0L)); diff -cr --new-file /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus.h ./src/xsasl/xsasl_cyrus.h *** /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus.h Tue Dec 20 12:48:22 2005 --- ./src/xsasl/xsasl_cyrus.h Sun Apr 1 10:29:55 2012 *************** *** 26,31 **** --- 26,36 ---- extern XSASL_SERVER_IMPL *xsasl_cyrus_server_init(const char *, const char *); extern XSASL_CLIENT_IMPL *xsasl_cyrus_client_init(const char *, const char *); + /* + * Internal definitions for client and server module. + */ + typedef int (*XSASL_CYRUS_CB) (void); + #endif /* LICENSE diff -cr --new-file /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus_client.c ./src/xsasl/xsasl_cyrus_client.c *** /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus_client.c Sat Apr 18 19:39:30 2009 --- ./src/xsasl/xsasl_cyrus_client.c Sun Apr 1 10:29:55 2012 *************** *** 223,229 **** * Global callbacks. These have no per-session context. */ static sasl_callback_t callbacks[] = { ! {SASL_CB_LOG, &xsasl_cyrus_log, 0}, {SASL_CB_LIST_END, 0, 0} }; --- 223,229 ---- * Global callbacks. These have no per-session context. */ static sasl_callback_t callbacks[] = { ! {SASL_CB_LOG, (XSASL_CYRUS_CB) &xsasl_cyrus_log, 0}, {SASL_CB_LIST_END, 0, 0} }; *************** *** 302,310 **** { XSASL_CYRUS_CLIENT *client = 0; static sasl_callback_t callbacks[] = { ! {SASL_CB_USER, &xsasl_cyrus_client_get_user, 0}, ! {SASL_CB_AUTHNAME, &xsasl_cyrus_client_get_user, 0}, ! {SASL_CB_PASS, &xsasl_cyrus_client_get_passwd, 0}, {SASL_CB_LIST_END, 0, 0} }; sasl_conn_t *sasl_conn = 0; --- 302,310 ---- { XSASL_CYRUS_CLIENT *client = 0; static sasl_callback_t callbacks[] = { ! {SASL_CB_USER, (XSASL_CYRUS_CB) &xsasl_cyrus_client_get_user, 0}, ! {SASL_CB_AUTHNAME, (XSASL_CYRUS_CB) &xsasl_cyrus_client_get_user, 0}, ! {SASL_CB_PASS, (XSASL_CYRUS_CB) &xsasl_cyrus_client_get_passwd, 0}, {SASL_CB_LIST_END, 0, 0} }; sasl_conn_t *sasl_conn = 0; diff -cr --new-file /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus_server.c ./src/xsasl/xsasl_cyrus_server.c *** /var/tmp/postfix-2.7.8/src/xsasl/xsasl_cyrus_server.c Sat Apr 18 18:43:58 2009 --- ./src/xsasl/xsasl_cyrus_server.c Sun Apr 1 10:29:55 2012 *************** *** 170,176 **** #define NO_CALLBACK_CONTEXT 0 static sasl_callback_t callbacks[] = { ! {SASL_CB_LOG, &xsasl_cyrus_log, NO_CALLBACK_CONTEXT}, {SASL_CB_LIST_END, 0, 0} }; --- 170,176 ---- #define NO_CALLBACK_CONTEXT 0 static sasl_callback_t callbacks[] = { ! {SASL_CB_LOG, (XSASL_CYRUS_CB) &xsasl_cyrus_log, NO_CALLBACK_CONTEXT}, {SASL_CB_LIST_END, 0, 0} };