1The stable Postfix release is called postfix-3.0.x where 3=major 2release number, 0=minor release number, x=patchlevel. The stable 3release never changes except for patches that address bugs or 4emergencies. Patches change the patchlevel and the release date. 5 6New features are developed in snapshot releases. These are called 7postfix-3.1-yyyymmdd where yyyymmdd is the release date (yyyy=year, 8mm=month, dd=day). Patches are never issued for snapshot releases; 9instead, a new snapshot is released. 10 11The mail_release_date configuration parameter (format: yyyymmdd) 12specifies the release date of a stable release or snapshot release. 13 14If you upgrade from Postfix 2.10 or earlier, read RELEASE_NOTES-2.11 15before proceeding. 16 17Notes for distribution maintainers 18---------------------------------- 19 20* New backwards-compatibility safety net. 21 22With NEW Postfix installs, you MUST install a main.cf file with 23the setting "compatibility_level = 2". See conf/main.cf for an 24example. 25 26With UPGRADES of existing Postfix systems, you MUST NOT change the 27main.cf compatibility_level setting, nor add this setting if it 28does not exist. 29 30Several Postfix default settings have changed with Postfix 3.0. To 31avoid massive frustration with existing Postfix installations, 32Postfix 3.0 comes with a safety net that forces Postfix to keep 33running with backwards-compatible main.cf and master.cf default 34settings. This safety net depends on the main.cf compatibility_level 35setting (default: 0). Details are in COMPATIBILITY_README. 36 37* New Postfix build system. 38 39The Postfix build/install procedure has changed to support Postfix 40dynamically-linked libraries and database plugins. These must not 41be "shared" with non-Postfix programs, and therefore must not be 42installed in a public directory. 43 44To avoid massive frustration due to broken patches, PLEASE BUILD 45POSTFIX FIRST WITHOUT APPLYING ANY PATCHES. Follow the INSTALL 46instructions (see "Building with Postfix dynamically-linked libraries 47and database plugins"), and see how things work and what the 48dynamically-linked libraries, database plugin, and configuration 49files look like. Then, go ahead and perform your platform-specific 50customizations. The INSTALL section "Tips for distribution maintainers" 51has further suggestions. 52 53Major changes - critical 54------------------------ 55 56[Incompat 20140714] After upgrading Postfix, "postfix reload" (or 57start/stop) is required. Several Postfix-internal protocols have 58been extended to support SMTPUTF8. Failure to reload or restart 59will result in mail staying queued, while Postfix daemons log 60warning messages about unexpected attributes. 61 62Major changes - default settings 63-------------------------------- 64 65[Incompat 20141009] The default settings have changed for relay_domains 66(new: empty, old: $mydestination) and mynetworks_style (new: host, 67old: subnet). However the backwards-compatibility safety net will 68prevent these changes from taking effect, giving the system 69administrator the option to make an old default setting permanent 70in main.cf or to adopt the new default setting, before turning off 71backwards compatibility. See COMPATIBILITY_README for details. 72 73[Incompat 20141001] A new backwards-compatibility safety net forces 74Postfix to run with backwards-compatible main.cf and master.cf 75default settings after an upgrade to a newer but incompatible Postfix 76version. See COMPATIBILITY_README for details. 77 78While the backwards-compatible default settings are in effect, 79Postfix logs what services or what email would be affected by the 80incompatible change. Based on this the administrator can make some 81backwards-compatibility settings permanent in main.cf or master.cf, 82before turning off backwards compatibility. 83 84See postconf.5.html#compatibility_level for details. 85 86[Incompat 20141001] The default settings 87have changed for append_dot_mydomain (new: no. old: yes), master.cf 88chroot (new: n, old: y), and smtputf8 (new: yes, old: no). 89 90Major changes - access control 91------------------------------ 92 93[Feature 20141119] Support for BCC actions in header/body_checks 94and milter_header_checks. There is no limit on the number of BCC 95actions that may be specified, other than the implicit limit due 96to finite storage. BCC support will not be implemented in Postfix 97delivery agent header/body_checks. 98 99It works in the same way as always_bcc and sender/recipient_bcc_maps: 100there can be only one address per action, recipients are added with 101the NOTIFY=NONE delivery status notification option, and duplicate 102recipients are ignored (with the same delivery status notification 103options). 104 105[Incompat 20141009] The default settings have changed for relay_domains 106(new: empty, old: $mydestination) and mynetworks_style (new: host, 107old: subnet). However the backwards-compatibility safety net will 108prevent these changes from taking effect, giving the system 109administrator the option to make an old default setting permanent 110in main.cf or to adopt the new default setting, before turning off 111backwards compatibility. See COMPATIBILITY_README for details. 112 113[Feature 20140618] New INFO action in access(5) tables, for consistency 114with header/body_checks. 115 116[Feature 20140620] New check_xxx_a_access (for xxx in client, 117reverse_client, helo, sender, recipient) implements access control 118on all A and AAAA IP addresses for respectively the client hostname, 119helo parameter, sender domain or recipient domain. This complements 120the existing check_xxx_mx_access and check_xxx_ns_access features. 121 122Major changes - address rewriting 123--------------------------------- 124 125[Incompat 20141001] The default settings have changed for 126append_dot_mydomain (new: no. old: yes), master.cf chroot (new: 127n, old: y), and smtputf8 (new: yes, old: no). 128 129Major changes - address verification 130------------------------------------ 131 132[Feature 20141227] The new smtp_address_verify_target parameter 133(default: rcpt) specifies what protocol stage decides if a recipient 134is valid. Specify "data" for servers that reject invalid recipients 135in response to the DATA command. 136 137Major changes - database support 138-------------------------------- 139 140[Feature 20140512] Support for Berkeley DB version 6. 141 142[Feature 20140618] The "randmap" lookup table performs random 143selection. This may be used to implement load balancing, for example: 144 145/etc/postfix/transport: 146 # Deliver my own domain as usual. 147 example.com : 148 .example.com : 149 150/etc/postfix/main.cf: 151 transport_maps = 152 # Deliver my own domain as usual. 153 hash:/etc/postfix/transport 154 # Deliver other domains via randomly-selected relayhosts 155 randmap:{smtp:smtp0.example.com, smtp:smtp1.example.com} 156 157A variant of this can randomly select SMTP clients with different 158smtp_bind_address settings. 159 160To implement different weights, specify lookup results multiple 161times. For example, to choose smtp:smtp1.example.com twice as often 162as smtp:smtp0.example.com, specify smtp:smtp1.example.com twice. 163 164A future version may support randmap:/path/to/file to load a list 165of results from file. 166 167[Feature 20140618] As the name suggests, the "pipemap" table 168implements a pipeline of lookup tables. The name of the table 169specifies the pipeline as a sequence of tables. For example, the 170following prevents SMTP mail to system accounts that have "nologin" 171as their login shell: 172 173 /etc/postfix/main.cf: 174 local_recipient_maps = 175 pipemap:{unix:passwd.byname, pcre:/etc/postfix/no-nologin.pcre} 176 alias_maps 177 178 /etc/postfix/no-nologin.pcre: 179 !/nologin/ whatever 180 181Each "pipemap:" query is given to the first table. Each table 182lookup result becomes the query for the next table in the pipeline, 183and the last table produces the final result. When any table lookup 184produces no result, the entire pipeline produces no result. 185 186A future version may support pipemap:/path/to/file to load a list 187of lookup tables from file. 188 189[Feature 20140924] Support for unionmap, with the same syntax as 190pipemap. This sends a query to all tables, and concatenates non-empty 191results, separated by comma. 192 193[Feature 20131121] The "static" lookup table now supports whitespace 194when invoked as "static:{ text with whitespace }", so that it can 195be used, for example, at the end of smtpd_mumble_restrictions as 196"check_mumble_access static:{reject text...}". 197 198[Feature 20141126] "inline:{key=value, { key = text with comma/space}}" 199avoids the need to create a database for just a few entries. 200 201Major changes - delivery status notifications 202--------------------------------------------- 203 204[Feature 20140321] Delivery status filter support, to replace the 205delivery status codes and explanatory text of successful or 206unsuccessful deliveries by Postfix mail delivery agents. 207 208This was originally implemented for sites that want to turn certain 209soft delivery errors into hard delivery errors, but it can also be 210used to censor out information from delivery confirmation reports. 211 212This feature is implemented as a filter that replaces the three-number 213enhanced status code and descriptive text in Postfix delivery agent 214success, bounce, or defer messages. Note: this will not override 215"soft_bounce=yes", and this will not change a successful delivery 216status into an unsuccessful status or vice versa. 217 218The first example turns specific soft TLS errors into hard 219errors, by overriding the first number in the enhanced status code. 220 221/etc/postfix/main.cf: 222 smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter 223 224/etc/postfix/smtp_dsn_filter: 225 /^4(\.\d+\.\d+ TLS is required, but host \S+ refused to start TLS: .+)/ 5$1 226 /^4(\.\d+\.\d+ TLS is required, but was not offered by host .+)/ 5$1 227 228The second example removes the destination command name and file 229name from local(8) successful delivery reports, so that they will 230not be reported when a sender requests confirmation of delivery. 231 232/etc/postfix/main.cf: 233 local_delivery_status_filter = pcre:/etc/postfix/local_dsn_filter 234 235/etc/postfix/local_dsn_filter: 236 /^(2\S+ delivered to file).+/ $1 237 /^(2\S+ delivered to command).+/ $1 238 239This feature is supported in the lmtp(8), local(8), pipe(8), smtp(8) 240and virtual(8) delivery agents. That is, all delivery agents that 241actually deliver mail. It will not be implemented in the error and 242retry pseudo-delivery agents. 243 244The new main.cf parameters and default values are: 245 246 default_delivery_status_filter = 247 lmtp_delivery_status_filter = $default_delivery_status_filter 248 local_delivery_status_filter = $default_delivery_status_filter 249 pipe_delivery_status_filter = $default_delivery_status_filter 250 smtp_delivery_status_filter = $default_delivery_status_filter 251 virtual_delivery_status_filter = $default_delivery_status_filter 252 253See the postconf(5) manpage for more details. 254 255[Incompat 20140618] The pipe(8) delivery agent will now log a limited 256amount of command output upon successful delivery, and will report 257that output in "SUCCESS" delivery status reports. This is another 258good reason to disable inbound DSN requests at the Internet perimeter. 259 260[Feature 20140907] With "confirm_delay_cleared = yes", Postfix 261informs the sender when delayed mail leaves the queue (this is in 262addition to the delay_warning_time feature that warns when mail is 263still queued). This feature is disabled by default, because it can 264result in a sudden burst of notifications when the queue drains at 265the end of a prolonged network outage. 266 267Major changes - dns 268------------------- 269 270[Feature 20141128] Support for DNS server reply filters in the 271Postfix SMTP/LMTP client and SMTP server. This helps to work around 272mail delivery problems with sites that have incorrect DNS information. 273Note: this has no effect on the implicit DNS lookups that are made 274by nsswitch.conf or equivalent mechanisms. 275 276This feature renders each lookup result as one line of text in 277standard zone-file format as shown below. The class field is always 278"IN", the preference field exists only for MX records, the names 279of hosts, domains, etc. end in ".", and those names are in ASCII 280form (xn--mumble form for internationalized domain names). 281 282 name ttl class type preference value 283 --------------------------------------------------------- 284 postfix.org. 86400 IN MX 10 mail.cloud9.net. 285 286Typically, one would match this text with a regexp: or pcre: table. 287When a match is found, the table lookup result specifies an action. 288By default, the table query and the action name are case-insensitive. 289Currently, only the IGNORE action is implemented. 290 291For safety reasons, Postfix logs a warning or defers mail delivery 292when a DNS reply filter removes all lookup results from a successful 293query. 294 295The Postfix SMTP/LMTP client uses the smtp_dns_reply_filter and 296lmtp_dns_reply_filter features only for Postfix SMTP client lookups 297of MX, A, and AAAAA records to locate a remote SMTP or LMTP server, 298including lookups that implement the features reject_unverified_sender 299and reject_unverified_recipient. The filters are not used for lookups 300made through nsswitch.conf and similar mechanisms. 301 302The Postfix SMTP server uses the smtpd_dns_reply_filter feature 303only for Postfix SMTP server lookups of MX, A, AAAAA, and TXT records 304to implement the features reject_unknown_helo_hostname, 305reject_unknown_sender_domain, reject_unknown_recipient_domain, 306reject_rbl_*, and reject_rhsbl_*. The filter is not used for lookups 307made through nsswitch.conf and similar mechanisms, such as lookups 308of the remote SMTP client name. 309 310[Feature 20141126] Nullmx support (MX records with a null hostname). 311This change affects error messages only. The Postfix SMTP client 312already bounced mail for such domains, and the Postfix SMTP server 313already rejected such domains with reject_unknown_sender/recipient_domain. 314This feature introduces a new SMTP server configuration parameter 315nullmx_reject_code (default: 556). 316 317Major changes - dynamic linking 318------------------------------- 319 320[Feature 20140530] Support to build Postfix with Postfix 321dynamically-linked libraries, and with dynamically-loadable database 322clients. These MUST NOT be used by non-Postfix programs. Postfix 323dynamically-linked libraries introduce minor runtime overhead and 324result in smaller Postfix executable files. Dynamically-loadable 325database clients are useful when you distribute or install pre-compiled 326packages. Postfix 3.0 supports dynamic loading for CDB, LDAP, LMDB, 327MYSQL, PCRE, PGSQL, SDBM, and SQLITE database clients. 328 329This implementation is based on Debian code by LaMont Jones, initially 330ported by Viktor Dukhovni. Currently, support exists for recent 331versions of Linux, FreeBSD, MacOS X, and for the ancient Solaris 9. 332 333To support Postfix dynamically-linked libraries and dynamically-loadable 334database clients, the Postfix build procedure had to be changed 335(specifically, the files makedefs and Makefile.in, and the files 336postfix-install and post-install that install or update Postfix). 337 338[Incompat 20140530] The Postfix 3.0 build procedure expects that 339you specify database library dependencies with variables named 340AUXLIBS_CDB, AUXLIBS_LDAP, etc. With Postfix 3.0 and later, the 341old AUXLIBS variable still supports building a statically-loaded 342CDB etc. database client, but only the new AUXLIBS_CDB etc. variables 343support building a dynamically-loaded or statically-loaded CDB etc. 344database client. See CDB_README, LDAP_README, etc. for details. 345 346Failure to follow this advice will defeat the purpose of dynamic 347database client loading. Every Postfix executable file will have 348database library dependencies. And that was exactly what dynamic 349database client loading was meant to avoid. 350 351Major changes - future proofing 352------------------------------- 353 354[Cleanup 20141224] The changes described here have no visible effect 355on Postfix behavior, but they make Postfix code easier to maintain, 356and therefore make new functionality easier to add. 357 358* Compile-time argument typechecks of non-printf/scanf-like variadic 359 function argument lists. 360 361* Deprecating the use of "char *" for non-text purposes such as 362 memory allocation and pointers to application context for call-back 363 functions. This dates from long-past days before void * became 364 universally available. 365 366* Replace integer types for counters and sizes with size_t or ssize_t 367 equivalents. This eliminates some wasteful 64<->32bit conversions 368 on 64-bit systems. 369 370Major changes - installation pathnames 371-------------------------------------- 372 373[Incompat 20140625] For compliance with file system policies, some 374non-executable files have been moved from $daemon_directory to the 375directory specified with the new meta_directory configuration 376parameter which has the same default value as the config_directory 377parameter. This change affects non-executable files that are shared 378between multiple Postfix instances such as postfix-files, dynamicmaps.cf, 379and multi-instance template files. 380 381For backwards compatibility with Postfix 2.6 .. 2.11, specify 382"meta_directory = $daemon_directory" in main.cf before installing 383or upgrading Postfix, or specify "meta_directory = /path/name" on 384the "make makefiles", "make install" or "make upgrade" command line. 385 386Major changes - milter 387---------------------- 388 389[Feature 20140928] Support for per-Milter settings that override 390main.cf parameters. For details see the section "Advanced policy 391client configuration" in the SMTPD_POLICY_README document. 392 393Here is an example that uses both old and new syntax: 394 395 smtpd_milters = { inet:127.0.0.1:port1, default_action=accept, ... }, 396 inet:127.0.0.1:port2, ... 397 398The supported attribute names are: command_timeout, connect_timeout, 399content_timeout, default_action, and protocol. These have the same 400names as the corresponding main.cf parameters, without the "milter_" 401prefix. 402 403The per-milter settings are specified as attribute=value pairs 404separated by comma or space; specify { name = value } to allow 405spaces around the "=" or within an attribute value. 406 407[Feature 20141018] DMARC compatibility: when a Milter inserts a 408header ABOVE Postfix's own Received: header, Postfix no longer 409exposes its own Received: header to Milters (violating protocol) 410and Postfix no longer hides the Milter-inserted header from Milters 411(wtf). 412 413Major changes - parameter syntax 414-------------------------------- 415 416[Feature 20140921] In preparation for configurable mail headers and 417logging, new main.cf support for if-then-else expressions: 418 419 ${name?{text1}:{text2}} 420 421and for logical expressions: 422 423 ${{text1}=={text2}?{text3}:{text4}} 424 ${{text1}!={text2}?{text3}:{text4}} 425 426Whitespace before and after {text} is ignored. This can help to 427make complex expressions more readable. See the postconf(5) manpage 428for further details. 429 430[Feature 20140928] Support for whitespace in daemon command-line 431arguments. For details, see the "Command name + arguments" section 432in the master(5) manpage. Example: 433 434 smtpd -o { parameter = value containing whitespace } ... 435 436The { ... } form is also available for non-option command-line 437arguments in master.cf, for example: 438 439 pipe ... argv=command { argument containing whitespace } ... 440 441In both cases, whitespace immediately after "{" and before "}" 442is ignored. 443 444[Feature 20141005] Postfix import_environment and export_environment 445now allow "{ name=value }" to protect whitespace in attribute values. 446 447[Feature 20141006] The new message_drop_header parameter replaces 448a hard-coded table that specifies what message headers the cleanup 449daemon will remove. The list of supported header names covers RFC 4505321, 5322, MIME RFCs, and some historical names. 451 452Major changes - pipe daemon 453--------------------------- 454 455[Incompat 20140618] The pipe(8) delivery agent will now log a limited 456amount of command output upon successful delivery, and will report 457that output in "SUCCESS" delivery status reports. This is another 458good reason to disable inbound DSN requests at the Internet perimeter. 459 460Major changes - policy client 461----------------------------- 462 463[Feature 20140703] This release introduces three new configuration 464parameters that control error recovery for failed SMTPD policy 465requests. 466 467 * smtpd_policy_service_default_action (default: 451 4.3.5 Server 468 configuration problem): The default action when an SMTPD policy 469 service request fails. 470 471 * smtpd_policy_service_try_limit (default: 2): The maximal number 472 of attempts to send an SMTPD policy service request before 473 giving up. This must be a number greater than zero. 474 475 * smtpd_policy_service_retry_delay (default: 1s): The delay between 476 attempts to resend a failed SMTPD policy service request. This 477 must be a number greater than zero. 478 479See postconf(5) for details and limitations. 480 481[Feature 20140928] Support for per-policy service settings that 482override main.cf parameters. For details see the section "Different 483settings for different Milter applications" in the MILTER_README 484document. 485 486Here is an example that uses both old and new syntax: 487 488smtpd_recipient_restrictions = ... 489 check_policy_service { inet:127.0.0.1:port3, default_action=DUNNO } 490 check_policy_service inet:127.0.0.1:port4 491 ... 492 493The per-policy service settings are specified as attribute=value pairs 494separated by comma or space; specify { name = value } to allow 495spaces around the "=" or within an attribute value. 496 497The supported attribute names are: default_action, max_idle, max_ttl, 498request_limit, retry_delay, timeout, try_limit. These have the same 499names as the corresponding main.cf parameters, without the 500"smtpd_policy_service_" prefix. 501 502[Feature 20140505] A client port attribute was added to the policy 503delegation protocol. 504 505[Feature 20140630] New smtpd_policy_service_request_limit feature to 506limit the number of requests per Postfix SMTP server policy connection. 507This is a workaround to avoid error-recovery delays with policy 508servers that cannot maintain a persistent connection. 509 510Major changes - position-independent executables 511------------------------------------------------ 512 513[Feature 20150205] Preliminary support for building position-independent 514executables (PIE), tested on Fedora Core 20, Ubuntu 14.04, FreeBSD 5159 and 10, and NetBSD 6. Specify: 516 517$ make makefiles pie=yes ...other arguments... 518 519On some systems, PIE is used by the ASLR exploit mitigation technique 520(ASLR = Address-Space Layout Randomization). Whether specifying 521"pie=yes" has any effect at all depends on the compiler. Reportedly, 522some compilers always produce PIE executables. 523 524Major changes - postscreen 525-------------------------- 526 527[Feature 20140501] Configurable time limit (postscreen_dnsbl_timeout) 528for DNSBL or DNSWL lookups. This is separate from the timeouts in 529the dnsblog(8) daemon which are controlled by system resolver(3) 530routines. 531 532Major changes - session fingerprint 533----------------------------------- 534 535[Feature 20140801] The Postfix SMTP server now logs at the end of 536a session how many times an SMTP command was successfully invoked, 537followed by the total number of invocations if some invocations 538were unsuccessful. 539 540This logging will enough to diagnose many problems without using 541verbose logging or network sniffer. 542 543 Normal session, no TLS: 544 disconnect from name[addr] ehlo=1 mail=1 rcpt=1 data=1 quit=1 545 546 Normal session. with TLS: 547 disconnect from name[addr] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 548 549 All recipients rejected, no ESMTP command pipelining: 550 disconnect from name[addr] ehlo=1 mail=1 rcpt=0/1 quit=1 551 552 All recipients rejected, with ESMTP command pipelining: 553 disconnect from name[addr] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 554 555 Password guessing bot, hangs up without QUIT: 556 disconnect from name[addr] ehlo=1 auth=0/1 557 558 Mis-configured client trying to use TLS wrappermode on port 587: 559 disconnect from name[addr] unknown=0/1 560 561Logfile analyzers can trigger on the presence of "/". It indicates 562that Postfix rejected at least one command. 563 564[Feature 20150118] As a late addition, the SMTP server now also 565logs the total number of commands (as "commands=x/y") even when the 566client did not send any commands. This helps logfile analyzers to 567recognize sessions without commands. 568 569Major changes - smtp client 570--------------------------- 571 572[Feature 20141227] The new smtp_address_verify_target parameter 573(default: rcpt) determines what protocol stage decides if a recipient 574is valid. Specify "data" for servers that reject recipients after 575the DATA command. 576 577Major changes - smtputf8 578------------------------ 579 580[Incompat 20141001] The default settings have changed for 581append_dot_mydomain (new: no, old: yes), master.cf chroot (new: 582n, old: y), and smtputf8 (new: yes, old: no). 583 584[Incompat 20140714] After upgrading Postfix, "postfix reload" (or 585start/stop) is required. Several Postfix-internal protocols have 586been extended to support SMTPUTF8. Failure to reload or restart 587will result in mail staying queued, while Postfix daemons log 588warning messages about unexpected attributes. 589 590[Feature 20140715] Support for Email Address Internationalization 591(EAI) as defined in RFC 6531..6533. This supports UTF-8 in SMTP/LMTP 592sender addresses, recipient addresses, and message header values. 593The implementation is based on initial work by Arnt Gulbrandsen 594that was funded by CNNIC. 595 596See SMTPUTF8_README for a description of Postfix SMTPUTF8 support. 597 598[Feature 20150112] UTF-8 Casefolding support for Postfix lookup 599tables and matchlists (mydestination, relay_domains, etc.). This 600is enabled only with "smtpuf8 = yes". 601 602[Feature 20150112] With smtputf8_enable=yes, SMTP commands with 603UTF-8 syntax errors are rejected, table lookup results with invalid 604UTF-8 syntax are handled as configuration errors, and UTF-8 syntax 605errors in policy server replies result in execution of the policy 606server's default action. 607 608Major changes - tls support 609--------------------------- 610 611(see "Major changes - delivery status notifications" above for 612turning 4XX soft errors into 5XX bounces when a remote SMTP server 613does not offer STARTTLS support). 614 615[Feature 20140209] the Postfix SMTP client now also falls back to 616plaintext when TLS fails AFTER the TLS protocol handshake. 617 618[Feature 20140218] The Postfix SMTP client now requires that a queue 619file is older than $minimal_backoff_time, before falling back from 620failed TLS to plaintext (both during or after the TLS handshake). 621 622[Feature 20141021] Per IETF TLS WG consensus, the tls_session_ticket_cipher 623default setting was changed from aes-128-cbc to aes-256-cbc. 624 625[Feature 20150116] TLS wrappermode support in the Postfix smtp(8) 626client (new smtp_tls_wrappermode parameter) and in posttls-finger(1) 627(new -w option). There still is life in that deprecated protocol, 628and people should not have to jump hoops with stunnel. 629