All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
This version introduces breaking changes in the configuration file. Please read the UPGRADING.md file for more information on how to upgrade from previous versions.
- Distributed rate-limiting and fail2ban.
- Expressions in configuration files.
- Do not include
STATUS
in IMAPNOOP
responses (#234). - Redirect OAuth using a
301
instead of a307
code.
This version requires a database migration and introduces breaking changes in the configuration file. Please read the UPGRADING.md file for more information.
- Performance enhancements:
- Messages are parsed only once and their offsets stored in the database, which avoids having to parse them on every
FETCH
request. - Background full-text indexing.
- Optimization of database access functions.
- Messages are parsed only once and their offsets stored in the database, which avoids having to parse them on every
- Storage layer improvements:
- In addition to
FoundationDB
andSQLite
, now it is also possible to useRocksDB
,PostgreSQL
andmySQL
as a storage backend. - Blobs can now be stored in any of the supported data stores, it is no longer limited to the file system or S3/MinIO.
- Full-text searching con now be done internally or delegated to
ElasticSearch
. - Spam databases can now be stored in any of the supported data stores or
Redis
. It is no longer necessary to have an SQL server to use the spam filter.
- In addition to
- Internal directory:
- User account, groups and mailing lists can now be managed directly from Stalwart without the need of an external LDAP or SQL directory.
- HTTP API to manage users, groups, domains and mailing lists.
- IMAP4rev1
Recent
flag support, which improves compatibility with old IMAP clients. - LDAP bind authentication, to support some LDAP servers such as
lldap
which do not expose the userPassword attribute. - Messages marked a spam by the spam filter can now be automatically moved to the account's
Junk Mail
folder. - Automatic creation of JMAP identities.
- Spamhaus DNSBL return codes.
- CLI tool reports authentication errors rather than a parsing error.
This version introduces some breaking changes in the configuration file. Please read the UPGRADING.md file for more information.
- Built-in Spam and Phishing filter.
- Scheduled queries on some directory types.
- In-memory maps and lists containing glob or regex patterns.
- Remote retrieval of in-memory list/maps with fallback mechanisms.
- Macros and support for including files from TOML config files.
config.toml
is now split in multiple TOML files for better organization.- BREAKING: Configuration key prefix
jmap.sieve
(JMAP Sieve Interpreter) has been renamed tosieve.untrusted
. - BREAKING: Configuration key prefix
sieve
(SMTP Sieve Interpreter) has been renamed tosieve.trusted
.
- Journal logging support
- IMAP support for UTF8 APPEND
- Replaced
rpgp
withsequoia-pgp
due to rpgp bug.
- Fix: IMAP folders that contain a & can't be used (#90)
- Fix: Ignore empty lines in IMAP requests
- Option to disable IMAP All Messages folder (#68).
- Invalid IMAP
FETCH
responses for non-UTF-8 messages (#70) - Allow
STATUS
andACL
IMAP operations on virtual mailboxes. - IMAP
SELECT QRESYNC
without specifying a UID causes panic (#67)
- Arithmetic and logical expression evaluation in Sieve scripts.
- Support for storing query results in Sieve variables.
- Configurable protocol flags for Milter filters.
- ManageSieve
PUTSCRIPT
should replace existing scripts.
- TCP listener option
nodelay
.
- Successful authentication requests should not count when rate limiting
- Case insensitive Inbox selection
- Automatically create Inbox for group accounts
- Encryption at rest with S/MIME or OpenPGP.
- Support for referencing context variables from dynamic values.
- Support for PKCS8v1 ED25519 keys (#20).
- Sender and recipient address rewriting using regular expressions and sieve scripts.
- Subaddressing and catch-all addresses using regular expressions (#10).
- Added CLI to Docker container (#19).
- Workaround for a bug in
sqlx
that caused SQL time-outs (#15). - Support for ED25519 certificates in PEM files (#20).
- Better handling of concurrent IMAP UID map modifications (#17).
- LDAP domain lookups from SMTP rules.
- Support for OpenLDAP password hashing schemes between curly brackets (#8).
- Add CA certificates to Docker runtime (#5).
- Rewritten IMAP server to have direct access to the message store (no more IMAP proxy).
- ManageSieve support.
- Added UTF8=ACCEPT (RFC 6855) support.
- Fixed BODY[1] bug.
Initial release.