postfix-tls - Postfix TLS management
| Use Case | Command | Description |
|---|---|---|
| 🔐 Enable SMTP Client TLS | postfix tls enable-client | Enable opportunistic TLS in the Postfix SMTP client. |
| 🔐 Enable SMTP Server TLS | postfix tls enable-server | Create a new private key and self-signed certificate and enable opportunistic TLS in the server. |
| 🔑 Generate New Server Key & Cert | postfix tls new-server-key | Create a new private key and self-signed certificate without deploying them. |
| 📜 Generate New Server Cert (same key) | postfix tls new-server-cert | Generate a new certificate reusing the existing private key. |
| 📂 Deploy Server Cert & Key | postfix tls deploy-server-cert <certfile> <keyfile> | Deploy the generated certificate and private key. |
| 📝 Output CSR | postfix tls output-server-csr | Write a CSR for the specified keyfile to stdout. |
| 🌐 Output DANE TLSA Records | postfix tls output-server-tlsa | Write DANE TLSA RRset for the specified keys to stdout. |
| ✅ Check Client Defaults | postfix tls all-default-client | Exit 0 if all SMTP client TLS settings are at default. |
| ✅ Check Server Defaults | postfix tls all-default-server | Exit 0 if all SMTP server TLS settings are at default. |
postfix tls subcommand
The "postfix tls subcommand" feature enables opportunistic TLS in the Postfix SMTP client or server, and manages Postfix SMTP server private keys and certificates.
The following subcommands are available:
Enable opportunistic TLS in the Postfix SMTP client, if all SMTP client TLS settings are at their default values. Otherwise, suggest parameter settings without making any changes.
Options:
-r randsource 🌐 Specify randsource to update the value of the tls_random_source configuration parameter (typically, /dev/urandom). Prepend dev: to device paths or egd: to EGD socket paths.See also the all-default-client subcommand.
Create a new private key and self-signed server certificate and enable opportunistic TLS in the Postfix SMTP server, if all SMTP server TLS settings are at their default values. Otherwise, suggest parameter settings without making any changes.
Options:
-r randsource 🌐 The randsource parameter is as with enable-client above.-a algorithm 🔐 Algorithm (default rsa, ecdsa supported).-b bits 🔢 Key size (default 2048 for RSA, curve name for ECDSA).hostname... 🌐 CommonName and DNS alternative names.See also the all-default-server subcommand.
Create a new private key and self-signed server certificate, but do not deploy them. Log and display commands to deploy the new key and corresponding certificate. Also log and display commands to output a corresponding CSR or TLSA records which may be needed to obtain a CA certificate or to update DNS before the new key can be deployed.
Options:
-a algorithm 🔐 The algorithm defaults to rsa, and bits defaults to 2048. If you choose the ecdsa algorithm then bits will be an EC curve name (by default secp256r1, also known as prime256v1). Curves other than secp256r1, secp384r1 or secp521r1 are unlikely to be widely interoperable. When generating EC keys, use one of these three. DSA keys are obsolete and are not supported.-b bits 🔢 Key size.hostname... 🌐 The first hostname argument will be the CommonName of both the subject and issuer of the self-signed certificate. It, and any additional hostname arguments, will also be listed as DNS alternative names in the certificate. If no hostname is provided the value of the myhostname main.cf parameter will be used.Important Notes:
key-yyyymmdd-hhmmss.pem and cert-yyyymmdd-hhmmss.pem, where yyyymmdd is the calendar date and hhmmss is the time of day in UTC. For ECDSA, the file names start with eckey- and eccert- instead of key- and cert- respectively.This is just like new-server-key except that, rather than generating a new private key, any currently deployed private key is copied to the new key file. Thus if you're publishing DANE TLSA "3 1 1" or "3 1 2" records, there is no need to update DNS records. The algorithm and bits arguments are used only if no key of the same algorithm is already configured.
Important Notes:
This subcommand deploys the certificates in certfile and private key in keyfile (which are typically generated by the commands above, which will also log and display the full command needed to deploy the generated key and certificate). After the new certificate and key are deployed any obsolete keys and certificates may be removed by hand. The keyfile and certfile filenames may be relative to the Postfix configuration directory.
Write to stdout a certificate signing request (CSR) for the specified keyfile.
Options:
-k keyfile 🔑 Instead of an absolute pathname or a pathname relative to $config_directory, keyfile may specify one of the supported key algorithm names (see "postconf -T public-key-algorithms"). In that case, the corresponding setting from main.cf is used to locate the keyfile. The default keyfile value is rsa.hostname... 🌐 Zero or more hostname values can be specified. The default hostname is the value of myhostname main.cf parameter.Write to stdout a DANE TLSA RRset suitable for a port 25 SMTP server on host hostname with keys from any of the specified keyfile values. The default hostname is the value of the myhostname main.cf parameter.
Options:
-h hostname 🌐 The default hostname is the value of the myhostname main.cf parameter.keyfile... 🔑 Instead of absolute pathnames or pathnames relative to $config_directory, the keyfile list may specify names of supported public key algorithms (see "postconf -T public-key-algorithms"). In that case, the actual keyfile list uses the values of the corresponding Postfix server TLS key file parameters. If a parameter value is empty or equal to none, then no TLSA record is output for that algorithm. The default keyfile list consists of the two supported algorithms rsa and ecdsa.Exit with status 0 (success) if all SMTP client TLS settings are at their default values. Otherwise, exit with a non-zero status. This is typically used as follows:
postfix tls all-default-client &&\
postfix tls enable-client
Exit with status 0 (success) if all SMTP server TLS settings are at their default values. Otherwise, exit with a non-zero status. This is typically used as follows:
postfix tls all-default-server &&\
postfix tls enable-server
The "postfix tls subcommand" feature reads or updates the following configuration parameters.
command_directory (see 'postconf -d' output) 📍 The location of all postfix administrative commands.config_directory (see 'postconf -d' output) 📍 The default location of the Postfix main.cf and master.cf configuration files.openssl_path (openssl) 📍 The location of the OpenSSL command line program openssl(1).smtp_tls_loglevel (0) 📝 Enable additional Postfix SMTP client logging of TLS activity.smtp_tls_security_level (empty) 🔐 The default SMTP TLS security level for the Postfix SMTP client; when a non-empty value is specified, this overrides the obsolete parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername.smtp_tls_session_cache_database (empty) 💾 Name of the file containing the optional Postfix SMTP client TLS session cache.smtpd_tls_cert_file (empty) 📜 File with the Postfix SMTP server RSA certificate in PEM format.smtpd_tls_eccert_file (empty) 📜 File with the Postfix SMTP server ECDSA certificate in PEM format.smtpd_tls_eckey_file ($smtpd_tls_eccert_file) 🔑 File with the Postfix SMTP server ECDSA private key in PEM format.smtpd_tls_key_file ($smtpd_tls_cert_file) 🔑 File with the Postfix SMTP server RSA private key in PEM format.smtpd_tls_loglevel (0) 📝 Enable additional Postfix SMTP server logging of TLS activity.smtpd_tls_received_header (no) 📧 Request that the Postfix SMTP server produces Received: message headers that include information about the protocol and cipher used, as well as the remote SMTP client CommonName and client certificate issuer CommonName.smtpd_tls_security_level (empty) 🔐 The SMTP TLS security level for the Postfix SMTP server; when a non-empty value is specified, this overrides the obsolete parameters smtpd_use_tls and smtpd_enforce_tls.tls_random_source (see 'postconf -d' output) 🎲 The external entropy source for the in-memory tlsmgr(8) pseudo random number generator (PRNG) pool.Use "postconf readme_directory" or "postconf html_directory" to locate this information.
The Secure Mailer license must be distributed with this software.
The "postfix tls" command was introduced with Postfix version 3.1.
Viktor Dukhovni
Generated by phpman v4.9.26-1-g511901d Author: Che Dong Under GNU General Public License
2026-08-08 14:22 @216.73.216.150
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format