100 Commits
Author SHA1 Message Date
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