Maurus Decimus
|
e7cde9b3fa
|
v1.1.0
|
2026-11-09 11:40:52 +01:00 |
|
Maurus Decimus
|
8b32686532
|
v1.0.3
|
2026-11-04 09:22:00 +01:00 |
|
Maurus Decimus
|
1d66d65daf
|
v1.0.2
|
2026-11-02 12:15:29 +01:00 |
|
Maurus Decimus
|
23b69755cb
|
v1.0.1
|
2026-10-28 14:44:59 +01:00 |
|
Maurus Decimus
|
47df4c0bae
|
v1.0.0
|
2026-10-26 16:45:06 +01:00 |
|
Maurus Decimus
|
aa47d8ef7b
|
Pin WebUI to 1.x
|
2026-10-18 19:54:34 +02:00 |
|
Maurus Decimus
|
2321f1b5aa
|
Add STALWART_INCLUDE_SECRETS migration helper
|
2026-10-18 19:44:35 +02:00 |
|
Maurus Decimus
|
1e38a0e684
|
Fix iTIP: Merging a received update does not copy the VTIMEZONE definitions it carries, so an occurrence moved by an external organizer can reference a TZID (for example W. Europe Standard Time) the stored event no longer defines, and Apple Calendar shows both the original and the moved occurrence.
|
2026-10-18 19:08:50 +02:00 |
|
Maurus Decimus
|
b9bf134066
|
Fix IMAP: APPEND and COPY/MOVE into another accounts mailbox do not change the JMAP EmailDelivery state
|
2026-10-15 17:27:39 +02:00 |
|
Maurus Decimus
|
6296929fc4
|
Fix WebDAV: PROPFIND allprop returns DAV:current-user-principal, so Windows Explorer shows every file and folder under the account name
|
2026-10-15 17:21:11 +02:00 |
|
Maurus Decimus
|
21e1831dee
|
Fix OAuth: Loopback redirect URIs without a path (for example http://127.0.0.1:45678) are not matched against registered loopback URIs on any port and are rejected by dynamic client registration
|
2026-10-15 17:07:06 +02:00 |
|
Maurus Decimus
|
e27d49154f
|
Fix IMAP: SEARCH RETURN with MIN or MAX alongside ALL returns only the minimum and maximum in ALL, and SAVE combined with MIN or MAX and ALL or COUNT saves only the minimum and maximum instead of every match
|
2026-10-15 16:42:24 +02:00 |
|
Maurus Decimus
|
ee36325cff
|
Bump dns-update to 0.6.0
|
2026-10-15 16:23:58 +02:00 |
|
Maurus Decimus
|
18f4e95050
|
v0.16.26
|
2026-10-11 18:03:07 +02:00 |
|
Maurus Decimus
|
d954151e96
|
Use patched hickory-dns fork with DNSSEC fixes
|
2026-10-11 17:43:45 +02:00 |
|
Maurus Decimus
|
1ff6e70ea1
|
Fix JMAP: A VacationResponse/set that only sets isEnabled on an account without a vacation response activates an empty Sieve script
|
2026-10-11 15:54:25 +02:00 |
|
Maurus Decimus
|
8a7e4485df
|
Fix JMAP: onSuccessUpdateEmail and onSuccessDestroyEmail entries in EmailSubmission/set that name an existing submission by id update or destroy the Email with the same id instead of the submissions own Email
|
2026-10-11 15:48:15 +02:00 |
|
Maurus Decimus
|
2f5b9f2c69
|
CI improvements
|
2026-10-08 15:02:27 +02:00 |
|
Maurus Decimus
|
d9d2372a4c
|
Bump to rust-s3 0.38
|
2026-10-08 11:04:58 +02:00 |
|
Maurus Decimus
|
b3982081fd
|
Fix OIDC: When the access token lacks the claimUsername claim but has an email claim, the account is built from email without consulting the userinfo endpoint
|
2026-10-08 10:48:38 +02:00 |
|
Maurus Decimus
|
2af9acfd61
|
Fix Milter: End-of-headers is not sent to milters that negotiate SMFIP_NOHDRS without SMFIP_NOEOH, so the transaction stalls until it times out
|
2026-10-08 10:37:49 +02:00 |
|
Maurus Decimus
|
92c998138e
|
Fix RocksDB: Blob garbage collection rewrites every stored blob on each compaction of the blobs column family, about once per 128MB of new mail
|
2026-10-08 10:35:25 +02:00 |
|
Maurus Decimus
|
7d2fbd75d8
|
Fix JMAP: Mailbox/set allows duplicate sibling names when moving a mailbox and rejects case-only renames
|
2026-10-08 10:28:28 +02:00 |
|
Maurus Decimus
|
3f657330c0
|
Fix CI
|
2026-10-05 07:04:56 +02:00 |
|
Maurus Decimus
|
6cf6f3c6d0
|
Fix Spam filter: Removing a duplicate training sample of a message reclassified on the same day clears the blob link of the sample that is kept
|
2026-10-04 19:00:26 +02:00 |
|
Maurus Decimus
|
293c66e4c4
|
Fix WebUI: A blob store read error at startup, such as an S3 authentication failure, stops the web interface from being downloaded
|
2026-10-04 18:43:53 +02:00 |
|
Maurus Decimus
|
063e4ac90c
|
Fix RocksDB: The info log (LOG, LOG.old.*) grows without limit because log rotation and retention are left at RocksDB defaults
|
2026-10-04 18:39:02 +02:00 |
|
Maurus Decimus
|
4e86c7ad2c
|
DNSBL fixes
|
2026-10-04 18:35:53 +02:00 |
|
Maurus Decimus
|
a674be967a
|
Fix MTA: Queue quotas with an empty match expression are never enforced, including the global queue quota created on first start
|
2026-10-04 18:20:21 +02:00 |
|
Maurus Decimus
|
7b3af0dc21
|
Fix Spam filter: Messages with no text line long enough for a Pyzor digest are checked with the digest of empty input and tagged PYZOR
|
2026-10-04 18:16:58 +02:00 |
|
Maurus Decimus
|
57e6cb10e7
|
DKIM fixes
|
2026-10-04 18:13:19 +02:00 |
|
Maurus Decimus
|
45133dbca6
|
Updated dependabot scope
|
2026-10-03 10:08:52 +02:00 |
|
Maurus Decimus
|
648df2d6f1
|
Add LLM guidelines
|
2026-09-30 09:34:22 +02:00 |
|
Maurus Decimus
|
0250301558
|
Fix MySQL: Range deletions and search index removals start with a single unbounded DELETE and switch to chunks only after a timeout
|
2026-09-25 09:29:44 +02:00 |
|
Maurus Decimus
|
3ad3471e12
|
Fix MTA: MX records are resolved through the DNSSEC-validating resolver even when DANE is disabled
|
2026-09-24 20:22:07 +02:00 |
|
Maurus Decimus
|
23f76bd236
|
Fix MTA: A node without the outboundMta role stops replying to DATA and to JMAP submissions once about 1024 messages have been queued on it
|
2026-09-24 19:53:23 +02:00 |
|
Maurus Decimus
|
c133dd4d11
|
Fix JMAP: Email/import rejects a blobId that refers to a Blob/upload creation id in the same request ("#u0") with Invalid blob id.
|
2026-09-24 19:37:53 +02:00 |
|
Maurus Decimus
|
9ddc3582f7
|
JMAP Push fixes
|
2026-09-24 19:27:08 +02:00 |
|
Maurus Decimus
|
b16d7289e3
|
Fix Spam filter: Updating the rules reports success when objects fail to import, or when a configuration error stops the updated settings from being activated
|
2026-09-24 18:29:20 +02:00 |
|
Maurus Decimus
|
b3cf4736e0
|
Fix Spam filter: Updating the rules only adds new objects, so upstream changes to existing rules, DNSBL servers, HTTP lookups, lookup keys and file extensions never reach an existing installation
|
2026-09-24 18:26:22 +02:00 |
|
Maurus Decimus
|
008e97b179
|
Fix Antispam: Incremental training never advances its position past the first run
|
2026-09-24 18:15:23 +02:00 |
|
Maurus Decimus
|
b00ab00f69
|
Spam filter fixes
|
2026-09-24 18:13:08 +02:00 |
|
Maurus Decimus
|
912de3d517
|
Fix Troubleshoot tool: TLSA records are looked up for every MX host, including hosts whose zone is not DNSSEC signed
|
2026-09-24 18:05:07 +02:00 |
|
Maurus Decimus
|
46e5bada31
|
Move Redis script to struct
|
2026-09-24 17:42:51 +02:00 |
|
Maurus Decimus
|
9d1c75ab68
|
Meilisearch fail on timeout changes
|
2026-09-21 09:57:45 +02:00 |
|
Maurus Decimus
|
3eb07ea985
|
Redis fixes
|
2026-09-21 09:34:14 +02:00 |
|
Maurus Decimus
|
ca5f18853d
|
Fix Spam filter: Moving or copying a message from one account into another creates no training sample, so the classifier never learns from it
|
2026-09-21 09:17:15 +02:00 |
|
Maurus Decimus
|
66bcba4296
|
Fix ACME: The _acme-challenge TXT records published for a DNS-01 authorization are never removed
|
2026-09-21 08:50:19 +02:00 |
|
Maurus Decimus
|
87de8601bb
|
Expressions: bit_and function
|
2026-09-21 08:43:47 +02:00 |
|
Maurus Decimus
|
e963dddb83
|
Fix POP3: TOP msg n counts the n lines from the first byte of the message instead of from the first byte of the body
|
2026-09-18 15:33:35 +02:00 |
|
Maurus Decimus
|
b5f267f524
|
Fix MTA: DSNs that cannot be written to the store are discarded, the recipients are flagged as notified and the original message is removed from the queue, losing both the bounce and the message
|
2026-09-18 15:21:13 +02:00 |
|
Maurus Decimus
|
9c63da3611
|
Fix OIDC: Bearer tokens that carry no email, preferred_username or upn claim are always authenticated against the default directory
|
2026-09-18 14:51:33 +02:00 |
|
Maurus Decimus
|
de4aed29e6
|
Fix MTA: DMARC aggregate reports carry two spf elements per record and the version element of a DMARC aggregate report is written as 1 instead of 1.0
|
2026-09-18 14:27:24 +02:00 |
|
Maurus Decimus
|
99b843af67
|
Fix MTA: A mailing list whose recipients include another mailing list is accepted at RCPT TO and then rejected at local delivery with 550 5.5.0 Mailbox not found
|
2026-09-18 13:49:36 +02:00 |
|
Maurus Decimus
|
059e10698a
|
Fix FoundationDB: The cached read version is invalidated when any broadcast is received from another node
|
2026-09-18 12:14:12 +02:00 |
|
Maurus Decimus
|
e82d78be3f
|
Fix DNS: The DNSSEC resolver queries a single nameserver at a time, working around a hickory-resolver race that cancels the TCP retry when two nameservers return a truncated response in parallel
|
2026-09-18 11:51:31 +02:00 |
|
Maurus Decimus
|
1f802ab54e
|
Fix WebUI: A failed update no longer takes an Application offline
|
2026-09-18 11:46:30 +02:00 |
|
Maurus Decimus
|
5afbee6166
|
Retry destroy account actions
|
2026-09-18 09:45:20 +02:00 |
|
Maurus Decimus
|
d9dee0ad4f
|
Bump dependencies
|
2026-09-15 17:01:35 +02:00 |
|
Maurus Decimus
|
474dd0229c
|
DMARC fixes
|
2026-09-13 17:14:38 +01:00 |
|
Maurus Decimus
|
8a893ab25f
|
Fix Sieve: Messages filed with fileinto by a user script are treated as ham and are no longer moved to Junk when classified as spam
|
2026-09-13 08:53:45 +01:00 |
|
Maurus Decimus
|
e94af0eab0
|
Fix JMAP: CalendarEvent/get and ContactCard/get return only id when the properties argument is an empty list, instead of every property
|
2026-09-13 08:35:49 +01:00 |
|
Maurus Decimus
|
5081e39769
|
Fix JMAP: CalendarEvent/get returns null for requested recurrenceRule and recurrenceOverrides properties on synthetic recurrence instances
|
2026-09-13 08:11:36 +01:00 |
|
Maurus Decimus
|
998bc8c557
|
Fix JMAP: CalendarEvent/get returns null for baseEventId unless the id is a synthetic recurrence instance
|
2026-09-13 08:07:32 +01:00 |
|
Maurus Decimus
|
fc3df39e70
|
Fix JMAP: CalendarEvent/set stores useDefaultAlerts per user, and CalendarEvent/get returns false when it was never set
|
2026-09-13 08:04:24 +01:00 |
|
Maurus Decimus
|
673948f196
|
Minor security fixes
|
2026-09-13 07:52:46 +01:00 |
|
Maurus Decimus
|
115956669c
|
Bump to mail-builder 1.0.0
|
2026-09-12 22:58:58 +01:00 |
|
Maurus Decimus
|
9eca3dcb97
|
Fix FoundationDB: The cached read version is invalidated when a queue refresh or registry change broadcast is received
|
2026-09-11 09:21:20 +01:00 |
|
Maurus Decimus
|
ad5d10a62d
|
Fix MTA: Inbound throttle, outbound throttle and queue quota match expressions evaluate their if/then conditions
|
2026-09-11 08:45:35 +01:00 |
|
Maurus Decimus
|
1cc909e50a
|
Fix DNS: Append . to MX record hostnames
|
2026-09-11 08:35:14 +01:00 |
|
Maurus Decimus
|
b86b224967
|
Fix OIDC: Discovery is retried for 30 seconds before the directory is marked as unavailable, so a provider that is still starting up no longer requires a restart
|
2026-09-10 20:03:54 +01:00 |
|
Maurus Decimus
|
864561ee0d
|
Fix Recovery mode: Automatic IP banning is disabled during recovery and initial setup
|
2026-09-10 19:38:44 +01:00 |
|
Maurus Decimus
|
9d56d7df10
|
Fix WebUI: The cached bundle of an Application is discarded when its resourceUrl changes or the record is deleted, so the next unpack fetches the new resource
|
2026-09-10 19:34:30 +01:00 |
|
Maurus Decimus
|
9064735363
|
iMIP: Notification subjects and bodies omit the event start date, time and timezone for recurring events
|
2026-09-10 19:22:00 +01:00 |
|
Maurus Decimus
|
4f7a73a423
|
Fix WebDAV: PROPFIND responses do not declare the namespace of every requested property on the DAV:multistatus element
|
2026-09-10 19:00:20 +01:00 |
|
Maurus Decimus
|
515d6a90a5
|
Fix MTA: SMTP session state obtained before STARTTLS is discarded once the TLS handshake completes, as required by RFC 3207
|
2026-09-10 08:22:27 +01:00 |
|
Maurus Decimus
|
6d33d47509
|
Bump mail-parser
|
2026-09-10 07:45:41 +01:00 |
|
Maurus Decimus
|
e962003857
|
Fix JMAP: Calendar synthetic ids returned when expanding recurrences identify an occurrence by its recurrence id
|
2026-09-06 16:57:01 +02:00 |
|
Maurus Decimus
|
7fd75df825
|
Fix Spam filter: Domain and URL blocklists are queried only for text written as a link
|
2026-09-06 15:51:52 +02:00 |
|
Maurus Decimus
|
0c21fa5030
|
Fix default schema generation
|
2026-09-06 09:49:09 +02:00 |
|
Maurus Decimus
|
0d20a9578f
|
OpenTelemetry: log exporter does not include the parent spans attributes
|
2026-09-06 09:10:19 +02:00 |
|
Maurus Decimus
|
d2b88d195e
|
Fix MTA: Inbound DMARC and TLS aggregate reports that a reporter sends more than once are imported again as a duplicate entry
|
2026-09-04 14:03:55 +02:00 |
|
Maurus Decimus
|
5ca8e7ec12
|
Fix Sieve: fileinto :specialuse and specialuse_exists accept special-use attributes in the \Trash form
|
2026-09-04 12:23:53 +02:00 |
|
Maurus Decimus
|
34da0753ea
|
Sieve: Messages generated by user scripts are DKIM signed through the new SieveUserInterpreter.dkimSignDomain setting, which defaults to the accounts own domain
|
2026-09-04 12:03:00 +02:00 |
|
Maurus Decimus
|
7263a90052
|
Fix WebDAV: Accounts without a storage quota no longer advertise a 4 GiB limit in DAV:quota-available-bytes
|
2026-09-04 11:35:45 +02:00 |
|
Maurus Decimus
|
91e3ab9e38
|
Fix JMAP: EventSource ping events advertise the interval in seconds rather than milliseconds
|
2026-09-04 11:25:05 +02:00 |
|
Maurus Decimus
|
55631bc828
|
Fix iTIP: Detaching an occurrence that the recurrence rule already generates is sent as a METHOD:REQUEST carrying the RECURRENCE-ID instead of a METHOD:ADD
|
2026-09-04 11:16:17 +02:00 |
|
Maurus Decimus
|
044d66fc85
|
Fix JMAP: Calendar/get and AddressBook/get return every property when the properties argument is omitted or null
|
2026-09-04 11:12:32 +02:00 |
|
Maurus Decimus
|
1e49356069
|
Fix JMAP: CalendarEvent/set requests that ask for scheduling messages are rejected with a forbidden error when the account cannot send them
|
2026-09-04 11:02:57 +02:00 |
|
Maurus Decimus
|
9d071fc361
|
Fix Network: Listeners bound to the unspecified IPv6 address ([::]) fall back to IPv4 when socket creation fails with EPROTONOSUPPORT
|
2026-09-04 10:55:41 +02:00 |
|
Maurus Decimus
|
7ed4bce203
|
Fix IMAP: Every command in a pipelined STATUS or FETCH batch receives its tagged completion, instead of the first failing command dropping the responses for all commands queued behind it
|
2026-09-04 10:41:22 +02:00 |
|
Maurus Decimus
|
b616bc0fdf
|
Fix ossify
|
2026-09-04 10:28:07 +02:00 |
|
Maurus Decimus
|
b0dce3c4aa
|
Bump dependencies
|
2026-09-03 23:20:25 +02:00 |
|
Maurus Decimus
|
e7594d35f3
|
Fix LDAP: Servers that answer an unauthenticated bind (a non-empty DN with a zero-length password) with success no longer authenticate accounts without a password
|
2026-09-01 08:59:33 +02:00 |
|
Maurus Decimus
|
6d5c658914
|
CI: Pin cargo-zigbuild to 0.23.2 + fix flaky tests
|
2026-08-30 13:40:41 +02:00 |
|
Maurus Decimus
|
7d9b8ba53a
|
v0.16.20
|
2026-08-30 13:09:24 +02:00 |
|
Maurus Decimus
|
6245ecc3e3
|
Fix Cluster: Expired node id leases are released periodically rather than only during startup, so entries for removed nodes no longer remain Stale or Inactive indefinitely
|
2026-08-30 12:51:29 +02:00 |
|
Maurus Decimus
|
d5db252e20
|
HTTP: Do not offer Bearer auth on /api endpoints
|
2026-08-30 11:59:13 +02:00 |
|
Maurus Decimus
|
475cc94ed4
|
Fix Messages addressed to an inboundReportAddresses match are only discarded when they actually contain a report (closes #1088)
|
2026-08-30 11:47:28 +02:00 |
|
Maurus Decimus
|
323fb0e3b0
|
Fix Directory: Impersonation using the recovery admin fails when the impersonated account has not logged in before (LDAP and SQL directories)
|
2026-08-30 11:31:11 +02:00 |
|