The big one in this release is federation: Lonewolf can now talk to other XMPP servers. We also added direct TLS and a handful of extensions that desktop clients rely on.
Lonewolf is still pre-1.0 and runs as a single node. Full XMPP compliance and clustering are on the roadmap.
Your users can now exchange messages, presence, IQs, and roster subscriptions with people on other XMPP servers. If a host has a certificate and a public DNS name, federation is on by default, with nothing extra to configure.
Lonewolf authenticates peers by certificate only. The other server needs a trusted certificate and SASL EXTERNAL support. We don't support Server Dialback.
When the other server supports it, both directions share a single connection (XEP-0288). Servers also tell each other their stanza size and idle limits up front (XEP-0478).
Federation checks certificate revocation lists published by the CA, fetched over plain HTTP. If a CRL can't be downloaded, the connection goes ahead anyway. You can turn downloads off with s2s.tls.fetch_crls = false, or point s2s.tls.crls_path at a local file to use only that.
Clients and servers can now connect with TLS from the first byte (XEP-0368), using new dedicated listeners. Outbound federation discovers both STARTTLS and direct TLS endpoints.
Both are enabled by default.
Use letsencrypt.certificate_profile to pick one of the profiles your CA advertises, including short-lived certificates. If you change the profile, Lonewolf renews early so the new one takes effect right away.
You can now enable SCRAM-SHA-512 and SCRAM-SHA-512-PLUS. Be aware that they come from an expired Internet-Draft, not an RFC, and aren't registered with IANA.
Even if you leave SHA-512 login disabled, new accounts and password changes now store credentials that v0.2.0 can't read, so rolling back isn't straightforward.
See the standards reference for exactly what's supported and the configuration reference for every setting and its default.
Grab Source code (tar.gz) or Source code (zip) below, extract it, and run:
cargo build --release --locked -p lonewolf -p lonewolfctl -p lonewolfbench
The benchmark tool is now called lonewolfbench instead of lonewolf-bench, so update any scripts that call it. All you need is a stable Rust toolchain and a system linker on Linux or macOS. The quick start walks you through setup.
Full changelog: v0.2.0…v0.3.0
Licensed under Apache-2.0.