Files
bongo/docs/tls.md
T
2026-07-18 22:29:44 +02:00

2.7 KiB

TLS policy

Bongo offers TLS 1.3 and TLS 1.2 by default. Older protocol versions are only available on listeners whose explicit legacy-TLS option is enabled. Keep those listeners restricted to trusted legacy networks; do not expose them directly to the Internet.

The SMTP delivery agent uses opportunistic STARTTLS. When a peer offers STARTTLS, outbound_tls_verify verifies its certificate chain against the system trust store and verifies the connected MX or configured LMTP host name. It defaults to true. Set it to false only for a peer whose certificate cannot yet be repaired.

outbound_tls_required defaults to false, so delivery remains possible to SMTP servers which do not offer STARTTLS. Enabling it defers mail instead of sending plaintext. It is a global policy and should only be enabled when every configured destination is known to support TLS. A later policy layer may apply per-domain DANE or MTA-STS requirements.

External-account collection and submission use libcurl and independently verify certificates and host names by default. See external-accounts.md for the credential and provider policy.

Initial setup stores the default certificate and key as /etc/bongo/ssl.d/server.crt and /etc/bongo/ssl.d/server.key. The key is root-owned, group-readable by Bongo, and never world-readable. Setup creates a 3072-bit RSA self-signed certificate only when no pair exists. A complete existing pair is parsed and checked for a matching key before reuse; unsafe, invalid, or incomplete material fails closed.

The bongoworker ACME job implements RFC 8555 directly. It honors CA Retry-After limits and renewal information, writes candidate material first, validates the complete certificate/key pair, then deploys it atomically and signals the manager to reload TLS listeners. HTTP-01 is the default. DNS-01 publishes base64url(SHA-256(keyAuthorization)), waits for the exact TXT value through ldns, and removes only the value created for that authorization.

For DNS-01, /etc/bongo/acme.d/providers selects the longest matching zone. Use type: "nsupdate" for the native RFC 2136 adapter; rfc2136 is an alias. No external nsupdate process is used. The adapter supports SOA-primary discovery, explicit IPv4/IPv6 or host-name servers, non-default ports, and TSIG HMAC algorithms. Delegated CNAME challenges use match_zone, challenge_alias, and the provider's target zone. Installed examples are in /usr/share/bongo/examples/acme.

bongo-admin migrate moves the historical osslcert.pem and osslpriv.pem pair from the state database directory into ssl.d only when both files are present and the destination is empty. ACME deployments should atomically install a complete pair and reload or restart the affected Bongo agents.