mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-29 13:18:12 +00:00
postfix-3.6-20200725
This commit is contained in:
parent
bf6bdb562d
commit
04f880d08a
@ -25008,3 +25008,18 @@ Apologies for any names omitted.
|
|||||||
|
|
||||||
Final cleanups of the peername matching code. File:
|
Final cleanups of the peername matching code. File:
|
||||||
tls/tls_client.c.
|
tls/tls_client.c.
|
||||||
|
|
||||||
|
202000725
|
||||||
|
|
||||||
|
Documentation of how to set the minimum and maximum allowed
|
||||||
|
TLS protocol versions (these override system-wide OpenSSL
|
||||||
|
configuration), some related code cleanups including better
|
||||||
|
warning messages. Viktor Dukhovni. Files: proto/TLS_README.html,
|
||||||
|
proto/postconf.proto, global/mail_params.h,
|
||||||
|
posttls-finger/posttls-finger.c, tls/tls.h, tls/tls_client.c,
|
||||||
|
tls/tls_fprint.c, tls/tls_misc.c, tls/tls_server.c.
|
||||||
|
|
||||||
|
The Postfix TLS library did not override the system-wide
|
||||||
|
OpenSSL configuration of allowed TLS protocol versions, for
|
||||||
|
sessions where the remote SMTP client sends SNI. File:
|
||||||
|
tls/tls_server.c.
|
||||||
|
@ -101,10 +101,10 @@ SMTP server configurations will not accidentally enable TLS without
|
|||||||
certificates.
|
certificates.
|
||||||
|
|
||||||
Note that server certificates are nnoott optional in TLS 1.3. To run without
|
Note that server certificates are nnoott optional in TLS 1.3. To run without
|
||||||
certificates you'd have to disable the TLS 1.3 protocol by including '!TLSv1.3'
|
certificates you'd have to disable the TLS 1.3 protocol by including
|
||||||
in "smtpd_tls_protocols" and perhaps also "smtpd_tls_mandatory_protocols". It
|
"<=TLSv1.2" (or, for Postfix < 3.6, "!TLSv1.3") in "smtpd_tls_protocols" and
|
||||||
is simpler instead to just configure a certificate chain. Certificate-less
|
perhaps also "smtpd_tls_mandatory_protocols". It is simpler instead to just
|
||||||
operation is not recommended.
|
configure a certificate chain. Certificate-less operation is not recommended.
|
||||||
|
|
||||||
RSA, DSA and ECDSA (Postfix >= 2.6) certificates are supported. Most sites only
|
RSA, DSA and ECDSA (Postfix >= 2.6) certificates are supported. Most sites only
|
||||||
have RSA certificates. You can configure all three at the same time, in which
|
have RSA certificates. You can configure all three at the same time, in which
|
||||||
@ -632,8 +632,8 @@ With mandatory and opportunistic TLS encryption, the Postfix SMTP server by
|
|||||||
default disables SSLv2 and SSLv3 with Postfix releases after the middle of
|
default disables SSLv2 and SSLv3 with Postfix releases after the middle of
|
||||||
2015; older releases only disable SSLv2 for mandatory TLS. The mandatory TLS
|
2015; older releases only disable SSLv2 for mandatory TLS. The mandatory TLS
|
||||||
protocol list is specified via the smtpd_tls_mandatory_protocols configuration
|
protocol list is specified via the smtpd_tls_mandatory_protocols configuration
|
||||||
parameter. The smtpd_tls_protocols parameter (Postfix >= 2.6) controls the SSL/
|
parameter. The smtpd_tls_protocols parameter (Postfix >= 2.6) controls the TLS
|
||||||
TLS protocols used with opportunistic TLS.
|
protocols used with opportunistic TLS.
|
||||||
|
|
||||||
Note that the OpenSSL library only supports protocol exclusion (not inclusion).
|
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
|
For this reason, Postfix can exclude only protocols that are known at the time
|
||||||
@ -649,8 +649,7 @@ configurations may not interoperate with some clients, and require that TLSv1.3
|
|||||||
be explicitly disabled. Therefore, they are not recommended, it is better and
|
be explicitly disabled. Therefore, they are not recommended, it is better and
|
||||||
simpler to just configure a suitable certificate.
|
simpler to just configure a suitable certificate.
|
||||||
|
|
||||||
Example, MSA that requires TLSv1 or higher, not SSLv2 or SSLv3, with high grade
|
Example, MSA that requires TLSv1.2 or higher, with high grade ciphers:
|
||||||
ciphers:
|
|
||||||
|
|
||||||
/etc/postfix/main.cf:
|
/etc/postfix/main.cf:
|
||||||
smtpd_tls_cert_file = /etc/postfix/cert.pem
|
smtpd_tls_cert_file = /etc/postfix/cert.pem
|
||||||
@ -658,10 +657,10 @@ ciphers:
|
|||||||
smtpd_tls_mandatory_ciphers = high
|
smtpd_tls_mandatory_ciphers = high
|
||||||
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5
|
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5
|
||||||
smtpd_tls_security_level = encrypt
|
smtpd_tls_security_level = encrypt
|
||||||
# Preferred syntax with Postfix >= 2.5:
|
# Preferred syntax with Postfix >= 3.6:
|
||||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtpd_tls_mandatory_protocols = >=TLSv1.2
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtpd_tls_mandatory_protocols = TLSv1
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
|
|
||||||
With Postfix >= 3.4, specify instead a single file that holds the key followed
|
With Postfix >= 3.4, specify instead a single file that holds the key followed
|
||||||
by the corresponding certificate and any associated issuing certificates,
|
by the corresponding certificate and any associated issuing certificates,
|
||||||
@ -924,9 +923,10 @@ not specified consistently.
|
|||||||
submission
|
submission
|
||||||
|
|
||||||
/etc/postfix/tls_policy:
|
/etc/postfix/tls_policy:
|
||||||
[example.net]:587 encrypt protocols=TLSv1 ciphers=high
|
# Postfix >= 3.6 "protocols" syntax
|
||||||
[example.net]:msa encrypt protocols=TLSv1 ciphers=high
|
[example.net]:587 encrypt protocols=>=TLSv1.2 ciphers=high
|
||||||
[example.net]:submission encrypt protocols=TLSv1 ciphers=high
|
# Legacy "protocols" syntax
|
||||||
|
[example.net]:msa encrypt protocols=!SSLv2:!SSLv3 ciphers=high
|
||||||
|
|
||||||
DDAANNEE TTLLSS aauutthheennttiiccaattiioonn..
|
DDAANNEE TTLLSS aauutthheennttiiccaattiioonn..
|
||||||
|
|
||||||
@ -1835,8 +1835,11 @@ Example:
|
|||||||
[thumb.example.org] fingerprint
|
[thumb.example.org] fingerprint
|
||||||
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
||||||
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
||||||
# Postfix 2.6 and later
|
# Postfix >= 3.6 "protocols" syntax
|
||||||
example.info may protocols=!SSLv2 ciphers=medium
|
example.info may protocols=>=TLSv1 ciphers=medium
|
||||||
|
exclude=3DES
|
||||||
|
# Legacy protocols syntax
|
||||||
|
example.info may protocols=!SSLv2:!SSLv3 ciphers=medium
|
||||||
exclude=3DES
|
exclude=3DES
|
||||||
|
|
||||||
NNoottee:: The "hostname" strategy if listed in a non-default setting of
|
NNoottee:: The "hostname" strategy if listed in a non-default setting of
|
||||||
@ -1909,8 +1912,8 @@ the minimum opportunistic TLS cipher grade is always "export".
|
|||||||
With mandatory and opportunistic TLS encryption, the Postfix SMTP client will
|
With mandatory and opportunistic TLS encryption, the Postfix SMTP client will
|
||||||
by default disable SSLv2 and SSLv3. The mandatory TLS protocol list is
|
by default disable SSLv2 and SSLv3. The mandatory TLS protocol list is
|
||||||
specified via the smtp_tls_mandatory_protocols configuration parameter. The
|
specified via the smtp_tls_mandatory_protocols configuration parameter. The
|
||||||
corresponding smtp_tls_protocols parameter (Postfix >= 2.6) controls the SSL/
|
corresponding smtp_tls_protocols parameter (Postfix >= 2.6) controls the TLS
|
||||||
TLS protocols used with opportunistic TLS.
|
protocols used with opportunistic TLS.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -1918,13 +1921,13 @@ Example:
|
|||||||
smtp_tls_mandatory_ciphers = medium
|
smtp_tls_mandatory_ciphers = medium
|
||||||
smtp_tls_mandatory_exclude_ciphers = RC4, MD5
|
smtp_tls_mandatory_exclude_ciphers = RC4, MD5
|
||||||
smtp_tls_exclude_ciphers = aNULL
|
smtp_tls_exclude_ciphers = aNULL
|
||||||
# Preferred form with Postfix >= 2.5:
|
|
||||||
smtp_tls_mandatory_protocols = !SSLv2
|
|
||||||
# Legacy form for Postfix < 2.5:
|
|
||||||
smtp_tls_mandatory_protocols = SSLv3, TLSv1
|
|
||||||
# Also available with Postfix >= 2.6:
|
|
||||||
smtp_tls_ciphers = medium
|
smtp_tls_ciphers = medium
|
||||||
smtp_tls_protocols = !SSLv2
|
# Preferred form with Postfix >= 3.6:
|
||||||
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
|
smtp_tls_protocols = >=TLSv1
|
||||||
|
# Legacy form for Postfix < 3.6:
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
|
smtp_tls_protocols = !SSLv2,!SSLv3
|
||||||
|
|
||||||
CClliieenntt--ssiiddee SSMMTTPPSS ssuuppppoorrtt
|
CClliieenntt--ssiiddee SSMMTTPPSS ssuuppppoorrtt
|
||||||
|
|
||||||
|
@ -179,10 +179,10 @@ configurations will not accidentally enable TLS without certificates. </p>
|
|||||||
|
|
||||||
<p> Note that server certificates are <b>not</b> optional in TLS 1.3. To
|
<p> Note that server certificates are <b>not</b> optional in TLS 1.3. To
|
||||||
run without certificates you'd have to disable the TLS 1.3 protocol by
|
run without certificates you'd have to disable the TLS 1.3 protocol by
|
||||||
including '!TLSv1.3' in "<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a>" and perhaps also
|
including "<=TLSv1.2" (or, for Postfix < 3.6, "!TLSv1.3") in
|
||||||
"<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a>". It is simpler instead to just
|
"<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a>" and perhaps also "<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a>".
|
||||||
configure a certificate chain. Certificate-less operation is not
|
It is simpler instead to just configure a certificate chain.
|
||||||
recommended. <p>
|
Certificate-less operation is not recommended. <p>
|
||||||
|
|
||||||
<p> RSA, DSA and ECDSA (Postfix ≥ 2.6) certificates are supported.
|
<p> RSA, DSA and ECDSA (Postfix ≥ 2.6) certificates are supported.
|
||||||
Most sites only have RSA certificates. You can configure all three
|
Most sites only have RSA certificates. You can configure all three
|
||||||
@ -891,7 +891,7 @@ after the middle of 2015; older releases only disable SSLv2 for
|
|||||||
mandatory TLS. The mandatory TLS protocol list is specified via the
|
mandatory TLS. The mandatory TLS protocol list is specified via the
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> configuration parameter. The
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> configuration parameter. The
|
||||||
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> parameter (Postfix ≥ 2.6)
|
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> parameter (Postfix ≥ 2.6)
|
||||||
controls the SSL/TLS protocols used with opportunistic TLS. </p>
|
controls the TLS protocols used with opportunistic TLS. </p>
|
||||||
|
|
||||||
<p> Note that the OpenSSL library only supports protocol exclusion
|
<p> Note that the OpenSSL library only supports protocol exclusion
|
||||||
(not inclusion). For this reason, Postfix can exclude only protocols
|
(not inclusion). For this reason, Postfix can exclude only protocols
|
||||||
@ -909,8 +909,8 @@ that TLSv1.3 be explicitly disabled. Therefore, they are not
|
|||||||
recommended, it is better and simpler to just configure a suitable
|
recommended, it is better and simpler to just configure a suitable
|
||||||
certificate. </p>
|
certificate. </p>
|
||||||
|
|
||||||
<p> Example, MSA that requires TLSv1 or higher, not SSLv2 or SSLv3,
|
<p> Example, MSA that requires TLSv1.2 or higher, with high grade
|
||||||
with high grade ciphers: </p>
|
ciphers: </p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
@ -920,10 +920,10 @@ with high grade ciphers: </p>
|
|||||||
<a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a> = high
|
<a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a> = high
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_exclude_ciphers">smtpd_tls_mandatory_exclude_ciphers</a> = aNULL, MD5
|
<a href="postconf.5.html#smtpd_tls_mandatory_exclude_ciphers">smtpd_tls_mandatory_exclude_ciphers</a> = aNULL, MD5
|
||||||
<a href="postconf.5.html#smtpd_tls_security_level">smtpd_tls_security_level</a> = encrypt
|
<a href="postconf.5.html#smtpd_tls_security_level">smtpd_tls_security_level</a> = encrypt
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = >=TLSv1.2
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = TLSv1
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -1263,9 +1263,10 @@ just in case the transport table entries are not specified consistently. </p>
|
|||||||
submission 587/tcp msa # mail message submission
|
submission 587/tcp msa # mail message submission
|
||||||
|
|
||||||
/etc/postfix/tls_policy:
|
/etc/postfix/tls_policy:
|
||||||
[example.net]:587 encrypt protocols=TLSv1 ciphers=high
|
# Postfix ≥ 3.6 "protocols" syntax
|
||||||
[example.net]:msa encrypt protocols=TLSv1 ciphers=high
|
[example.net]:587 encrypt protocols=>=TLSv1.2 ciphers=high
|
||||||
[example.net]:submission encrypt protocols=TLSv1 ciphers=high
|
# Legacy "protocols" syntax
|
||||||
|
[example.net]:msa encrypt protocols=!SSLv2:!SSLv3 ciphers=high
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -2398,8 +2399,10 @@ Example:
|
|||||||
[thumb.example.org] fingerprint
|
[thumb.example.org] fingerprint
|
||||||
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
||||||
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
||||||
# Postfix 2.6 and later
|
# Postfix ≥ 3.6 "protocols" syntax
|
||||||
example.info may protocols=!SSLv2 ciphers=medium exclude=3DES
|
example.info may protocols=>=TLSv1 ciphers=medium exclude=3DES
|
||||||
|
# Legacy protocols syntax
|
||||||
|
example.info may protocols=!SSLv2:!SSLv3 ciphers=medium exclude=3DES
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -2494,7 +2497,7 @@ SMTP client will by default disable SSLv2 and SSLv3. The mandatory
|
|||||||
TLS protocol list is specified via the
|
TLS protocol list is specified via the
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> configuration parameter. The corresponding
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> configuration parameter. The corresponding
|
||||||
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> parameter (Postfix ≥ 2.6) controls
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> parameter (Postfix ≥ 2.6) controls
|
||||||
the SSL/TLS protocols used with opportunistic TLS. </p>
|
the TLS protocols used with opportunistic TLS. </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
@ -2504,13 +2507,13 @@ the SSL/TLS protocols used with opportunistic TLS. </p>
|
|||||||
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = medium
|
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = medium
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a> = RC4, MD5
|
<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a> = RC4, MD5
|
||||||
<a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a> = aNULL
|
<a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a> = aNULL
|
||||||
# Preferred form with Postfix ≥ 2.5:
|
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2
|
|
||||||
# Legacy form for Postfix < 2.5:
|
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = SSLv3, TLSv1
|
|
||||||
# Also available with Postfix ≥ 2.6:
|
|
||||||
<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> = medium
|
<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> = medium
|
||||||
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2
|
# Preferred form with Postfix ≥ 3.6:
|
||||||
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=TLSv1.2
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = >=TLSv1
|
||||||
|
# Legacy form for Postfix < 3.6:
|
||||||
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2,!SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
@ -508,9 +508,9 @@ SMTP(8) SMTP(8)
|
|||||||
policy by next-hop destination; when a non-empty value is speci-
|
policy by next-hop destination; when a non-empty value is speci-
|
||||||
fied, this overrides the obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter.
|
fied, this overrides the obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (see 'postconf -d' output)</b>
|
||||||
List of SSL/TLS protocols that the Postfix SMTP client will use
|
TLS protocols that the Postfix SMTP client will use with manda-
|
||||||
with mandatory TLS encryption.
|
tory TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (9)</b>
|
<b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (9)</b>
|
||||||
The verification depth for remote SMTP server certificates.
|
The verification depth for remote SMTP server certificates.
|
||||||
@ -573,9 +573,9 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> (see postconf -d output)</b>
|
||||||
List of TLS protocols that the Postfix SMTP client will exclude
|
TLS protocols that the Postfix SMTP client will use with oppor-
|
||||||
or include with opportunistic TLS encryption.
|
tunistic TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> (medium)</b>
|
<b><a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> (medium)</b>
|
||||||
The minimum TLS cipher grade that the Postfix SMTP client will
|
The minimum TLS cipher grade that the Postfix SMTP client will
|
||||||
|
@ -5420,7 +5420,7 @@ configuration parameter. See there for details. </p>
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="lmtp_tls_mandatory_protocols">lmtp_tls_mandatory_protocols</a>
|
<DT><b><a name="lmtp_tls_mandatory_protocols">lmtp_tls_mandatory_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see postconf -d output)</b></DT><DD>
|
||||||
|
|
||||||
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>
|
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>
|
||||||
configuration parameter. See there for details. </p>
|
configuration parameter. See there for details. </p>
|
||||||
@ -5464,7 +5464,7 @@ configuration parameter. See there for details. </p>
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="lmtp_tls_protocols">lmtp_tls_protocols</a>
|
<DT><b><a name="lmtp_tls_protocols">lmtp_tls_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see postconf -d output)</b></DT><DD>
|
||||||
|
|
||||||
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> configuration
|
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> configuration
|
||||||
parameter. See there for details. </p>
|
parameter. See there for details. </p>
|
||||||
@ -12881,74 +12881,92 @@ attribute. See <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_ma
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>
|
<DT><b><a name="smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see "postconf -d" output)</b></DT><DD>
|
||||||
|
|
||||||
<p> List of SSL/TLS protocols that the Postfix SMTP client will use with
|
<p> TLS protocols that the Postfix SMTP client will use with mandatory
|
||||||
mandatory TLS encryption. In <a href="postconf.5.html">main.cf</a> the values are separated by
|
TLS encryption. In <a href="postconf.5.html">main.cf</a> the values are separated by whitespace,
|
||||||
whitespace, commas or colons. In the policy table "protocols" attribute
|
commas or colons. In the policy table "protocols" attribute (see
|
||||||
(see <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>) the only valid separator is colon. An
|
<a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>) the only valid separator is colon. An empty value
|
||||||
empty value means allow all protocols. The valid protocol names, (see
|
means allow all protocols. </p>
|
||||||
<b>SSL_get_version(3)</b>), are "SSLv2", "SSLv3" and "TLSv1". The
|
|
||||||
default value is "!SSLv2, !SSLv3" for Postfix releases after the
|
|
||||||
middle of 2015, "!SSLv2" for older releases. </p>
|
|
||||||
|
|
||||||
<p> With Postfix ≥ 2.5 the parameter syntax was expanded to support
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p> The range of protocols advertised by an SSL/TLS client must be
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set a lowest acceptable TLS protocol version
|
||||||
higher version implicitly disables all versions above that higher version.
|
and/or a highest acceptable TLS protocol version. To set the lower
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
bound include an element of the form: ">=<i>version</i>" where
|
||||||
and SSLv3):
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
</p>
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !TLSv1
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=0x0303
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p> also disables any protocols version higher than TLSv1 leaving
|
|
||||||
only "SSLv3" enabled. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
and "TLSv1.2". When Postfix ≤ 2.5 is linked against OpenSSL 1.0.1
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
or later, these, or any other new protocol versions, cannot be
|
To require at least TLS 1.0, set "<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2,
|
||||||
disabled except by also disabling "TLSv1" (typically leaving just
|
!SSLv3". Listing the protocols to include, rather than protocols to
|
||||||
"SSLv3"). The latest patch levels of Postfix ≥ 2.6, and all
|
exclude, is supported, but not recommended. The exclusion syntax more
|
||||||
versions of Postfix ≥ 2.10 can explicitly disable support for
|
accurately matches the underlying OpenSSL interface. </p>
|
||||||
"TLSv1.1" or "TLSv1.2". </p>
|
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> When using the exclusion syntax, take care to ensure that the range
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
of protocols supported by the Postfixm SMTP client is contiguous. When
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
a protocol version is enabled, disabling any higher version implicitly
|
||||||
|
disables all versions above that higher version. Thus, for example: </p>
|
||||||
|
|
||||||
<p> At the <a href="TLS_README.html#client_tls_dane">dane</a> and
|
<blockquote>
|
||||||
<a href="TLS_README.html#client_tls_dane">dane-only</a> security
|
<pre>
|
||||||
levels, when usable TLSA records are obtained for the remote SMTP
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
server, the Postfix SMTP client is obligated to include the SNI TLS
|
</pre>
|
||||||
extension in its SSL client hello message. This may help the remote
|
</blockquote>
|
||||||
SMTP server live up to its promise to provide a certificate that
|
|
||||||
matches its TLSA records. Since TLS extensions require TLS 1.0 or
|
<p> also disables any protocols version higher than TLSv1.1 leaving
|
||||||
later, the Postfix SMTP client must disable "SSLv2" and "SSLv3" when
|
only "TLSv1" enabled. </p>
|
||||||
SNI is required. If you use "dane" or "dane-only" do not disable
|
|
||||||
TLSv1, except perhaps via the policy table for destinations which
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
you are sure will support "TLSv1.1" or "TLSv1.2". </p>
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
|
<p> While the vast majority of SMTP servers with DANE TLSA records now
|
||||||
|
support at least TLS 1.2, a few still only support TLS 1.0. If you use
|
||||||
|
"dane" or "dane-only" it is best to not disable TLSv1, except perhaps
|
||||||
|
via the policy table for destinations which you are sure will support
|
||||||
|
"TLSv1.2". </p>
|
||||||
|
|
||||||
<p> See the documentation of the <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a> parameter and
|
<p> See the documentation of the <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a> parameter and
|
||||||
<a href="TLS_README.html">TLS_README</a> for more information about security levels. </p>
|
<a href="TLS_README.html">TLS_README</a> for more information about security levels. </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = TLSv1
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -13240,54 +13258,81 @@ configurations in environments where DNS security is not assured. </p>
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtp_tls_protocols">smtp_tls_protocols</a>
|
<DT><b><a name="smtp_tls_protocols">smtp_tls_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see postconf -d output)</b></DT><DD>
|
||||||
|
|
||||||
<p> List of TLS protocols that the Postfix SMTP client will exclude or
|
<p> TLS protocols that the Postfix SMTP client will use with
|
||||||
include with opportunistic TLS encryption. The default value is
|
opportunistic TLS encryption. In <a href="postconf.5.html">main.cf</a> the values are separated by
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
whitespace, commas or colons. In the policy table "protocols" attribute
|
||||||
"!SSLv2" for older releases. Before Postfix 2.6, the Postfix SMTP
|
(see <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>) the only valid separator is colon. An empty
|
||||||
client would use all protocols with opportunistic TLS. </p>
|
value means allow all protocols. </p>
|
||||||
|
|
||||||
<p> In <a href="postconf.5.html">main.cf</a> the values are separated by whitespace, commas or
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
colons. In the policy table (see <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>) the only valid
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
separator is colon. An empty value means allow all protocols. The valid
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
protocol names, (see <b>SSL_get_version(3)</b>), are "SSLv2", "SSLv3"
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
and "TLSv1". </p>
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
|
|
||||||
<p> The range of protocols advertised by an SSL/TLS client must be
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
higher version implicitly disables all versions above that higher version.
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
and SSLv3):
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = >=0x0301
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3".
|
||||||
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> When using the exclusion syntax, take care to ensure that the range of
|
||||||
|
protocols advertised by an SSL/TLS client is contiguous. When a protocol
|
||||||
|
version is enabled, disabling any higher version implicitly disables all
|
||||||
|
versions above that higher version. Thus, for example:
|
||||||
</p>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !TLSv1
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p> also disables any protocols version higher than TLSv1 leaving
|
<p> also disables any protocols version higher than TLSv1.1 leaving
|
||||||
only "SSLv3" enabled. </p>
|
only "TLSv1" enabled. </p>
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
and "TLSv1.2". The latest patch levels of Postfix ≥ 2.6, and all
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
versions of Postfix ≥ 2.10 can explicitly disable support for
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
"TLSv1.1" or "TLSv1.2"</p>
|
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
|
||||||
|
|
||||||
<p> To include a protocol list its name, to exclude it, prefix the name
|
|
||||||
with a "!" character. To exclude SSLv2 for opportunistic TLS set
|
|
||||||
"<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
|
|
||||||
"<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !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 underlying
|
|
||||||
OpenSSL interface semantics. </p>
|
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
<pre>
|
<pre>
|
||||||
# TLSv1 or better:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -13479,12 +13524,13 @@ Examples:
|
|||||||
<pre>
|
<pre>
|
||||||
# Opportunistic TLS.
|
# Opportunistic TLS.
|
||||||
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = may
|
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = may
|
||||||
# Postfix ≥ 2.6:
|
|
||||||
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
||||||
# to do so (if a security vulnerability is found in the SSL library that
|
# to do so (if a security vulnerability is found in the SSL library that
|
||||||
# can be mitigated by disabling a particular protocol or raising the
|
# can be mitigated by disabling a particular protocol or raising the
|
||||||
# cipher grade from "export" to "low" or "medium").
|
# cipher grade).
|
||||||
<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> = export
|
<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> = medium
|
||||||
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = >=TLSv1
|
||||||
|
# Legacy (Postfix < 3.6) syntax:
|
||||||
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -13495,33 +13541,27 @@ Examples:
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Mandatory TLS verification of hostname or nexthop domain.
|
# Authenticated TLS 1.2 or better matching the nexthop domain or a
|
||||||
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = verify
|
# subdomain.
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = high
|
|
||||||
<a href="postconf.5.html#smtp_tls_verify_cert_match">smtp_tls_verify_cert_match</a> = hostname, nexthop, dot-nexthop
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
# Secure channel TLS with exact nexthop name match.
|
|
||||||
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = secure
|
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = secure
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = TLSv1
|
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = high
|
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = high
|
||||||
<a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> = nexthop
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=TLSv1.2
|
||||||
|
<a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> = nexthop, dot-nexthop
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Certificate fingerprint verification (Postfix ≥ 2.5).
|
# Certificate fingerprint verification (Postfix ≥ 2.5).
|
||||||
# The CA-less "fingerprint" security level only scales to a limited
|
# The CA-less "fingerprint" security level only scales to a limited
|
||||||
# number of destinations. As a global default rather than a per-site
|
# number of destinations. As a global default rather than a per-site
|
||||||
# setting, this is practical when mail for all recipients is sent
|
# setting, this is practical only when mail for all recipients is sent
|
||||||
# to a central mail hub.
|
# to a central mail hub.
|
||||||
<a href="postconf.5.html#relayhost">relayhost</a> = [mailhub.example.com]
|
<a href="postconf.5.html#relayhost">relayhost</a> = [mailhub.example.com]
|
||||||
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = fingerprint
|
<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = fingerprint
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = >=TLSv1.2
|
||||||
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = high
|
<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> = high
|
||||||
<a href="postconf.5.html#smtp_tls_fingerprint_cert_match">smtp_tls_fingerprint_cert_match</a> =
|
<a href="postconf.5.html#smtp_tls_fingerprint_cert_match">smtp_tls_fingerprint_cert_match</a> =
|
||||||
3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
|
3D:95:34:51:...:40:99:C0:C1
|
||||||
EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
|
EC:3B:2D:B0:...:A3:9D:72:F6
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -17639,43 +17679,69 @@ works in addition to the exclusions listed with <a href="postconf.5.html#smtpd_t
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a>
|
<DT><b><a name="smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see "postconf -d" output)</b></DT><DD>
|
||||||
|
|
||||||
<p> The SSL/TLS protocols accepted by the Postfix SMTP server with
|
<p> TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
||||||
mandatory TLS encryption. If the list is empty, the server supports
|
encryption. If the list is empty, the server supports all available TLS
|
||||||
all available SSL/TLS protocol versions. A non-empty value is a
|
protocol versions. A non-empty value is a list of protocol names to
|
||||||
list of protocol names separated by whitespace, commas or colons.
|
include or exclude, separated by whitespace, commas or colons. </p>
|
||||||
The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and
|
|
||||||
are not case sensitive. The default value is "!SSLv2, !SSLv3" for
|
|
||||||
Postfix releases after the middle of 2015, "!SSLv2" for older
|
|
||||||
releases. </p>
|
|
||||||
|
|
||||||
<p> With Postfix ≥ 2.5 the parameter syntax was expanded to support
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
and "TLSv1.2". When Postfix ≤ 2.5 is linked against OpenSSL 1.0.1
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
or later, these, or any other new protocol versions, cannot be
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
disabled. The latest patch levels of Postfix ≥ 2.6, and all
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
versions of Postfix ≥ 2.10 can disable support for "TLSv1.1" or
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
"TLSv1.2". </p>
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = >=0x0303
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> =
|
||||||
|
!SSLv2, !SSLv3". Listing the protocols to include, rather than
|
||||||
|
protocols to exclude, is supported, but not recommended. The exclusion
|
||||||
|
form more accurately matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = TLSv1
|
<a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -17684,36 +17750,67 @@ this can be disabled, if need be, via "!TLSv1.3". </p>
|
|||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtpd_tls_protocols">smtpd_tls_protocols</a>
|
<DT><b><a name="smtpd_tls_protocols">smtpd_tls_protocols</a>
|
||||||
(default: !SSLv2, !SSLv3)</b></DT><DD>
|
(default: see postconf -d output)</b></DT><DD>
|
||||||
|
|
||||||
<p> List of TLS protocols that the Postfix SMTP server will exclude
|
<p> TLS protocols accepted by the Postfix SMTP server with opportunistic
|
||||||
or include with opportunistic TLS encryption. The default value is
|
TLS encryption. If the list is empty, the server supports all available
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
TLS protocol versions. A non-empty value is a list of protocol names to
|
||||||
empty for older releases allowing all protocols to be
|
include or exclude, separated by whitespace, commas or colons. </p>
|
||||||
used with opportunistic TLS. A non-empty value is a list of protocol
|
|
||||||
names separated by whitespace, commas or colons. The supported
|
|
||||||
protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case
|
|
||||||
sensitive. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
and "TLSv1.2". The latest patch levels of Postfix ≥ 2.6, and all
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
versions of Postfix ≥ 2.10 can disable support for "TLSv1.1" or
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"TLSv1.2". </p>
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
<p> To include a protocol list its name, to exclude it, prefix the name
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
with a "!" character. To exclude SSLv2 for opportunistic TLS set
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
"<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
"<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = !SSLv2, !SSLv3". Explicitly listing the protocols to
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
include, rather than protocols to exclude, is supported, but not
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
recommended. The exclusion form more closely matches the underlying
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
OpenSSL interface semantics. </p>
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = >=0x0301
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = !SSLv2, !SSLv3".
|
||||||
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
<pre>
|
<pre>
|
||||||
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
|
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = !SSLv2, !SSLv3
|
<a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
||||||
<title> Postfix manual - posttls-finger(1) </title>
|
<title> Postfix manual - posttls-finger(1) </title>
|
||||||
</head> <body> <pre>
|
</head> <body> <pre>
|
||||||
POSTTLS-FINGER(1) General Commands Manual POSTTLS-FINGER(1)
|
POSTTLS-FINGER(1) POSTTLS-FINGER(1)
|
||||||
|
|
||||||
<b>NAME</b>
|
<b>NAME</b>
|
||||||
posttls-finger - Probe the TLS properties of an ESMTP or LMTP server.
|
posttls-finger - Probe the TLS properties of an ESMTP or LMTP server.
|
||||||
@ -255,9 +255,9 @@ POSTTLS-FINGER(1) General Commands Manual POSTTLS-FINGER(1)
|
|||||||
ing the values of TLS library parameters, or "<a href="postconf.5.html#myhostname">myhostname</a>" to
|
ing the values of TLS library parameters, or "<a href="postconf.5.html#myhostname">myhostname</a>" to
|
||||||
configure the SMTP EHLO name sent to the remote server.
|
configure the SMTP EHLO name sent to the remote server.
|
||||||
|
|
||||||
<b>-p</b> <i>protocols</i> (default: !SSLv2)
|
<b>-p</b> <i>protocols</i> (default: >=TLSv1)
|
||||||
List of TLS protocols that posttls-finger will exclude or
|
TLS protocols that posttls-finger will exclude or include. See
|
||||||
include. See <a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> for details.
|
<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> for details.
|
||||||
|
|
||||||
<b>-P</b> <i>CApath/</i> (default: none)
|
<b>-P</b> <i>CApath/</i> (default: none)
|
||||||
The OpenSSL CApath/ directory (indexed via c_rehash(1)) for
|
The OpenSSL CApath/ directory (indexed via c_rehash(1)) for
|
||||||
@ -288,31 +288,31 @@ POSTTLS-FINGER(1) General Commands Manual POSTTLS-FINGER(1)
|
|||||||
reading the remote server's 220 banner.
|
reading the remote server's 220 banner.
|
||||||
|
|
||||||
<b>-T</b> <i>timeout</i> (default: <b>30</b>)
|
<b>-T</b> <i>timeout</i> (default: <b>30</b>)
|
||||||
The SMTP/LMTP command timeout for EHLO/LHLO, STARTTLS and QUIT.
|
The SMTP/LMTP command timeout for EHLO/LHLO, STARTTLS and QUIT.
|
||||||
|
|
||||||
<b>-v</b> Enable verbose Postfix logging. Specify more than once to
|
<b>-v</b> Enable verbose Postfix logging. Specify more than once to
|
||||||
increase the level of verbose logging.
|
increase the level of verbose logging.
|
||||||
|
|
||||||
<b>-w</b> Enable outgoing TLS wrapper mode, or SMTPS support. This is
|
<b>-w</b> Enable outgoing TLS wrapper mode, or SMTPS support. This is
|
||||||
typically provided on port 465 by servers that are compatible
|
typically provided on port 465 by servers that are compatible
|
||||||
with the ad-hoc SMTP in SSL protocol, rather than the standard
|
with the ad-hoc SMTP in SSL protocol, rather than the standard
|
||||||
STARTTLS protocol. The destination <i>domain</i>:<i>port</i> should of course
|
STARTTLS protocol. The destination <i>domain</i>:<i>port</i> should of course
|
||||||
provide such a service.
|
provide such a service.
|
||||||
|
|
||||||
<b>-X</b> Enable <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> mode. This is an unsupported mode, for pro-
|
<b>-X</b> Enable <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> mode. This is an unsupported mode, for pro-
|
||||||
gram development only.
|
gram development only.
|
||||||
|
|
||||||
[<b>inet:</b>]<i>domain</i>[:<i>port</i>]
|
[<b>inet:</b>]<i>domain</i>[:<i>port</i>]
|
||||||
Connect via TCP to domain <i>domain</i>, port <i>port</i>. The default port is
|
Connect via TCP to domain <i>domain</i>, port <i>port</i>. The default port is
|
||||||
<b>smtp</b> (or 24 with LMTP). With SMTP an MX lookup is performed to
|
<b>smtp</b> (or 24 with LMTP). With SMTP an MX lookup is performed to
|
||||||
resolve the domain to a host, unless the domain is enclosed in
|
resolve the domain to a host, unless the domain is enclosed in
|
||||||
<b>[]</b>. If you want to connect to a specific MX host, for instance
|
<b>[]</b>. If you want to connect to a specific MX host, for instance
|
||||||
<i>mx1.example.com</i>, specify [<i>mx1.example.com</i>] as the destination
|
<i>mx1.example.com</i>, specify [<i>mx1.example.com</i>] as the destination
|
||||||
and <i>example.com</i> as a <b>match</b> argument. When using DNS, the desti-
|
and <i>example.com</i> as a <b>match</b> argument. When using DNS, the desti-
|
||||||
nation domain is assumed fully qualified and no default domain
|
nation domain is assumed fully qualified and no <a href="ADDRESS_CLASS_README.html#default_domain_class">default domain</a>
|
||||||
or search suffixes are applied; you must use fully-qualified
|
or search suffixes are applied; you must use fully-qualified
|
||||||
names or also enable <b>native</b> host lookups (these don't support
|
names or also enable <b>native</b> host lookups (these don't support
|
||||||
<b>dane</b> or <b>dane-only</b> as no DNSSEC validation information is avail-
|
<b>dane</b> or <b>dane-only</b> as no DNSSEC validation information is avail-
|
||||||
able via <b>native</b> lookups).
|
able via <b>native</b> lookups).
|
||||||
|
|
||||||
<b>unix:</b><i>pathname</i>
|
<b>unix:</b><i>pathname</i>
|
||||||
@ -321,8 +321,8 @@ POSTTLS-FINGER(1) General Commands Manual POSTTLS-FINGER(1)
|
|||||||
<b>match ...</b>
|
<b>match ...</b>
|
||||||
With no match arguments specified, certificate peername matching
|
With no match arguments specified, certificate peername matching
|
||||||
uses the compiled-in default strategies for each security level.
|
uses the compiled-in default strategies for each security level.
|
||||||
If you specify one or more arguments, these will be used as the
|
If you specify one or more arguments, these will be used as the
|
||||||
list of certificate or public-key digests to match for the <b>fin-</b>
|
list of certificate or public-key digests to match for the <b>fin-</b>
|
||||||
<b>gerprint</b> level, or as the list of DNS names to match in the cer-
|
<b>gerprint</b> level, or as the list of DNS names to match in the cer-
|
||||||
tificate at the <b>verify</b> and <b>secure</b> levels. If the security level
|
tificate at the <b>verify</b> and <b>secure</b> levels. If the security level
|
||||||
is <b>dane</b>, or <b>dane-only</b> the match names are ignored, and <b>hostname,</b>
|
is <b>dane</b>, or <b>dane-only</b> the match names are ignored, and <b>hostname,</b>
|
||||||
|
@ -508,9 +508,9 @@ SMTP(8) SMTP(8)
|
|||||||
policy by next-hop destination; when a non-empty value is speci-
|
policy by next-hop destination; when a non-empty value is speci-
|
||||||
fied, this overrides the obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter.
|
fied, this overrides the obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (see 'postconf -d' output)</b>
|
||||||
List of SSL/TLS protocols that the Postfix SMTP client will use
|
TLS protocols that the Postfix SMTP client will use with manda-
|
||||||
with mandatory TLS encryption.
|
tory TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (9)</b>
|
<b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (9)</b>
|
||||||
The verification depth for remote SMTP server certificates.
|
The verification depth for remote SMTP server certificates.
|
||||||
@ -573,9 +573,9 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a> (see postconf -d output)</b>
|
||||||
List of TLS protocols that the Postfix SMTP client will exclude
|
TLS protocols that the Postfix SMTP client will use with oppor-
|
||||||
or include with opportunistic TLS encryption.
|
tunistic TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> (medium)</b>
|
<b><a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a> (medium)</b>
|
||||||
The minimum TLS cipher grade that the Postfix SMTP client will
|
The minimum TLS cipher grade that the Postfix SMTP client will
|
||||||
|
@ -475,9 +475,9 @@ SMTPD(8) SMTPD(8)
|
|||||||
Postfix SMTP server cipher list at mandatory TLS security lev-
|
Postfix SMTP server cipher list at mandatory TLS security lev-
|
||||||
els.
|
els.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> (see 'postconf -d' output)</b>
|
||||||
The SSL/TLS protocols accepted by the Postfix SMTP server with
|
TLS protocols accepted by the Postfix SMTP server with mandatory
|
||||||
mandatory TLS encryption.
|
TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_tls_received_header">smtpd_tls_received_header</a> (no)</b>
|
<b><a href="postconf.5.html#smtpd_tls_received_header">smtpd_tls_received_header</a> (no)</b>
|
||||||
Request that the Postfix SMTP server produces Received: message
|
Request that the Postfix SMTP server produces Received: message
|
||||||
@ -524,9 +524,9 @@ SMTPD(8) SMTPD(8)
|
|||||||
|
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> (!SSLv2, !SSLv3)</b>
|
<b><a href="postconf.5.html#smtpd_tls_protocols">smtpd_tls_protocols</a> (see postconf -d output)</b>
|
||||||
List of TLS protocols that the Postfix SMTP server will exclude
|
TLS protocols accepted by the Postfix SMTP server with oppor-
|
||||||
or include with opportunistic TLS encryption.
|
tunistic TLS encryption.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtpd_tls_ciphers">smtpd_tls_ciphers</a> (medium)</b>
|
<b><a href="postconf.5.html#smtpd_tls_ciphers">smtpd_tls_ciphers</a> (medium)</b>
|
||||||
The minimum TLS cipher grade that the Postfix SMTP server will
|
The minimum TLS cipher grade that the Postfix SMTP server will
|
||||||
|
@ -230,8 +230,8 @@ Specify zero or more times to override the value of the main.cf
|
|||||||
parameter \fIname\fR with \fIvalue\fR. Possible use\-cases include
|
parameter \fIname\fR with \fIvalue\fR. Possible use\-cases include
|
||||||
overriding the values of TLS library parameters, or "myhostname" to
|
overriding the values of TLS library parameters, or "myhostname" to
|
||||||
configure the SMTP EHLO name sent to the remote server.
|
configure the SMTP EHLO name sent to the remote server.
|
||||||
.IP "\fB\-p \fIprotocols\fR (default: !SSLv2)"
|
.IP "\fB\-p \fIprotocols\fR (default: >=TLSv1)"
|
||||||
List of TLS protocols that posttls\-finger will exclude or include. See
|
TLS protocols that posttls\-finger will exclude or include. See
|
||||||
smtp_tls_mandatory_protocols for details.
|
smtp_tls_mandatory_protocols for details.
|
||||||
.IP "\fB\-P \fICApath/\fR (default: none)"
|
.IP "\fB\-P \fICApath/\fR (default: none)"
|
||||||
The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
|
The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
|
||||||
|
@ -3242,7 +3242,7 @@ The LMTP\-specific version of the smtp_tls_mandatory_exclude_ciphers
|
|||||||
configuration parameter. See there for details.
|
configuration parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH lmtp_tls_mandatory_protocols (default: !SSLv2, !SSLv3)
|
.SH lmtp_tls_mandatory_protocols (default: see postconf \-d output)
|
||||||
The LMTP\-specific version of the smtp_tls_mandatory_protocols
|
The LMTP\-specific version of the smtp_tls_mandatory_protocols
|
||||||
configuration parameter. See there for details.
|
configuration parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
@ -3262,7 +3262,7 @@ The LMTP\-specific version of the smtp_tls_policy_maps
|
|||||||
configuration parameter. See there for details.
|
configuration parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH lmtp_tls_protocols (default: !SSLv2, !SSLv3)
|
.SH lmtp_tls_protocols (default: see postconf \-d output)
|
||||||
The LMTP\-specific version of the smtp_tls_protocols configuration
|
The LMTP\-specific version of the smtp_tls_protocols configuration
|
||||||
parameter. See there for details.
|
parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
@ -8373,78 +8373,102 @@ specified on a per\-destination basis via the TLS policy "exclude"
|
|||||||
attribute. See smtp_tls_policy_maps for notes and examples.
|
attribute. See smtp_tls_policy_maps for notes and examples.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH smtp_tls_mandatory_protocols (default: !SSLv2, !SSLv3)
|
.SH smtp_tls_mandatory_protocols (default: see "postconf \-d" output)
|
||||||
List of SSL/TLS protocols that the Postfix SMTP client will use with
|
TLS protocols that the Postfix SMTP client will use with mandatory
|
||||||
mandatory TLS encryption. In main.cf the values are separated by
|
TLS encryption. In main.cf the values are separated by whitespace,
|
||||||
whitespace, commas or colons. In the policy table "protocols" attribute
|
commas or colons. In the policy table "protocols" attribute (see
|
||||||
(see smtp_tls_policy_maps) the only valid separator is colon. An
|
smtp_tls_policy_maps) the only valid separator is colon. An empty value
|
||||||
empty value means allow all protocols. The valid protocol names, (see
|
means allow all protocols.
|
||||||
\\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3" and "TLSv1". The
|
|
||||||
default value is "!SSLv2, !SSLv3" for Postfix releases after the
|
|
||||||
middle of 2015, "!SSLv2" for older releases.
|
|
||||||
.PP
|
.PP
|
||||||
With Postfix >= 2.5 the parameter syntax was expanded to support
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"smtp_tls_mandatory_protocols = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below.
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics.
|
|
||||||
.PP
|
.PP
|
||||||
The range of protocols advertised by an SSL/TLS client must be
|
As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set a lowest acceptable TLS protocol version
|
||||||
higher version implicitly disables all versions above that higher version.
|
and/or a highest acceptable TLS protocol version. To set the lower
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
bound include an element of the form: ">=\fIversion\fR" where
|
||||||
and SSLv3):
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number.
|
||||||
|
.PP
|
||||||
|
Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version.
|
||||||
|
.PP
|
||||||
|
Hexadecimal example (Postfix >= 3.6):
|
||||||
.sp
|
.sp
|
||||||
.in +4
|
.in +4
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !TLSv1
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
smtp_tls_mandatory_protocols = >=0x0303
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
.in -4
|
.in -4
|
||||||
also disables any protocols version higher than TLSv1 leaving
|
|
||||||
only "SSLv3" enabled.
|
|
||||||
.PP
|
.PP
|
||||||
Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
and "TLSv1.2". When Postfix <= 2.5 is linked against OpenSSL 1.0.1
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
or later, these, or any other new protocol versions, cannot be
|
To require at least TLS 1.0, set "smtp_tls_mandatory_protocols = !SSLv2,
|
||||||
disabled except by also disabling "TLSv1" (typically leaving just
|
!SSLv3". Listing the protocols to include, rather than protocols to
|
||||||
"SSLv3"). The latest patch levels of Postfix >= 2.6, and all
|
exclude, is supported, but not recommended. The exclusion syntax more
|
||||||
versions of Postfix >= 2.10 can explicitly disable support for
|
accurately matches the underlying OpenSSL interface.
|
||||||
"TLSv1.1" or "TLSv1.2".
|
|
||||||
.PP
|
.PP
|
||||||
OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
When using the exclusion syntax, take care to ensure that the range
|
||||||
>= 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
of protocols supported by the Postfixm SMTP client is contiguous. When
|
||||||
this can be disabled, if need be, via "!TLSv1.3".
|
a protocol version is enabled, disabling any higher version implicitly
|
||||||
|
disables all versions above that higher version. Thus, for example:
|
||||||
|
.sp
|
||||||
|
.in +4
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
.ft C
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.ft R
|
||||||
|
.in -4
|
||||||
.PP
|
.PP
|
||||||
At the dane and
|
also disables any protocols version higher than TLSv1.1 leaving
|
||||||
dane\-only security
|
only "TLSv1" enabled.
|
||||||
levels, when usable TLSA records are obtained for the remote SMTP
|
.PP
|
||||||
server, the Postfix SMTP client is obligated to include the SNI TLS
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
extension in its SSL client hello message. This may help the remote
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
SMTP server live up to its promise to provide a certificate that
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
||||||
matches its TLSA records. Since TLS extensions require TLS 1.0 or
|
.PP
|
||||||
later, the Postfix SMTP client must disable "SSLv2" and "SSLv3" when
|
While the vast majority of SMTP servers with DANE TLSA records now
|
||||||
SNI is required. If you use "dane" or "dane\-only" do not disable
|
support at least TLS 1.2, a few still only support TLS 1.0. If you use
|
||||||
TLSv1, except perhaps via the policy table for destinations which
|
"dane" or "dane\-only" it is best to not disable TLSv1, except perhaps
|
||||||
you are sure will support "TLSv1.1" or "TLSv1.2".
|
via the policy table for destinations which you are sure will support
|
||||||
|
"TLSv1.2".
|
||||||
.PP
|
.PP
|
||||||
See the documentation of the smtp_tls_policy_maps parameter and
|
See the documentation of the smtp_tls_policy_maps parameter and
|
||||||
TLS_README for more information about security levels.
|
TLS_README for more information about security levels.
|
||||||
.PP
|
.PP
|
||||||
Example:
|
Example:
|
||||||
.PP
|
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
# Preferred syntax with Postfix >= 2.5:
|
# Preferred syntax with Postfix >= 3.6:
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtp_tls_mandatory_protocols = TLSv1
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
@ -8716,59 +8740,91 @@ DNS forgery. Do not use the \fBhostname\fR strategy for secure\-channel
|
|||||||
configurations in environments where DNS security is not assured.
|
configurations in environments where DNS security is not assured.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH smtp_tls_protocols (default: !SSLv2, !SSLv3)
|
.SH smtp_tls_protocols (default: see postconf \-d output)
|
||||||
List of TLS protocols that the Postfix SMTP client will exclude or
|
TLS protocols that the Postfix SMTP client will use with
|
||||||
include with opportunistic TLS encryption. The default value is
|
opportunistic TLS encryption. In main.cf the values are separated by
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
whitespace, commas or colons. In the policy table "protocols" attribute
|
||||||
"!SSLv2" for older releases. Before Postfix 2.6, the Postfix SMTP
|
(see smtp_tls_policy_maps) the only valid separator is colon. An empty
|
||||||
client would use all protocols with opportunistic TLS.
|
value means allow all protocols.
|
||||||
.PP
|
.PP
|
||||||
In main.cf the values are separated by whitespace, commas or
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
||||||
colons. In the policy table (see smtp_tls_policy_maps) the only valid
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
separator is colon. An empty value means allow all protocols. The valid
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
protocol names, (see \\fBfBSSL_get_version\fR(3)\fR), are "SSLv2", "SSLv3"
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
and "TLSv1".
|
use the "!" exclusion syntax, also described below.
|
||||||
.PP
|
.PP
|
||||||
The range of protocols advertised by an SSL/TLS client must be
|
As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
higher version implicitly disables all versions above that higher version.
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
||||||
and SSLv3):
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number.
|
||||||
|
.PP
|
||||||
|
Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version.
|
||||||
|
.PP
|
||||||
|
Hexadecimal example (Postfix >= 3.6):
|
||||||
.sp
|
.sp
|
||||||
.in +4
|
.in +4
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
smtp_tls_protocols = !SSLv2, !TLSv1
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtp_tls_protocols = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
smtp_tls_protocols = >=0x0301
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
.in -4
|
.in -4
|
||||||
also disables any protocols version higher than TLSv1 leaving
|
|
||||||
only "SSLv3" enabled.
|
|
||||||
.PP
|
.PP
|
||||||
Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
and "TLSv1.2". The latest patch levels of Postfix >= 2.6, and all
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
versions of Postfix >= 2.10 can explicitly disable support for
|
To require at least TLS 1.0, set "smtp_tls_protocols = !SSLv2, !SSLv3".
|
||||||
"TLSv1.1" or "TLSv1.2"
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface.
|
||||||
.PP
|
.PP
|
||||||
OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
When using the exclusion syntax, take care to ensure that the range of
|
||||||
>= 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
protocols advertised by an SSL/TLS client is contiguous. When a protocol
|
||||||
this can be disabled, if need be, via "!TLSv1.3".
|
version is enabled, disabling any higher version implicitly disables all
|
||||||
|
versions above that higher version. Thus, for example:
|
||||||
|
.sp
|
||||||
|
.in +4
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
.ft C
|
||||||
|
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.ft R
|
||||||
|
.in -4
|
||||||
|
also disables any protocols version higher than TLSv1.1 leaving
|
||||||
|
only "TLSv1" enabled.
|
||||||
.PP
|
.PP
|
||||||
To include a protocol list its name, to exclude it, prefix the name
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
with a "!" character. To exclude SSLv2 for opportunistic TLS set
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
"smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
||||||
"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 underlying
|
|
||||||
OpenSSL interface semantics.
|
|
||||||
.PP
|
.PP
|
||||||
Example:
|
Example:
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
# TLSv1 or better:
|
# Preferred syntax with Postfix >= 3.6:
|
||||||
|
smtp_tls_protocols = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
@ -8947,12 +9003,13 @@ smtp_tls_security_level = none
|
|||||||
.ft C
|
.ft C
|
||||||
# Opportunistic TLS.
|
# Opportunistic TLS.
|
||||||
smtp_tls_security_level = may
|
smtp_tls_security_level = may
|
||||||
# Postfix >= 2.6:
|
|
||||||
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
||||||
# to do so (if a security vulnerability is found in the SSL library that
|
# to do so (if a security vulnerability is found in the SSL library that
|
||||||
# can be mitigated by disabling a particular protocol or raising the
|
# can be mitigated by disabling a particular protocol or raising the
|
||||||
# cipher grade from "export" to "low" or "medium").
|
# cipher grade).
|
||||||
smtp_tls_ciphers = export
|
smtp_tls_ciphers = medium
|
||||||
|
smtp_tls_protocols = >=TLSv1
|
||||||
|
# Legacy (Postfix < 3.6) syntax:
|
||||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
@ -8971,22 +9028,12 @@ smtp_tls_mandatory_ciphers = high
|
|||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
# Mandatory TLS verification of hostname or nexthop domain.
|
# Authenticated TLS 1.2 or better matching the nexthop domain or a
|
||||||
smtp_tls_security_level = verify
|
# subdomain.
|
||||||
smtp_tls_mandatory_ciphers = high
|
|
||||||
smtp_tls_verify_cert_match = hostname, nexthop, dot\-nexthop
|
|
||||||
.fi
|
|
||||||
.ad
|
|
||||||
.ft R
|
|
||||||
.PP
|
|
||||||
.nf
|
|
||||||
.na
|
|
||||||
.ft C
|
|
||||||
# Secure channel TLS with exact nexthop name match.
|
|
||||||
smtp_tls_security_level = secure
|
smtp_tls_security_level = secure
|
||||||
smtp_tls_mandatory_protocols = TLSv1
|
|
||||||
smtp_tls_mandatory_ciphers = high
|
smtp_tls_mandatory_ciphers = high
|
||||||
smtp_tls_secure_cert_match = nexthop
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
|
smtp_tls_secure_cert_match = nexthop, dot\-nexthop
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
@ -8997,15 +9044,15 @@ smtp_tls_secure_cert_match = nexthop
|
|||||||
# Certificate fingerprint verification (Postfix >= 2.5).
|
# Certificate fingerprint verification (Postfix >= 2.5).
|
||||||
# The CA\-less "fingerprint" security level only scales to a limited
|
# The CA\-less "fingerprint" security level only scales to a limited
|
||||||
# number of destinations. As a global default rather than a per\-site
|
# number of destinations. As a global default rather than a per\-site
|
||||||
# setting, this is practical when mail for all recipients is sent
|
# setting, this is practical only when mail for all recipients is sent
|
||||||
# to a central mail hub.
|
# to a central mail hub.
|
||||||
relayhost = [mailhub.example.com]
|
relayhost = [mailhub.example.com]
|
||||||
smtp_tls_security_level = fingerprint
|
smtp_tls_security_level = fingerprint
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
smtp_tls_mandatory_ciphers = high
|
smtp_tls_mandatory_ciphers = high
|
||||||
smtp_tls_fingerprint_cert_match =
|
smtp_tls_fingerprint_cert_match =
|
||||||
3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
|
3D:95:34:51:...:40:99:C0:C1
|
||||||
EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
|
EC:3B:2D:B0:...:A3:9D:72:F6
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
@ -12280,80 +12327,147 @@ works in addition to the exclusions listed with smtpd_tls_exclude_ciphers
|
|||||||
(see there for syntax details).
|
(see there for syntax details).
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH smtpd_tls_mandatory_protocols (default: !SSLv2, !SSLv3)
|
.SH smtpd_tls_mandatory_protocols (default: see "postconf \-d" output)
|
||||||
The SSL/TLS protocols accepted by the Postfix SMTP server with
|
TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
||||||
mandatory TLS encryption. If the list is empty, the server supports
|
encryption. If the list is empty, the server supports all available TLS
|
||||||
all available SSL/TLS protocol versions. A non\-empty value is a
|
protocol versions. A non\-empty value is a list of protocol names to
|
||||||
list of protocol names separated by whitespace, commas or colons.
|
include or exclude, separated by whitespace, commas or colons.
|
||||||
The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and
|
|
||||||
are not case sensitive. The default value is "!SSLv2, !SSLv3" for
|
|
||||||
Postfix releases after the middle of 2015, "!SSLv2" for older
|
|
||||||
releases.
|
|
||||||
.PP
|
.PP
|
||||||
With Postfix >= 2.5 the parameter syntax was expanded to support
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"smtpd_tls_mandatory_protocols = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below.
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics.
|
|
||||||
.PP
|
.PP
|
||||||
Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
As of Postfix 3.6, the preferred way to limit the range of
|
||||||
and "TLSv1.2". When Postfix <= 2.5 is linked against OpenSSL 1.0.1
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
or later, these, or any other new protocol versions, cannot be
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
disabled. The latest patch levels of Postfix >= 2.6, and all
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
||||||
versions of Postfix >= 2.10 can disable support for "TLSv1.1" or
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
||||||
"TLSv1.2".
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number.
|
||||||
.PP
|
.PP
|
||||||
OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
>= 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
this can be disabled, if need be, via "!TLSv1.3".
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version.
|
||||||
|
.PP
|
||||||
|
Hexadecimal example (Postfix >= 3.6):
|
||||||
|
.sp
|
||||||
|
.in +4
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
.ft C
|
||||||
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
smtpd_tls_mandatory_protocols = >=0x0303
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.ft R
|
||||||
|
.in -4
|
||||||
|
.PP
|
||||||
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, 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 accurately matches the underlying OpenSSL interface.
|
||||||
|
.PP
|
||||||
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
||||||
.PP
|
.PP
|
||||||
Example:
|
Example:
|
||||||
.PP
|
.PP
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
# Preferred syntax with Postfix >= 2.5:
|
# Preferred syntax with Postfix >= 3.6:
|
||||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtpd_tls_mandatory_protocols = TLSv1
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
.ft R
|
.ft R
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH smtpd_tls_protocols (default: !SSLv2, !SSLv3)
|
.SH smtpd_tls_protocols (default: see postconf \-d output)
|
||||||
List of TLS protocols that the Postfix SMTP server will exclude
|
TLS protocols accepted by the Postfix SMTP server with opportunistic
|
||||||
or include with opportunistic TLS encryption. The default value is
|
TLS encryption. If the list is empty, the server supports all available
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
TLS protocol versions. A non\-empty value is a list of protocol names to
|
||||||
empty for older releases allowing all protocols to be
|
include or exclude, separated by whitespace, commas or colons.
|
||||||
used with opportunistic TLS. A non\-empty value is a list of protocol
|
|
||||||
names separated by whitespace, commas or colons. The supported
|
|
||||||
protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case
|
|
||||||
sensitive.
|
|
||||||
.PP
|
.PP
|
||||||
Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
||||||
and "TLSv1.2". The latest patch levels of Postfix >= 2.6, and all
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
versions of Postfix >= 2.10 can disable support for "TLSv1.1" or
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"TLSv1.2".
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
|
use the "!" exclusion syntax, also described below.
|
||||||
.PP
|
.PP
|
||||||
OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
As of Postfix 3.6, the preferred way to limit the range of
|
||||||
>= 3.4 (or patch releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
this can be disabled, if need be, via "!TLSv1.3".
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
||||||
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number.
|
||||||
.PP
|
.PP
|
||||||
To include a protocol list its name, to exclude it, prefix the name
|
Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
with a "!" character. To exclude SSLv2 for opportunistic TLS set
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
"smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
"smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
include, rather than protocols to exclude, is supported, but not
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
recommended. The exclusion form more closely matches the underlying
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
OpenSSL interface semantics.
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version.
|
||||||
|
.PP
|
||||||
|
Hexadecimal example (Postfix >= 3.6):
|
||||||
|
.sp
|
||||||
|
.in +4
|
||||||
|
.nf
|
||||||
|
.na
|
||||||
|
.ft C
|
||||||
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtpd_tls_protocols = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
smtpd_tls_protocols = >=0x0301
|
||||||
|
.fi
|
||||||
|
.ad
|
||||||
|
.ft R
|
||||||
|
.in -4
|
||||||
|
.PP
|
||||||
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "smtpd_tls_protocols = !SSLv2, !SSLv3".
|
||||||
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface.
|
||||||
|
.PP
|
||||||
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
||||||
.PP
|
.PP
|
||||||
Example:
|
Example:
|
||||||
.nf
|
.nf
|
||||||
.na
|
.na
|
||||||
.ft C
|
.ft C
|
||||||
|
# Preferred syntax with Postfix >= 3.6:
|
||||||
|
smtpd_tls_protocols = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
smtpd_tls_protocols = !SSLv2, !SSLv3
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
.fi
|
.fi
|
||||||
.ad
|
.ad
|
||||||
@ -12845,7 +12959,7 @@ bug work\-arounds to disable.
|
|||||||
If the value of the parameter is a hexadecimal long integer starting
|
If the value of the parameter is a hexadecimal long integer starting
|
||||||
with "0x", the bug work\-arounds corresponding to the bits specified in
|
with "0x", the bug work\-arounds corresponding to the bits specified in
|
||||||
its value are removed from the \fBSSL_OP_ALL\fR work\-around bit\-mask
|
its value are removed from the \fBSSL_OP_ALL\fR work\-around bit\-mask
|
||||||
(see openssl/ssl.h and SSL_CTX_\fBset_options\fR(3)). You can specify more
|
(see openssl/ssl.h and \fBSSL_CTX_set_options\fR(3)). You can specify more
|
||||||
bits than are present in SSL_OP_ALL, excess bits are ignored. Specifying
|
bits than are present in SSL_OP_ALL, excess bits are ignored. Specifying
|
||||||
0xFFFFFFFF disables all bug\-workarounds on a 32\-bit system. This should
|
0xFFFFFFFF disables all bug\-workarounds on a 32\-bit system. This should
|
||||||
also be sufficient on 64\-bit systems, until OpenSSL abandons support
|
also be sufficient on 64\-bit systems, until OpenSSL abandons support
|
||||||
@ -12863,17 +12977,17 @@ OpenSSL 1.0.0.
|
|||||||
.br
|
.br
|
||||||
.IP "\fBDONT_INSERT_EMPTY_FRAGMENTS\fR"
|
.IP "\fBDONT_INSERT_EMPTY_FRAGMENTS\fR"
|
||||||
See
|
See
|
||||||
SSL_CTX_\fBset_options\fR(3)
|
\fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3)
|
See \fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBMICROSOFT_BIG_SSLV3_BUFFER\fR"
|
.IP "\fBMICROSOFT_BIG_SSLV3_BUFFER\fR"
|
||||||
See
|
See
|
||||||
SSL_CTX_\fBset_options\fR(3)
|
\fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBMICROSOFT_SESS_ID_BUG\fR"
|
.IP "\fBMICROSOFT_SESS_ID_BUG\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3)
|
See \fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBMSIE_SSLV2_RSA_PADDING\fR"
|
.IP "\fBMSIE_SSLV2_RSA_PADDING\fR"
|
||||||
also aliased as
|
also aliased as
|
||||||
@ -12882,7 +12996,7 @@ default with OpenSSL versions that may predate the fix. Fixed in
|
|||||||
OpenSSL 0.9.7h and OpenSSL 0.9.8a.
|
OpenSSL 0.9.7h and OpenSSL 0.9.8a.
|
||||||
.br
|
.br
|
||||||
.IP "\fBNETSCAPE_CHALLENGE_BUG\fR"
|
.IP "\fBNETSCAPE_CHALLENGE_BUG\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3)
|
See \fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBNETSCAPE_REUSE_CIPHER_CHANGE_BUG\fR"
|
.IP "\fBNETSCAPE_REUSE_CIPHER_CHANGE_BUG\fR"
|
||||||
also aliased
|
also aliased
|
||||||
@ -12892,25 +13006,25 @@ OpenSSL 0.9.8q and OpenSSL 1.0.0c.
|
|||||||
.br
|
.br
|
||||||
.IP "\fBSSLEAY_080_CLIENT_DH_BUG\fR"
|
.IP "\fBSSLEAY_080_CLIENT_DH_BUG\fR"
|
||||||
See
|
See
|
||||||
SSL_CTX_\fBset_options\fR(3)
|
\fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBSSLREF2_REUSE_CERT_TYPE_BUG\fR"
|
.IP "\fBSSLREF2_REUSE_CERT_TYPE_BUG\fR"
|
||||||
See
|
See
|
||||||
SSL_CTX_\fBset_options\fR(3)
|
\fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBTLS_BLOCK_PADDING_BUG\fR"
|
.IP "\fBTLS_BLOCK_PADDING_BUG\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3)
|
See \fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBTLS_D5_BUG\fR"
|
.IP "\fBTLS_D5_BUG\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3)
|
See \fBSSL_CTX_set_options\fR(3)
|
||||||
.br
|
.br
|
||||||
.IP "\fBTLS_ROLLBACK_BUG\fR"
|
.IP "\fBTLS_ROLLBACK_BUG\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3).
|
See \fBSSL_CTX_set_options\fR(3).
|
||||||
This is disabled in OpenSSL 0.9.7 and later. Nobody should still
|
This is disabled in OpenSSL 0.9.7 and later. Nobody should still
|
||||||
be using 0.9.6!
|
be using 0.9.6!
|
||||||
.br
|
.br
|
||||||
.IP "\fBTLSEXT_PADDING\fR"
|
.IP "\fBTLSEXT_PADDING\fR"
|
||||||
Postfix >= 3.4. See SSL_CTX_\fBset_options\fR(3).
|
Postfix >= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.br
|
.br
|
||||||
.PP
|
.PP
|
||||||
@ -13291,7 +13405,7 @@ solution.
|
|||||||
.PP
|
.PP
|
||||||
If the value of the parameter is a hexadecimal long integer
|
If the value of the parameter is a hexadecimal long integer
|
||||||
starting with "0x", the options corresponding to the bits specified
|
starting with "0x", the options corresponding to the bits specified
|
||||||
in its value are enabled (see openssl/ssl.h and SSL_CTX_\fBset_options\fR(3)).
|
in its value are enabled (see openssl/ssl.h and \fBSSL_CTX_set_options\fR(3)).
|
||||||
You can only enable options not already controlled by other Postfix
|
You can only enable options not already controlled by other Postfix
|
||||||
settings. For example, you cannot disable protocols or enable
|
settings. For example, you cannot disable protocols or enable
|
||||||
server cipher preference. Do not attempt to turn all features by
|
server cipher preference. Do not attempt to turn all features by
|
||||||
@ -13301,16 +13415,16 @@ if/when they're no longer enabled by default. The supported values
|
|||||||
include:
|
include:
|
||||||
.IP "\fBENABLE_MIDDLEBOX_COMPAT\fR"
|
.IP "\fBENABLE_MIDDLEBOX_COMPAT\fR"
|
||||||
Postfix >= 3.4. See
|
Postfix >= 3.4. See
|
||||||
SSL_CTX_\fBset_options\fR(3).
|
\fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
||||||
See SSL_CTX_\fBset_options\fR(3).
|
See \fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.IP "\fBNO_TICKET\fR"
|
.IP "\fBNO_TICKET\fR"
|
||||||
Enabled by default when needed in
|
Enabled by default when needed in
|
||||||
fully\-patched Postfix >= 2.7. Not needed at all for Postfix >=
|
fully\-patched Postfix >= 2.7. Not needed at all for Postfix >=
|
||||||
2.11, unless for some reason you do not want to support TLS session
|
2.11, unless for some reason you do not want to support TLS session
|
||||||
resumption. Best not set explicitly. See SSL_CTX_\fBset_options\fR(3).
|
resumption. Best not set explicitly. See \fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.IP "\fBNO_COMPRESSION\fR"
|
.IP "\fBNO_COMPRESSION\fR"
|
||||||
Disable SSL compression even if
|
Disable SSL compression even if
|
||||||
@ -13320,14 +13434,14 @@ and compression before encryption does not always improve security.
|
|||||||
.IP "\fBNO_RENEGOTIATION\fR"
|
.IP "\fBNO_RENEGOTIATION\fR"
|
||||||
Postfix >= 3.4. This can
|
Postfix >= 3.4. This can
|
||||||
reduce opportunities for a potential CPU exhaustion attack. See
|
reduce opportunities for a potential CPU exhaustion attack. See
|
||||||
SSL_CTX_\fBset_options\fR(3).
|
\fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.IP "\fBNO_SESSION_RESUMPTION_ON_RENEGOTIATION\fR"
|
.IP "\fBNO_SESSION_RESUMPTION_ON_RENEGOTIATION\fR"
|
||||||
Postfix
|
Postfix
|
||||||
>= 3.4. See SSL_CTX_\fBset_options\fR(3).
|
>= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.IP "\fBPRIORITIZE_CHACHA\fR"
|
.IP "\fBPRIORITIZE_CHACHA\fR"
|
||||||
Postfix >= 3.4. See SSL_CTX_\fBset_options\fR(3).
|
Postfix >= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
||||||
.br
|
.br
|
||||||
.br
|
.br
|
||||||
.PP
|
.PP
|
||||||
|
@ -482,9 +482,9 @@ when TLS is not already enabled for that server.
|
|||||||
Optional lookup tables with the Postfix SMTP client TLS security
|
Optional lookup tables with the Postfix SMTP client TLS security
|
||||||
policy by next\-hop destination; when a non\-empty value is specified,
|
policy by next\-hop destination; when a non\-empty value is specified,
|
||||||
this overrides the obsolete smtp_tls_per_site parameter.
|
this overrides the obsolete smtp_tls_per_site parameter.
|
||||||
.IP "\fBsmtp_tls_mandatory_protocols (!SSLv2, !SSLv3)\fR"
|
.IP "\fBsmtp_tls_mandatory_protocols (see 'postconf -d' output)\fR"
|
||||||
List of SSL/TLS protocols that the Postfix SMTP client will use with
|
TLS protocols that the Postfix SMTP client will use with mandatory
|
||||||
mandatory TLS encryption.
|
TLS encryption.
|
||||||
.IP "\fBsmtp_tls_scert_verifydepth (9)\fR"
|
.IP "\fBsmtp_tls_scert_verifydepth (9)\fR"
|
||||||
The verification depth for remote SMTP server certificates.
|
The verification depth for remote SMTP server certificates.
|
||||||
.IP "\fBsmtp_tls_secure_cert_match (nexthop, dot\-nexthop)\fR"
|
.IP "\fBsmtp_tls_secure_cert_match (nexthop, dot\-nexthop)\fR"
|
||||||
@ -532,9 +532,9 @@ The message digest algorithm used to construct remote SMTP server
|
|||||||
certificate fingerprints.
|
certificate fingerprints.
|
||||||
.PP
|
.PP
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
.IP "\fBsmtp_tls_protocols (!SSLv2, !SSLv3)\fR"
|
.IP "\fBsmtp_tls_protocols (see postconf -d output)\fR"
|
||||||
List of TLS protocols that the Postfix SMTP client will exclude or
|
TLS protocols that the Postfix SMTP client will use with
|
||||||
include with opportunistic TLS encryption.
|
opportunistic TLS encryption.
|
||||||
.IP "\fBsmtp_tls_ciphers (medium)\fR"
|
.IP "\fBsmtp_tls_ciphers (medium)\fR"
|
||||||
The minimum TLS cipher grade that the Postfix SMTP client
|
The minimum TLS cipher grade that the Postfix SMTP client
|
||||||
will use with opportunistic TLS encryption.
|
will use with opportunistic TLS encryption.
|
||||||
|
@ -439,9 +439,9 @@ use with mandatory TLS encryption.
|
|||||||
.IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR"
|
.IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR"
|
||||||
Additional list of ciphers or cipher types to exclude from the
|
Additional list of ciphers or cipher types to exclude from the
|
||||||
Postfix SMTP server cipher list at mandatory TLS security levels.
|
Postfix SMTP server cipher list at mandatory TLS security levels.
|
||||||
.IP "\fBsmtpd_tls_mandatory_protocols (!SSLv2, !SSLv3)\fR"
|
.IP "\fBsmtpd_tls_mandatory_protocols (see 'postconf -d' output)\fR"
|
||||||
The SSL/TLS protocols accepted by the Postfix SMTP server with
|
TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
||||||
mandatory TLS encryption.
|
encryption.
|
||||||
.IP "\fBsmtpd_tls_received_header (no)\fR"
|
.IP "\fBsmtpd_tls_received_header (no)\fR"
|
||||||
Request that the Postfix SMTP server produces Received: message
|
Request that the Postfix SMTP server produces Received: message
|
||||||
headers that include information about the protocol and cipher used,
|
headers that include information about the protocol and cipher used,
|
||||||
@ -476,9 +476,9 @@ fingerprints or public key fingerprints (Postfix 2.9 and later) for
|
|||||||
\fBcheck_ccert_access\fR and \fBpermit_tls_clientcerts\fR.
|
\fBcheck_ccert_access\fR and \fBpermit_tls_clientcerts\fR.
|
||||||
.PP
|
.PP
|
||||||
Available in Postfix version 2.6 and later:
|
Available in Postfix version 2.6 and later:
|
||||||
.IP "\fBsmtpd_tls_protocols (!SSLv2, !SSLv3)\fR"
|
.IP "\fBsmtpd_tls_protocols (see postconf -d output)\fR"
|
||||||
List of TLS protocols that the Postfix SMTP server will exclude
|
TLS protocols accepted by the Postfix SMTP server with opportunistic
|
||||||
or include with opportunistic TLS encryption.
|
TLS encryption.
|
||||||
.IP "\fBsmtpd_tls_ciphers (medium)\fR"
|
.IP "\fBsmtpd_tls_ciphers (medium)\fR"
|
||||||
The minimum TLS cipher grade that the Postfix SMTP server
|
The minimum TLS cipher grade that the Postfix SMTP server
|
||||||
will use with opportunistic TLS encryption.
|
will use with opportunistic TLS encryption.
|
||||||
|
@ -88,7 +88,7 @@ while(<>) {
|
|||||||
$block =~ s/\s+\n/\n/g;
|
$block =~ s/\s+\n/\n/g;
|
||||||
$block =~ s/^\n//g;
|
$block =~ s/^\n//g;
|
||||||
$block =~ s/\s*<\s*nroffescape\s+([^ >]+)\s*>\s*/\n\1\n/g;
|
$block =~ s/\s*<\s*nroffescape\s+([^ >]+)\s*>\s*/\n\1\n/g;
|
||||||
$block =~ s/([a-z][_a-zA-Z0-9-]*)(\([0-9]\))/\\fB\1\\fR\2/g;
|
$block =~ s/([A-Za-z][_a-zA-Z0-9-]*)(\([0-9]\))/\\fB\1\\fR\2/g;
|
||||||
print $block;
|
print $block;
|
||||||
$wantpp = !($block =~ /^\.(SH|IP)/);
|
$wantpp = !($block =~ /^\.(SH|IP)/);
|
||||||
}
|
}
|
||||||
|
@ -179,10 +179,10 @@ configurations will not accidentally enable TLS without certificates. </p>
|
|||||||
|
|
||||||
<p> Note that server certificates are <b>not</b> optional in TLS 1.3. To
|
<p> Note that server certificates are <b>not</b> optional in TLS 1.3. To
|
||||||
run without certificates you'd have to disable the TLS 1.3 protocol by
|
run without certificates you'd have to disable the TLS 1.3 protocol by
|
||||||
including '!TLSv1.3' in "smtpd_tls_protocols" and perhaps also
|
including "<=TLSv1.2" (or, for Postfix < 3.6, "!TLSv1.3") in
|
||||||
"smtpd_tls_mandatory_protocols". It is simpler instead to just
|
"smtpd_tls_protocols" and perhaps also "smtpd_tls_mandatory_protocols".
|
||||||
configure a certificate chain. Certificate-less operation is not
|
It is simpler instead to just configure a certificate chain.
|
||||||
recommended. <p>
|
Certificate-less operation is not recommended. <p>
|
||||||
|
|
||||||
<p> RSA, DSA and ECDSA (Postfix ≥ 2.6) certificates are supported.
|
<p> RSA, DSA and ECDSA (Postfix ≥ 2.6) certificates are supported.
|
||||||
Most sites only have RSA certificates. You can configure all three
|
Most sites only have RSA certificates. You can configure all three
|
||||||
@ -891,7 +891,7 @@ after the middle of 2015; older releases only disable SSLv2 for
|
|||||||
mandatory TLS. The mandatory TLS protocol list is specified via the
|
mandatory TLS. The mandatory TLS protocol list is specified via the
|
||||||
smtpd_tls_mandatory_protocols configuration parameter. The
|
smtpd_tls_mandatory_protocols configuration parameter. The
|
||||||
smtpd_tls_protocols parameter (Postfix ≥ 2.6)
|
smtpd_tls_protocols parameter (Postfix ≥ 2.6)
|
||||||
controls the SSL/TLS protocols used with opportunistic TLS. </p>
|
controls the TLS protocols used with opportunistic TLS. </p>
|
||||||
|
|
||||||
<p> Note that the OpenSSL library only supports protocol exclusion
|
<p> Note that the OpenSSL library only supports protocol exclusion
|
||||||
(not inclusion). For this reason, Postfix can exclude only protocols
|
(not inclusion). For this reason, Postfix can exclude only protocols
|
||||||
@ -909,8 +909,8 @@ that TLSv1.3 be explicitly disabled. Therefore, they are not
|
|||||||
recommended, it is better and simpler to just configure a suitable
|
recommended, it is better and simpler to just configure a suitable
|
||||||
certificate. </p>
|
certificate. </p>
|
||||||
|
|
||||||
<p> Example, MSA that requires TLSv1 or higher, not SSLv2 or SSLv3,
|
<p> Example, MSA that requires TLSv1.2 or higher, with high grade
|
||||||
with high grade ciphers: </p>
|
ciphers: </p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
@ -920,10 +920,10 @@ with high grade ciphers: </p>
|
|||||||
smtpd_tls_mandatory_ciphers = high
|
smtpd_tls_mandatory_ciphers = high
|
||||||
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5
|
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5
|
||||||
smtpd_tls_security_level = encrypt
|
smtpd_tls_security_level = encrypt
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtpd_tls_mandatory_protocols = >=TLSv1.2
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtpd_tls_mandatory_protocols = TLSv1
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -1263,9 +1263,10 @@ just in case the transport table entries are not specified consistently. </p>
|
|||||||
submission 587/tcp msa # mail message submission
|
submission 587/tcp msa # mail message submission
|
||||||
|
|
||||||
/etc/postfix/tls_policy:
|
/etc/postfix/tls_policy:
|
||||||
[example.net]:587 encrypt protocols=TLSv1 ciphers=high
|
# Postfix ≥ 3.6 "protocols" syntax
|
||||||
[example.net]:msa encrypt protocols=TLSv1 ciphers=high
|
[example.net]:587 encrypt protocols=>=TLSv1.2 ciphers=high
|
||||||
[example.net]:submission encrypt protocols=TLSv1 ciphers=high
|
# Legacy "protocols" syntax
|
||||||
|
[example.net]:msa encrypt protocols=!SSLv2:!SSLv3 ciphers=high
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -2398,8 +2399,10 @@ Example:
|
|||||||
[thumb.example.org] fingerprint
|
[thumb.example.org] fingerprint
|
||||||
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
match=b6:b4:72:34:e2:59:cd:fb:...:0d:4d:cc:2c:7d:84:de:e6:2f
|
||||||
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
match=51:e9:af:2e:1e:40:1f:de:...:35:2d:09:16:31:5a:eb:82:76
|
||||||
# Postfix 2.6 and later
|
# Postfix ≥ 3.6 "protocols" syntax
|
||||||
example.info may protocols=!SSLv2 ciphers=medium exclude=3DES
|
example.info may protocols=>=TLSv1 ciphers=medium exclude=3DES
|
||||||
|
# Legacy protocols syntax
|
||||||
|
example.info may protocols=!SSLv2:!SSLv3 ciphers=medium exclude=3DES
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@ -2494,7 +2497,7 @@ SMTP client will by default disable SSLv2 and SSLv3. The mandatory
|
|||||||
TLS protocol list is specified via the
|
TLS protocol list is specified via the
|
||||||
smtp_tls_mandatory_protocols configuration parameter. The corresponding
|
smtp_tls_mandatory_protocols configuration parameter. The corresponding
|
||||||
smtp_tls_protocols parameter (Postfix ≥ 2.6) controls
|
smtp_tls_protocols parameter (Postfix ≥ 2.6) controls
|
||||||
the SSL/TLS protocols used with opportunistic TLS. </p>
|
the TLS protocols used with opportunistic TLS. </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
@ -2504,13 +2507,13 @@ the SSL/TLS protocols used with opportunistic TLS. </p>
|
|||||||
smtp_tls_mandatory_ciphers = medium
|
smtp_tls_mandatory_ciphers = medium
|
||||||
smtp_tls_mandatory_exclude_ciphers = RC4, MD5
|
smtp_tls_mandatory_exclude_ciphers = RC4, MD5
|
||||||
smtp_tls_exclude_ciphers = aNULL
|
smtp_tls_exclude_ciphers = aNULL
|
||||||
# Preferred form with Postfix ≥ 2.5:
|
|
||||||
smtp_tls_mandatory_protocols = !SSLv2
|
|
||||||
# Legacy form for Postfix < 2.5:
|
|
||||||
smtp_tls_mandatory_protocols = SSLv3, TLSv1
|
|
||||||
# Also available with Postfix ≥ 2.6:
|
|
||||||
smtp_tls_ciphers = medium
|
smtp_tls_ciphers = medium
|
||||||
smtp_tls_protocols = !SSLv2
|
# Preferred form with Postfix ≥ 3.6:
|
||||||
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
|
smtp_tls_protocols = >=TLSv1
|
||||||
|
# Legacy form for Postfix < 3.6:
|
||||||
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
|
smtp_tls_protocols = !SSLv2,!SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
@ -11299,74 +11299,92 @@ configurations in environments where DNS security is not assured. </p>
|
|||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
%PARAM smtp_tls_mandatory_protocols !SSLv2, !SSLv3
|
%PARAM smtp_tls_mandatory_protocols see "postconf -d" output
|
||||||
|
|
||||||
<p> List of SSL/TLS protocols that the Postfix SMTP client will use with
|
<p> TLS protocols that the Postfix SMTP client will use with mandatory
|
||||||
mandatory TLS encryption. In main.cf the values are separated by
|
TLS encryption. In main.cf the values are separated by whitespace,
|
||||||
whitespace, commas or colons. In the policy table "protocols" attribute
|
commas or colons. In the policy table "protocols" attribute (see
|
||||||
(see smtp_tls_policy_maps) the only valid separator is colon. An
|
smtp_tls_policy_maps) the only valid separator is colon. An empty value
|
||||||
empty value means allow all protocols. The valid protocol names, (see
|
means allow all protocols. </p>
|
||||||
<b>SSL_get_version(3)</b>), are "SSLv2", "SSLv3" and "TLSv1". The
|
|
||||||
default value is "!SSLv2, !SSLv3" for Postfix releases after the
|
|
||||||
middle of 2015, "!SSLv2" for older releases. </p>
|
|
||||||
|
|
||||||
<p> With Postfix ≥ 2.5 the parameter syntax was expanded to support
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"smtp_tls_mandatory_protocols = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p> The range of protocols advertised by an SSL/TLS client must be
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set a lowest acceptable TLS protocol version
|
||||||
higher version implicitly disables all versions above that higher version.
|
and/or a highest acceptable TLS protocol version. To set the lower
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
bound include an element of the form: ">=<i>version</i>" where
|
||||||
and SSLv3):
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
</p>
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !TLSv1
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
smtp_tls_mandatory_protocols = >=0x0303
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p> also disables any protocols version higher than TLSv1 leaving
|
|
||||||
only "SSLv3" enabled. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
and "TLSv1.2". When Postfix ≤ 2.5 is linked against OpenSSL 1.0.1
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
or later, these, or any other new protocol versions, cannot be
|
To require at least TLS 1.0, set "smtp_tls_mandatory_protocols = !SSLv2,
|
||||||
disabled except by also disabling "TLSv1" (typically leaving just
|
!SSLv3". Listing the protocols to include, rather than protocols to
|
||||||
"SSLv3"). The latest patch levels of Postfix ≥ 2.6, and all
|
exclude, is supported, but not recommended. The exclusion syntax more
|
||||||
versions of Postfix ≥ 2.10 can explicitly disable support for
|
accurately matches the underlying OpenSSL interface. </p>
|
||||||
"TLSv1.1" or "TLSv1.2". </p>
|
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> When using the exclusion syntax, take care to ensure that the range
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
of protocols supported by the Postfix SMTP client is contiguous. When
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
a protocol version is enabled, disabling any higher version implicitly
|
||||||
|
disables all versions above that higher version. Thus, for example: </p>
|
||||||
|
|
||||||
<p> At the <a href="TLS_README.html#client_tls_dane">dane</a> and
|
<blockquote>
|
||||||
<a href="TLS_README.html#client_tls_dane">dane-only</a> security
|
<pre>
|
||||||
levels, when usable TLSA records are obtained for the remote SMTP
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
server, the Postfix SMTP client is obligated to include the SNI TLS
|
</pre>
|
||||||
extension in its SSL client hello message. This may help the remote
|
</blockquote>
|
||||||
SMTP server live up to its promise to provide a certificate that
|
|
||||||
matches its TLSA records. Since TLS extensions require TLS 1.0 or
|
<p> also disables any protocols version higher than TLSv1.1 leaving
|
||||||
later, the Postfix SMTP client must disable "SSLv2" and "SSLv3" when
|
only "TLSv1" enabled. </p>
|
||||||
SNI is required. If you use "dane" or "dane-only" do not disable
|
|
||||||
TLSv1, except perhaps via the policy table for destinations which
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
you are sure will support "TLSv1.1" or "TLSv1.2". </p>
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
|
<p> While the vast majority of SMTP servers with DANE TLSA records now
|
||||||
|
support at least TLS 1.2, a few still only support TLS 1.0. If you use
|
||||||
|
"dane" or "dane-only" it is best to not disable TLSv1, except perhaps
|
||||||
|
via the policy table for destinations which you are sure will support
|
||||||
|
"TLSv1.2". </p>
|
||||||
|
|
||||||
<p> See the documentation of the smtp_tls_policy_maps parameter and
|
<p> See the documentation of the smtp_tls_policy_maps parameter and
|
||||||
TLS_README for more information about security levels. </p>
|
TLS_README for more information about security levels. </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtp_tls_mandatory_protocols = TLSv1
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -11495,7 +11513,7 @@ configuration parameter. See there for details. </p>
|
|||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
%PARAM lmtp_tls_mandatory_protocols !SSLv2, !SSLv3
|
%PARAM lmtp_tls_mandatory_protocols see postconf -d output
|
||||||
|
|
||||||
<p> The LMTP-specific version of the smtp_tls_mandatory_protocols
|
<p> The LMTP-specific version of the smtp_tls_mandatory_protocols
|
||||||
configuration parameter. See there for details. </p>
|
configuration parameter. See there for details. </p>
|
||||||
@ -11516,43 +11534,69 @@ configuration parameter. See there for details. </p>
|
|||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
%PARAM smtpd_tls_mandatory_protocols !SSLv2, !SSLv3
|
%PARAM smtpd_tls_mandatory_protocols see "postconf -d" output
|
||||||
|
|
||||||
<p> The SSL/TLS protocols accepted by the Postfix SMTP server with
|
<p> TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
||||||
mandatory TLS encryption. If the list is empty, the server supports
|
encryption. If the list is empty, the server supports all available TLS
|
||||||
all available SSL/TLS protocol versions. A non-empty value is a
|
protocol versions. A non-empty value is a list of protocol names to
|
||||||
list of protocol names separated by whitespace, commas or colons.
|
include or exclude, separated by whitespace, commas or colons. </p>
|
||||||
The supported protocol names are "SSLv2", "SSLv3" and "TLSv1", and
|
|
||||||
are not case sensitive. The default value is "!SSLv2, !SSLv3" for
|
|
||||||
Postfix releases after the middle of 2015, "!SSLv2" for older
|
|
||||||
releases. </p>
|
|
||||||
|
|
||||||
<p> With Postfix ≥ 2.5 the parameter syntax was expanded to support
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
protocol exclusions. One can explicitly exclude "SSLv2" by setting
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
"smtpd_tls_mandatory_protocols = !SSLv2". To exclude both "SSLv2" and
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"SSLv3" set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
the protocols to include, rather than protocols to exclude, is
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
supported, but not recommended. The exclusion form more closely
|
|
||||||
matches the underlying OpenSSL interface semantics. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
and "TLSv1.2". When Postfix ≤ 2.5 is linked against OpenSSL 1.0.1
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
or later, these, or any other new protocol versions, cannot be
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
disabled. The latest patch levels of Postfix ≥ 2.6, and all
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
versions of Postfix ≥ 2.10 can disable support for "TLSv1.1" or
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
"TLSv1.2". </p>
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
||||||
|
# Allow only TLS 1.2 and up:
|
||||||
|
smtpd_tls_mandatory_protocols = >=0x0303
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, 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 accurately matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Preferred syntax with Postfix ≥ 2.5:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
||||||
# Legacy syntax:
|
# Legacy syntax:
|
||||||
smtpd_tls_mandatory_protocols = TLSv1
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -11674,12 +11718,13 @@ smtp_tls_security_level = none
|
|||||||
<pre>
|
<pre>
|
||||||
# Opportunistic TLS.
|
# Opportunistic TLS.
|
||||||
smtp_tls_security_level = may
|
smtp_tls_security_level = may
|
||||||
# Postfix ≥ 2.6:
|
|
||||||
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
# Do not tweak opportunistic ciphers or protocol unless it is essential
|
||||||
# to do so (if a security vulnerability is found in the SSL library that
|
# to do so (if a security vulnerability is found in the SSL library that
|
||||||
# can be mitigated by disabling a particular protocol or raising the
|
# can be mitigated by disabling a particular protocol or raising the
|
||||||
# cipher grade from "export" to "low" or "medium").
|
# cipher grade).
|
||||||
smtp_tls_ciphers = export
|
smtp_tls_ciphers = medium
|
||||||
|
smtp_tls_protocols = >=TLSv1
|
||||||
|
# Legacy (Postfix < 3.6) syntax:
|
||||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -11690,33 +11735,27 @@ smtp_tls_mandatory_ciphers = high
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Mandatory TLS verification of hostname or nexthop domain.
|
# Authenticated TLS 1.2 or better matching the nexthop domain or a
|
||||||
smtp_tls_security_level = verify
|
# subdomain.
|
||||||
smtp_tls_mandatory_ciphers = high
|
|
||||||
smtp_tls_verify_cert_match = hostname, nexthop, dot-nexthop
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
# Secure channel TLS with exact nexthop name match.
|
|
||||||
smtp_tls_security_level = secure
|
smtp_tls_security_level = secure
|
||||||
smtp_tls_mandatory_protocols = TLSv1
|
|
||||||
smtp_tls_mandatory_ciphers = high
|
smtp_tls_mandatory_ciphers = high
|
||||||
smtp_tls_secure_cert_match = nexthop
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
|
smtp_tls_secure_cert_match = nexthop, dot-nexthop
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
# Certificate fingerprint verification (Postfix ≥ 2.5).
|
# Certificate fingerprint verification (Postfix ≥ 2.5).
|
||||||
# The CA-less "fingerprint" security level only scales to a limited
|
# The CA-less "fingerprint" security level only scales to a limited
|
||||||
# number of destinations. As a global default rather than a per-site
|
# number of destinations. As a global default rather than a per-site
|
||||||
# setting, this is practical when mail for all recipients is sent
|
# setting, this is practical only when mail for all recipients is sent
|
||||||
# to a central mail hub.
|
# to a central mail hub.
|
||||||
relayhost = [mailhub.example.com]
|
relayhost = [mailhub.example.com]
|
||||||
smtp_tls_security_level = fingerprint
|
smtp_tls_security_level = fingerprint
|
||||||
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
||||||
smtp_tls_mandatory_ciphers = high
|
smtp_tls_mandatory_ciphers = high
|
||||||
smtp_tls_fingerprint_cert_match =
|
smtp_tls_fingerprint_cert_match =
|
||||||
3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
|
3D:95:34:51:...:40:99:C0:C1
|
||||||
EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
|
EC:3B:2D:B0:...:A3:9D:72:F6
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
@ -12640,95 +12679,153 @@ the hostname and IP address. The logging format is "host[address]:port".
|
|||||||
|
|
||||||
<p> This feature is available in Postfix 2.5 and later. </p>
|
<p> This feature is available in Postfix 2.5 and later. </p>
|
||||||
|
|
||||||
%PARAM smtp_tls_protocols !SSLv2, !SSLv3
|
%PARAM smtp_tls_protocols see postconf -d output
|
||||||
|
|
||||||
<p> List of TLS protocols that the Postfix SMTP client will exclude or
|
<p> TLS protocols that the Postfix SMTP client will use with
|
||||||
include with opportunistic TLS encryption. The default value is
|
opportunistic TLS encryption. In main.cf the values are separated by
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
whitespace, commas or colons. In the policy table "protocols" attribute
|
||||||
"!SSLv2" for older releases. Before Postfix 2.6, the Postfix SMTP
|
(see smtp_tls_policy_maps) the only valid separator is colon. An empty
|
||||||
client would use all protocols with opportunistic TLS. </p>
|
value means allow all protocols. </p>
|
||||||
|
|
||||||
<p> In main.cf the values are separated by whitespace, commas or
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
colons. In the policy table (see smtp_tls_policy_maps) the only valid
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
separator is colon. An empty value means allow all protocols. The valid
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
protocol names, (see <b>SSL_get_version(3)</b>), are "SSLv2", "SSLv3"
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
and "TLSv1". </p>
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
|
|
||||||
<p> The range of protocols advertised by an SSL/TLS client must be
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
contiguous. When a protocol version is enabled, disabling any
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
higher version implicitly disables all versions above that higher version.
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
Thus, for example (assuming the OpenSSL library supports both SSLv2
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
and SSLv3):
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtp_tls_protocols = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
smtp_tls_protocols = >=0x0301
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "smtp_tls_protocols = !SSLv2, !SSLv3".
|
||||||
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> When using the exclusion syntax, take care to ensure that the range of
|
||||||
|
protocols advertised by an SSL/TLS client is contiguous. When a protocol
|
||||||
|
version is enabled, disabling any higher version implicitly disables all
|
||||||
|
versions above that higher version. Thus, for example:
|
||||||
</p>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
smtp_tls_protocols = !SSLv2, !TLSv1
|
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p> also disables any protocols version higher than TLSv1 leaving
|
<p> also disables any protocols version higher than TLSv1.1 leaving
|
||||||
only "SSLv3" enabled. </p>
|
only "TLSv1" enabled. </p>
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
and "TLSv1.2". The latest patch levels of Postfix ≥ 2.6, and all
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
versions of Postfix ≥ 2.10 can explicitly disable support for
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
"TLSv1.1" or "TLSv1.2"</p>
|
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
|
||||||
|
|
||||||
<p> To include a protocol list its name, to exclude it, prefix the name
|
|
||||||
with a "!" character. To exclude SSLv2 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 underlying
|
|
||||||
OpenSSL interface semantics. </p>
|
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
<pre>
|
<pre>
|
||||||
# TLSv1 or better:
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
|
smtp_tls_protocols = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
smtp_tls_protocols = !SSLv2, !SSLv3
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.6 and later. </p>
|
<p> This feature is available in Postfix 2.6 and later. </p>
|
||||||
|
|
||||||
%PARAM smtpd_tls_protocols !SSLv2, !SSLv3
|
%PARAM smtpd_tls_protocols see postconf -d output
|
||||||
|
|
||||||
<p> List of TLS protocols that the Postfix SMTP server will exclude
|
<p> TLS protocols accepted by the Postfix SMTP server with opportunistic
|
||||||
or include with opportunistic TLS encryption. The default value is
|
TLS encryption. If the list is empty, the server supports all available
|
||||||
"!SSLv2, !SSLv3" for Postfix releases after the middle of 2015,
|
TLS protocol versions. A non-empty value is a list of protocol names to
|
||||||
empty for older releases allowing all protocols to be
|
include or exclude, separated by whitespace, commas or colons. </p>
|
||||||
used with opportunistic TLS. A non-empty value is a list of protocol
|
|
||||||
names separated by whitespace, commas or colons. The supported
|
|
||||||
protocol names are "SSLv2", "SSLv3" and "TLSv1", and are not case
|
|
||||||
sensitive. </p>
|
|
||||||
|
|
||||||
<p> Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1"
|
<p> The valid protocol names (see SSL_get_version(3)) are "SSLv2",
|
||||||
and "TLSv1.2". The latest patch levels of Postfix ≥ 2.6, and all
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
||||||
versions of Postfix ≥ 2.10 can disable support for "TLSv1.1" or
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
||||||
"TLSv1.2". </p>
|
the lowest supported TLS protocol version (see below). Older releases
|
||||||
|
use the "!" exclusion syntax, also described below. </p>
|
||||||
|
|
||||||
<p> OpenSSL 1.1.1 introduces support for "TLSv1.3". With Postfix
|
<p> As of Postfix 3.6, the preferred way to limit the range of
|
||||||
≥ 3.4 (or patch releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2)
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
||||||
this can be disabled, if need be, via "!TLSv1.3". </p>
|
version and/or the highest acceptable TLS protocol version. To set the
|
||||||
|
lower bound include an element of the form: ">=<i>version</i>" where
|
||||||
|
<i>version</i> is a either one of the TLS protocol names listed above,
|
||||||
|
or a hexadecimal number corresponding to the desired TLS protocol
|
||||||
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
||||||
|
bound, use "<=<i>version</i>". There must be no whitespace between
|
||||||
|
the ">=" or "<=" symbols and the protocol name or number. </p>
|
||||||
|
|
||||||
<p> To include a protocol list its name, to exclude it, prefix the name
|
<p> Hexadecimal protocol numbers make it possible to specify protocol
|
||||||
with a "!" character. To exclude SSLv2 for opportunistic TLS set
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
||||||
"smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
||||||
"smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to
|
Leading "0" or "0x" prefixes are supported, but not required.
|
||||||
include, rather than protocols to exclude, is supported, but not
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
||||||
recommended. The exclusion form more closely matches the underlying
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
||||||
OpenSSL interface semantics. </p>
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
||||||
|
versions should only be used when Postfix is linked with some future
|
||||||
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
||||||
|
yet support a symbolic name for that protocol version. </p>
|
||||||
|
|
||||||
|
<p>Hexadecimal example (Postfix ≥ 3.6):</p>
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
||||||
|
# in some future version of OpenSSL (presently a warning is logged).
|
||||||
|
smtpd_tls_protocols = >=TLSv1, <=0305
|
||||||
|
# Allow only TLS 1.0 and up:
|
||||||
|
smtpd_tls_protocols = >=0x0301
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p> With Postfix < 3.6 there is no support for a minimum or maximum
|
||||||
|
version, and the protocol range is configured via protocol exclusions.
|
||||||
|
To require at least TLS 1.0, set "smtpd_tls_protocols = !SSLv2, !SSLv3".
|
||||||
|
Listing the protocols to include, rather than protocols to exclude, is
|
||||||
|
supported, but not recommended. The exclusion form more accurately
|
||||||
|
matches the underlying OpenSSL interface. </p>
|
||||||
|
|
||||||
|
<p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
||||||
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
||||||
|
releases ≥ 3.0.14, 3.1.10, 3.2.7 and 3.3.2). </p>
|
||||||
|
|
||||||
<p> Example: </p>
|
<p> Example: </p>
|
||||||
<pre>
|
<pre>
|
||||||
|
# Preferred syntax with Postfix ≥ 3.6:
|
||||||
|
smtpd_tls_protocols = >=TLSv1, <=TLSv1.3
|
||||||
|
# Legacy syntax:
|
||||||
smtpd_tls_protocols = !SSLv2, !SSLv3
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.6 and later. </p>
|
<p> This feature is available in Postfix 2.6 and later. </p>
|
||||||
|
|
||||||
%PARAM lmtp_tls_protocols !SSLv2, !SSLv3
|
%PARAM lmtp_tls_protocols see postconf -d output
|
||||||
|
|
||||||
<p> The LMTP-specific version of the smtp_tls_protocols configuration
|
<p> The LMTP-specific version of the smtp_tls_protocols configuration
|
||||||
parameter. See there for details. </p>
|
parameter. See there for details. </p>
|
||||||
@ -12874,7 +12971,7 @@ EC algorithms have not been disabled by the vendor. </p>
|
|||||||
|
|
||||||
<p> The Postfix SMTP server security grade for ephemeral elliptic-curve
|
<p> The Postfix SMTP server security grade for ephemeral elliptic-curve
|
||||||
Diffie-Hellman (EECDH) key exchange. As of Postfix 3.6, the value of
|
Diffie-Hellman (EECDH) key exchange. As of Postfix 3.6, the value of
|
||||||
this parameter is always ignored, and Postfix behaves as though th
|
this parameter is always ignored, and Postfix behaves as though the
|
||||||
<b>auto</b> value (described below) was chosen.
|
<b>auto</b> value (described below) was chosen.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -1336,11 +1336,11 @@ extern char *var_smtpd_tls_CAfile;
|
|||||||
extern char *var_smtpd_tls_CApath;
|
extern char *var_smtpd_tls_CApath;
|
||||||
|
|
||||||
#define VAR_SMTPD_TLS_PROTO "smtpd_tls_protocols"
|
#define VAR_SMTPD_TLS_PROTO "smtpd_tls_protocols"
|
||||||
#define DEF_SMTPD_TLS_PROTO "!SSLv2, !SSLv3"
|
#define DEF_SMTPD_TLS_PROTO ">=TLSv1"
|
||||||
extern char *var_smtpd_tls_proto;
|
extern char *var_smtpd_tls_proto;
|
||||||
|
|
||||||
#define VAR_SMTPD_TLS_MAND_PROTO "smtpd_tls_mandatory_protocols"
|
#define VAR_SMTPD_TLS_MAND_PROTO "smtpd_tls_mandatory_protocols"
|
||||||
#define DEF_SMTPD_TLS_MAND_PROTO "!SSLv2, !SSLv3"
|
#define DEF_SMTPD_TLS_MAND_PROTO ">=TLSv1"
|
||||||
extern char *var_smtpd_tls_mand_proto;
|
extern char *var_smtpd_tls_mand_proto;
|
||||||
|
|
||||||
#define VAR_SMTPD_TLS_CIPH "smtpd_tls_ciphers"
|
#define VAR_SMTPD_TLS_CIPH "smtpd_tls_ciphers"
|
||||||
@ -1571,15 +1571,15 @@ extern int var_lmtp_tls_scache_timeout;
|
|||||||
extern char *var_smtp_tls_policy;
|
extern char *var_smtp_tls_policy;
|
||||||
|
|
||||||
#define VAR_SMTP_TLS_PROTO "smtp_tls_protocols"
|
#define VAR_SMTP_TLS_PROTO "smtp_tls_protocols"
|
||||||
#define DEF_SMTP_TLS_PROTO "!SSLv2, !SSLv3"
|
#define DEF_SMTP_TLS_PROTO ">=TLSv1"
|
||||||
#define VAR_LMTP_TLS_PROTO "lmtp_tls_protocols"
|
#define VAR_LMTP_TLS_PROTO "lmtp_tls_protocols"
|
||||||
#define DEF_LMTP_TLS_PROTO "!SSLv2, !SSLv3"
|
#define DEF_LMTP_TLS_PROTO ">=TLSv1"
|
||||||
extern char *var_smtp_tls_proto;
|
extern char *var_smtp_tls_proto;
|
||||||
|
|
||||||
#define VAR_SMTP_TLS_MAND_PROTO "smtp_tls_mandatory_protocols"
|
#define VAR_SMTP_TLS_MAND_PROTO "smtp_tls_mandatory_protocols"
|
||||||
#define DEF_SMTP_TLS_MAND_PROTO "!SSLv2, !SSLv3"
|
#define DEF_SMTP_TLS_MAND_PROTO ">=TLSv1"
|
||||||
#define VAR_LMTP_TLS_MAND_PROTO "lmtp_tls_mandatory_protocols"
|
#define VAR_LMTP_TLS_MAND_PROTO "lmtp_tls_mandatory_protocols"
|
||||||
#define DEF_LMTP_TLS_MAND_PROTO "!SSLv2, !SSLv3"
|
#define DEF_LMTP_TLS_MAND_PROTO ">=TLSv1"
|
||||||
extern char *var_smtp_tls_mand_proto;
|
extern char *var_smtp_tls_mand_proto;
|
||||||
|
|
||||||
#define VAR_SMTP_TLS_VFY_CMATCH "smtp_tls_verify_cert_match"
|
#define VAR_SMTP_TLS_VFY_CMATCH "smtp_tls_verify_cert_match"
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20200720"
|
#define MAIL_RELEASE_DATE "20200725"
|
||||||
#define MAIL_VERSION_NUMBER "3.6"
|
#define MAIL_VERSION_NUMBER "3.6"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@ -224,8 +224,8 @@
|
|||||||
/* parameter \fIname\fR with \fIvalue\fR. Possible use-cases include
|
/* parameter \fIname\fR with \fIvalue\fR. Possible use-cases include
|
||||||
/* overriding the values of TLS library parameters, or "myhostname" to
|
/* overriding the values of TLS library parameters, or "myhostname" to
|
||||||
/* configure the SMTP EHLO name sent to the remote server.
|
/* configure the SMTP EHLO name sent to the remote server.
|
||||||
/* .IP "\fB-p \fIprotocols\fR (default: !SSLv2)"
|
/* .IP "\fB-p \fIprotocols\fR (default: >=TLSv1)"
|
||||||
/* List of TLS protocols that posttls-finger will exclude or include. See
|
/* TLS protocols that posttls-finger will exclude or include. See
|
||||||
/* smtp_tls_mandatory_protocols for details.
|
/* smtp_tls_mandatory_protocols for details.
|
||||||
/* .IP "\fB-P \fICApath/\fR (default: none)"
|
/* .IP "\fB-P \fICApath/\fR (default: none)"
|
||||||
/* The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
|
/* The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
|
||||||
@ -1806,7 +1806,7 @@ static void parse_options(STATE *state, int argc, char *argv[])
|
|||||||
state->max_reconnect = 5;
|
state->max_reconnect = 5;
|
||||||
state->wrapper_mode = 0;
|
state->wrapper_mode = 0;
|
||||||
#ifdef USE_TLS
|
#ifdef USE_TLS
|
||||||
state->protocols = mystrdup("!SSLv2");
|
state->protocols = mystrdup(">=TLSv1");
|
||||||
state->grade = mystrdup("medium");
|
state->grade = mystrdup("medium");
|
||||||
#endif
|
#endif
|
||||||
memset((void *) &state->options, 0, sizeof(state->options));
|
memset((void *) &state->options, 0, sizeof(state->options));
|
||||||
|
@ -448,9 +448,9 @@
|
|||||||
/* Optional lookup tables with the Postfix SMTP client TLS security
|
/* Optional lookup tables with the Postfix SMTP client TLS security
|
||||||
/* policy by next-hop destination; when a non-empty value is specified,
|
/* policy by next-hop destination; when a non-empty value is specified,
|
||||||
/* this overrides the obsolete smtp_tls_per_site parameter.
|
/* this overrides the obsolete smtp_tls_per_site parameter.
|
||||||
/* .IP "\fBsmtp_tls_mandatory_protocols (!SSLv2, !SSLv3)\fR"
|
/* .IP "\fBsmtp_tls_mandatory_protocols (see 'postconf -d' output)\fR"
|
||||||
/* List of SSL/TLS protocols that the Postfix SMTP client will use with
|
/* TLS protocols that the Postfix SMTP client will use with mandatory
|
||||||
/* mandatory TLS encryption.
|
/* TLS encryption.
|
||||||
/* .IP "\fBsmtp_tls_scert_verifydepth (9)\fR"
|
/* .IP "\fBsmtp_tls_scert_verifydepth (9)\fR"
|
||||||
/* The verification depth for remote SMTP server certificates.
|
/* The verification depth for remote SMTP server certificates.
|
||||||
/* .IP "\fBsmtp_tls_secure_cert_match (nexthop, dot-nexthop)\fR"
|
/* .IP "\fBsmtp_tls_secure_cert_match (nexthop, dot-nexthop)\fR"
|
||||||
@ -498,9 +498,9 @@
|
|||||||
/* certificate fingerprints.
|
/* certificate fingerprints.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Available in Postfix version 2.6 and later:
|
/* Available in Postfix version 2.6 and later:
|
||||||
/* .IP "\fBsmtp_tls_protocols (!SSLv2, !SSLv3)\fR"
|
/* .IP "\fBsmtp_tls_protocols (see postconf -d output)\fR"
|
||||||
/* List of TLS protocols that the Postfix SMTP client will exclude or
|
/* TLS protocols that the Postfix SMTP client will use with
|
||||||
/* include with opportunistic TLS encryption.
|
/* opportunistic TLS encryption.
|
||||||
/* .IP "\fBsmtp_tls_ciphers (medium)\fR"
|
/* .IP "\fBsmtp_tls_ciphers (medium)\fR"
|
||||||
/* The minimum TLS cipher grade that the Postfix SMTP client
|
/* The minimum TLS cipher grade that the Postfix SMTP client
|
||||||
/* will use with opportunistic TLS encryption.
|
/* will use with opportunistic TLS encryption.
|
||||||
|
@ -405,9 +405,9 @@
|
|||||||
/* .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR"
|
/* .IP "\fBsmtpd_tls_mandatory_exclude_ciphers (empty)\fR"
|
||||||
/* Additional list of ciphers or cipher types to exclude from the
|
/* Additional list of ciphers or cipher types to exclude from the
|
||||||
/* Postfix SMTP server cipher list at mandatory TLS security levels.
|
/* Postfix SMTP server cipher list at mandatory TLS security levels.
|
||||||
/* .IP "\fBsmtpd_tls_mandatory_protocols (!SSLv2, !SSLv3)\fR"
|
/* .IP "\fBsmtpd_tls_mandatory_protocols (see 'postconf -d' output)\fR"
|
||||||
/* The SSL/TLS protocols accepted by the Postfix SMTP server with
|
/* TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
||||||
/* mandatory TLS encryption.
|
/* encryption.
|
||||||
/* .IP "\fBsmtpd_tls_received_header (no)\fR"
|
/* .IP "\fBsmtpd_tls_received_header (no)\fR"
|
||||||
/* Request that the Postfix SMTP server produces Received: message
|
/* Request that the Postfix SMTP server produces Received: message
|
||||||
/* headers that include information about the protocol and cipher used,
|
/* headers that include information about the protocol and cipher used,
|
||||||
@ -442,9 +442,9 @@
|
|||||||
/* \fBcheck_ccert_access\fR and \fBpermit_tls_clientcerts\fR.
|
/* \fBcheck_ccert_access\fR and \fBpermit_tls_clientcerts\fR.
|
||||||
/* .PP
|
/* .PP
|
||||||
/* Available in Postfix version 2.6 and later:
|
/* Available in Postfix version 2.6 and later:
|
||||||
/* .IP "\fBsmtpd_tls_protocols (!SSLv2, !SSLv3)\fR"
|
/* .IP "\fBsmtpd_tls_protocols (see postconf -d output)\fR"
|
||||||
/* List of TLS protocols that the Postfix SMTP server will exclude
|
/* TLS protocols accepted by the Postfix SMTP server with opportunistic
|
||||||
/* or include with opportunistic TLS encryption.
|
/* TLS encryption.
|
||||||
/* .IP "\fBsmtpd_tls_ciphers (medium)\fR"
|
/* .IP "\fBsmtpd_tls_ciphers (medium)\fR"
|
||||||
/* The minimum TLS cipher grade that the Postfix SMTP server
|
/* The minimum TLS cipher grade that the Postfix SMTP server
|
||||||
/* will use with opportunistic TLS encryption.
|
/* will use with opportunistic TLS encryption.
|
||||||
|
@ -385,7 +385,7 @@ extern void tls_param_init(void);
|
|||||||
#define TLS_SSL_OP_MANAGED_BITS \
|
#define TLS_SSL_OP_MANAGED_BITS \
|
||||||
(SSL_OP_CIPHER_SERVER_PREFERENCE | TLS_SSL_OP_PROTOMASK(~0))
|
(SSL_OP_CIPHER_SERVER_PREFERENCE | TLS_SSL_OP_PROTOMASK(~0))
|
||||||
|
|
||||||
extern int tls_protocol_mask(const char *);
|
extern int tls_proto_mask_lims(const char *, int *, int *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cipher grade selection.
|
* Cipher grade selection.
|
||||||
@ -631,7 +631,7 @@ extern char *tls_digest_encode(const unsigned char *, int);
|
|||||||
extern char *tls_cert_fprint(X509 *, const char *);
|
extern char *tls_cert_fprint(X509 *, const char *);
|
||||||
extern char *tls_pkey_fprint(X509 *, const char *);
|
extern char *tls_pkey_fprint(X509 *, const char *);
|
||||||
extern char *tls_serverid_digest(TLS_SESS_STATE *,
|
extern char *tls_serverid_digest(TLS_SESS_STATE *,
|
||||||
const TLS_CLIENT_START_PROPS *, long, const char *);
|
const TLS_CLIENT_START_PROPS *, const char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tls_certkey.c
|
* tls_certkey.c
|
||||||
|
@ -865,6 +865,8 @@ TLS_SESS_STATE *tls_client_start(const TLS_CLIENT_START_PROPS *props)
|
|||||||
{
|
{
|
||||||
int sts;
|
int sts;
|
||||||
int protomask;
|
int protomask;
|
||||||
|
int min_proto;
|
||||||
|
int max_proto;
|
||||||
const char *cipher_list;
|
const char *cipher_list;
|
||||||
SSL_SESSION *session = 0;
|
SSL_SESSION *session = 0;
|
||||||
TLS_SESS_STATE *TLScontext;
|
TLS_SESS_STATE *TLScontext;
|
||||||
@ -888,7 +890,7 @@ TLS_SESS_STATE *tls_client_start(const TLS_CLIENT_START_PROPS *props)
|
|||||||
* Per-session protocol restrictions must be applied to the SSL connection,
|
* Per-session protocol restrictions must be applied to the SSL connection,
|
||||||
* as restrictions in the global context cannot be cleared.
|
* as restrictions in the global context cannot be cleared.
|
||||||
*/
|
*/
|
||||||
protomask = tls_protocol_mask(props->protocols);
|
protomask = tls_proto_mask_lims(props->protocols, &min_proto, &max_proto);
|
||||||
if (protomask == TLS_PROTOCOL_INVALID) {
|
if (protomask == TLS_PROTOCOL_INVALID) {
|
||||||
/* tls_protocol_mask() logs no warning. */
|
/* tls_protocol_mask() logs no warning. */
|
||||||
msg_warn("%s: Invalid TLS protocol list \"%s\": aborting TLS session",
|
msg_warn("%s: Invalid TLS protocol list \"%s\": aborting TLS session",
|
||||||
@ -956,12 +958,24 @@ TLS_SESS_STATE *tls_client_start(const TLS_CLIENT_START_PROPS *props)
|
|||||||
tls_free_context(TLScontext);
|
tls_free_context(TLScontext);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
#define CARP_VERSION(which) do { \
|
||||||
|
if (which##_proto != 0) \
|
||||||
|
msg_warn("%s: error setting %simum TLS version to: 0x%04x", \
|
||||||
|
TLScontext->namaddr, #which, which##_proto); \
|
||||||
|
else \
|
||||||
|
msg_warn("%s: error clearing %simum TLS version", \
|
||||||
|
TLScontext->namaddr, #which); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Apply session protocol restrictions.
|
* Apply session protocol restrictions.
|
||||||
*/
|
*/
|
||||||
if (protomask != 0)
|
if (protomask != 0)
|
||||||
SSL_set_options(TLScontext->con, TLS_SSL_OP_PROTOMASK(protomask));
|
SSL_set_options(TLScontext->con, TLS_SSL_OP_PROTOMASK(protomask));
|
||||||
|
if (!SSL_set_min_proto_version(TLScontext->con, min_proto))
|
||||||
|
CARP_VERSION(min);
|
||||||
|
if (!SSL_set_max_proto_version(TLScontext->con, max_proto))
|
||||||
|
CARP_VERSION(max);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When applicable, configure DNS-based or synthetic (fingerprint or
|
* When applicable, configure DNS-based or synthetic (fingerprint or
|
||||||
@ -1038,7 +1052,7 @@ TLS_SESS_STATE *tls_client_start(const TLS_CLIENT_START_PROPS *props)
|
|||||||
* parameters and append it to the serverid.
|
* parameters and append it to the serverid.
|
||||||
*/
|
*/
|
||||||
TLScontext->serverid =
|
TLScontext->serverid =
|
||||||
tls_serverid_digest(TLScontext, props, protomask, cipher_list);
|
tls_serverid_digest(TLScontext, props, cipher_list);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When authenticating the peer, use 80-bit plus OpenSSL security level
|
* When authenticating the peer, use 80-bit plus OpenSSL security level
|
||||||
|
@ -6,10 +6,9 @@
|
|||||||
/* SYNOPSIS
|
/* SYNOPSIS
|
||||||
/* #include <tls.h>
|
/* #include <tls.h>
|
||||||
/*
|
/*
|
||||||
/* char *tls_serverid_digest(TLScontext, props, protomask, ciphers)
|
/* char *tls_serverid_digest(TLScontext, props, ciphers)
|
||||||
/* TLS_SESS_STATE *TLScontext;
|
/* TLS_SESS_STATE *TLScontext;
|
||||||
/* const TLS_CLIENT_START_PROPS *props;
|
/* const TLS_CLIENT_START_PROPS *props;
|
||||||
/* long protomask;
|
|
||||||
/* const char *ciphers;
|
/* const char *ciphers;
|
||||||
/*
|
/*
|
||||||
/* char *tls_digest_encode(md_buf, md_len)
|
/* char *tls_digest_encode(md_buf, md_len)
|
||||||
@ -187,7 +186,7 @@ static int tls_digest_tlsa(EVP_MD_CTX *mdctx, TLS_TLSA *tlsa)
|
|||||||
|
|
||||||
char *tls_serverid_digest(TLS_SESS_STATE *TLScontext,
|
char *tls_serverid_digest(TLS_SESS_STATE *TLScontext,
|
||||||
const TLS_CLIENT_START_PROPS *props,
|
const TLS_CLIENT_START_PROPS *props,
|
||||||
long protomask, const char *ciphers)
|
const char *ciphers)
|
||||||
{
|
{
|
||||||
EVP_MD_CTX *mdctx;
|
EVP_MD_CTX *mdctx;
|
||||||
const EVP_MD *md;
|
const EVP_MD *md;
|
||||||
@ -219,7 +218,7 @@ char *tls_serverid_digest(TLS_SESS_STATE *TLScontext,
|
|||||||
checkok(EVP_DigestInit_ex(mdctx, md, NULL));
|
checkok(EVP_DigestInit_ex(mdctx, md, NULL));
|
||||||
digest_string(props->helo ? props->helo : "");
|
digest_string(props->helo ? props->helo : "");
|
||||||
digest_object(&sslversion);
|
digest_object(&sslversion);
|
||||||
digest_object(&protomask);
|
digest_string(props->protocols);
|
||||||
digest_string(ciphers);
|
digest_string(ciphers);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -69,8 +69,10 @@
|
|||||||
/*
|
/*
|
||||||
/* void tls_param_init()
|
/* void tls_param_init()
|
||||||
/*
|
/*
|
||||||
/* int tls_protocol_mask(plist)
|
/* int tls_proto_mask_lims(plist, floor, ceiling)
|
||||||
/* const char *plist;
|
/* const char *plist;
|
||||||
|
/* int *floor;
|
||||||
|
/* int *ceiling;
|
||||||
/*
|
/*
|
||||||
/* int tls_cipher_grade(name)
|
/* int tls_cipher_grade(name)
|
||||||
/* const char *name;
|
/* const char *name;
|
||||||
@ -157,10 +159,12 @@
|
|||||||
/* entering a chroot jail. The "role" parameter must be TLS_ROLE_CLIENT
|
/* entering a chroot jail. The "role" parameter must be TLS_ROLE_CLIENT
|
||||||
/* for clients and TLS_ROLE_SERVER for servers. Any errors are fatal.
|
/* for clients and TLS_ROLE_SERVER for servers. Any errors are fatal.
|
||||||
/*
|
/*
|
||||||
/* tls_protocol_mask() returns a bitmask of excluded protocols, given
|
/* tls_proto_mask_lims() returns a bitmask of excluded protocols, and
|
||||||
/* a list (plist) of protocols to include or (preceded by a '!') exclude.
|
/* and the protocol version floor/ceiling, given a list (plist) of
|
||||||
/* If "plist" contains invalid protocol names, TLS_PROTOCOL_INVALID is
|
/* protocols to include or (preceded by a '!') exclude, or constraints
|
||||||
/* returned and no warning is logged.
|
/* of the form '>=name', '<=name', '>=hexvalue', '<=hexvalue'. If "plist"
|
||||||
|
/* contains invalid protocol names, TLS_PROTOCOL_INVALID is returned and
|
||||||
|
/* no warning is logged.
|
||||||
/*
|
/*
|
||||||
/* tls_cipher_grade() converts a case-insensitive cipher grade
|
/* tls_cipher_grade() converts a case-insensitive cipher grade
|
||||||
/* name (high, medium, low, export, null) to the corresponding
|
/* name (high, medium, low, export, null) to the corresponding
|
||||||
@ -315,6 +319,19 @@ static const NAME_CODE protocol_table[] = {
|
|||||||
0, TLS_PROTOCOL_INVALID,
|
0, TLS_PROTOCOL_INVALID,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Protocol name => numeric version, for MinProtocol and MaxProtocol
|
||||||
|
*/
|
||||||
|
static const NAME_CODE tls_version_table[] = {
|
||||||
|
"None", 0,
|
||||||
|
SSL_TXT_SSLV3, SSL3_VERSION,
|
||||||
|
SSL_TXT_TLSV1, TLS1_VERSION,
|
||||||
|
SSL_TXT_TLSV1_1, TLS1_1_VERSION,
|
||||||
|
SSL_TXT_TLSV1_2, TLS1_2_VERSION,
|
||||||
|
TLS_PROTOCOL_TXT_TLSV1_3, TLS1_3_VERSION,
|
||||||
|
0, -1,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SSL_OP_MUMBLE bug work-around name <=> mask conversion.
|
* SSL_OP_MUMBLE bug work-around name <=> mask conversion.
|
||||||
*/
|
*/
|
||||||
@ -551,9 +568,32 @@ void tls_update_app_logmask(TLS_APPL_STATE *app_ctx, int log_mask)
|
|||||||
app_ctx->log_mask = log_mask;
|
app_ctx->log_mask = log_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tls_protocol_mask - Bitmask of protocols to exclude */
|
/* parse_version - parse TLS protocol version name or hex number */
|
||||||
|
|
||||||
int tls_protocol_mask(const char *plist)
|
static int parse_tls_version(const char *tok, int *version)
|
||||||
|
{
|
||||||
|
int code = name_code(tls_version_table, NAME_CODE_FLAG_NONE, tok);
|
||||||
|
char *_end;
|
||||||
|
unsigned long ulval;
|
||||||
|
|
||||||
|
if (code != -1) {
|
||||||
|
*version = code;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
errno = 0;
|
||||||
|
ulval = strtoul(tok, &_end, 16);
|
||||||
|
if (*_end != 0
|
||||||
|
|| (ulval == ULONG_MAX && errno == ERANGE)
|
||||||
|
|| ulval > INT_MAX)
|
||||||
|
return TLS_PROTOCOL_INVALID;
|
||||||
|
|
||||||
|
*version = (int) ulval;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tls_proto_mask_lims - protocols to exclude and floor/ceiling */
|
||||||
|
|
||||||
|
int tls_proto_mask_lims(const char *plist, int *floor, int *ceiling)
|
||||||
{
|
{
|
||||||
char *save;
|
char *save;
|
||||||
char *tok;
|
char *tok;
|
||||||
@ -567,9 +607,15 @@ int tls_protocol_mask(const char *plist)
|
|||||||
return (res); \
|
return (res); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
*floor = *ceiling = 0;
|
||||||
|
|
||||||
save = cp = mystrdup(plist);
|
save = cp = mystrdup(plist);
|
||||||
while ((tok = mystrtok(&cp, CHARS_COMMA_SP ":")) != 0) {
|
while ((tok = mystrtok(&cp, CHARS_COMMA_SP ":")) != 0) {
|
||||||
if (*tok == '!')
|
if (strncmp(tok, ">=", 2) == 0)
|
||||||
|
code = parse_tls_version(tok + 2, floor);
|
||||||
|
else if (strncmp(tok, "<=", 2) == 0)
|
||||||
|
code = parse_tls_version(tok + 2, ceiling);
|
||||||
|
else if (*tok == '!')
|
||||||
exclude |= code =
|
exclude |= code =
|
||||||
name_code(protocol_table, NAME_CODE_FLAG_NONE, ++tok);
|
name_code(protocol_table, NAME_CODE_FLAG_NONE, ++tok);
|
||||||
else
|
else
|
||||||
|
@ -342,6 +342,8 @@ TLS_APPL_STATE *tls_server_init(const TLS_SERVER_INIT_PROPS *props)
|
|||||||
int scache_timeout;
|
int scache_timeout;
|
||||||
int ticketable = 0;
|
int ticketable = 0;
|
||||||
int protomask;
|
int protomask;
|
||||||
|
int min_proto;
|
||||||
|
int max_proto;
|
||||||
TLS_APPL_STATE *app_ctx;
|
TLS_APPL_STATE *app_ctx;
|
||||||
int log_mask;
|
int log_mask;
|
||||||
|
|
||||||
@ -366,7 +368,7 @@ TLS_APPL_STATE *tls_server_init(const TLS_SERVER_INIT_PROPS *props)
|
|||||||
/*
|
/*
|
||||||
* First validate the protocols. If these are invalid, we can't continue.
|
* First validate the protocols. If these are invalid, we can't continue.
|
||||||
*/
|
*/
|
||||||
protomask = tls_protocol_mask(props->protocols);
|
protomask = tls_proto_mask_lims(props->protocols, &min_proto, &max_proto);
|
||||||
if (protomask == TLS_PROTOCOL_INVALID) {
|
if (protomask == TLS_PROTOCOL_INVALID) {
|
||||||
/* tls_protocol_mask() logs no warning. */
|
/* tls_protocol_mask() logs no warning. */
|
||||||
msg_warn("Invalid TLS protocol list \"%s\": disabling TLS support",
|
msg_warn("Invalid TLS protocol list \"%s\": disabling TLS support",
|
||||||
@ -514,6 +516,10 @@ TLS_APPL_STATE *tls_server_init(const TLS_SERVER_INIT_PROPS *props)
|
|||||||
*/
|
*/
|
||||||
if (protomask != 0)
|
if (protomask != 0)
|
||||||
SSL_CTX_set_options(server_ctx, TLS_SSL_OP_PROTOMASK(protomask));
|
SSL_CTX_set_options(server_ctx, TLS_SSL_OP_PROTOMASK(protomask));
|
||||||
|
SSL_CTX_set_min_proto_version(server_ctx, min_proto);
|
||||||
|
SSL_CTX_set_max_proto_version(server_ctx, max_proto);
|
||||||
|
SSL_CTX_set_min_proto_version(sni_ctx, min_proto);
|
||||||
|
SSL_CTX_set_max_proto_version(sni_ctx, max_proto);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some sites may want to give the client less rope. On the other hand,
|
* Some sites may want to give the client less rope. On the other hand,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user