mailcow-dockerized
2026-11mailcow: dockerized - ๐ฎ + ๐ = ๐
- Maintenance
- ActiveBased on the last push: commit history is not collected yet
- License
- GPL-3.0Copyleft ยท OSI-approved
- Security
- 30 advisories3 critical, 14 high, 9 medium, 4 low ยท Scorecard 5.7/10
- Supported versions
- No scheduleendoflife.date does not track this project
13.8k stars ยท 1.9k forks ยท 506 open issues ยท last release 10 days ago ยท data checked 5 hours ago
Breaking changes
What to check before upgrading, taken from the notes of the last 30 releases.
- 2026-11Nov 5, 2026
โ ๏ธ Breaking Changes
- Sync job API:
add/syncjobneeds asource_id, and the server fields (host1,port1,enc1,authmech1) are no longer accepted or returned. Existing jobs are migrated automatically.
Action: If you create or read sync jobs through the API, update your client. Create a source with
add/syncjob_source(or look it up withget/syncjob_source/all) and pass itssource_id.- Request body limit: 64 MB for UI/API,
NGINX_MAX_BODY_SIZE(default128m) for SOGo/EAS/DAV. If it is below your Postfixmessage_size_limit, large mails can't be sent via SOGo webmail or ActiveSync.
Action: If you raised the Postfix message size limit, set
NGINX_MAX_BODY_SIZEinmailcow.confabove it and rundocker compose up -d.- Custom nginx locations (
data/conf/nginx/site.*.custom): they are now limited to 64 MB as well, before there was no limit. Apps you run under the mailcow host this way (e.g. Nextcloud or Gitea under a path) reject larger uploads with413. Own server blocks indata/conf/nginx/*.conf(e.g. Nextcloud on its own subdomain) are not affected.
Action: Add
client_max_body_sizeto your location (e.g.client_max_body_size 0;for no limit) and rundocker compose restart nginx-mailcow. - Sync job API:
- 2025-07Jul 15, 2025
- โ ๏ธ Vulnerability fixedโ ๏ธ
- 2025-03Mar 25, 2025
Breaking Changes
Logins for Administrator, Domain Administrator, and Users have been separated:
- Administrator Login:
/admin - Domain Administrator Login:
/domainadmin - Users:
/
Direct SOGo login is now disabled. All unauthenticated requests to
/SOGowill be redirected to/.Users must use the mailcow login.
Administrators can define whether a user should be redirected to the mailcow UI or SOGo after login.
- Administrator Login:
Release history
All releases on GitHub๐๐ฎ Moovember 2026 | Feature & Security Update: Mailbox Groups, imapsync Rework & SOGo 5.12.13
> [!CAUTION]
> Please create a backup before updating.
> [!IMPORTANT]
> Important security update. We strongly recommend updating as soon as possible.
> Among other issues, this release fixes a remote code execution (RCE) vulnerability that can be exploited by authenticated admins and domain admins.
> Details on the fixed issues will be published early next week. Please read the breaking changes before updating.
> Workaround until you can update: limit access to admin and domain admin accounts.
โ ๏ธ Breaking Changes
- Sync job API:
add/syncjobneeds asource_id, and the server fields (host1,port1,enc1,authmech1) are no longer accepted or returned. Existing jobs are migrated automatically.
Action: If you create or read sync jobs through the API, update your client. Create a source with add/syncjob_source (or look it up with get/syncjob_source/all) and pass its source_id.
- Request body limit: 64 MB for UI/API,
NGINX_MAX_BODY_SIZE(default128m) for SOGo/EAS/DAV. If it is below your Postfixmessage_size_limit, large mails can't be sent via SOGo webmail or ActiveSync.
Action: If you raised the Postfix message size limit, set NGINX_MAX_BODY_SIZE in mailcow.conf above it and run docker compose up -d.
- Custom nginx locations (
data/conf/nginx/site.*.custom): they are now limited to 64 MB as well, before there was no limit. Apps you run under the mailcow host this way (e.g. Nextcloud or Gitea under a path) reject larger uploads with413. Own server blocks indata/conf/nginx/*.conf(e.g. Nextcloud on its own subdomain) are not affected.
Action: Add client_max_body_size to your location (e.g. client_max_body_size 0; for no limit) and run docker compose restart nginx-mailcow.
๐ Security
- SOGo 5.12.13, an upstream security release (notes)
- Several security fixes in mailcow (details next week)
- Fail2ban counts failed logins of all protocols (IMAP, POP3, SMTP, Sieve, EAS, DAV), 2FA rate limit
๐ New Features
All new features are documented at https://docs.mailcow.email/.
Mailbox groups & shared mailboxes
- Groups with their own address work as distribution lists. Members can come from all domains you manage.
- Members can send as the group address and as other addresses of the group.
- Share mailboxes with a group (IMAP, shown as
Shared/), as well as SOGo calendars and address books. Members can be subscribed automatically. - Shared mailboxes have no login of their own and are accessed through groups.
- Mailbox templates can be assigned per group, with a priority.
- Domain admins manage the groups of their domains (new ACL "Mailbox groups").
Identity provider sync (Keycloak, LDAP/AD)
- Groups from the IdP are synced to mailcow groups, including their members.
- Optional offboarding: if a user is disabled or deleted in the IdP, the mailbox login is disabled, but mail is still delivered. Off by default.
- The admin UI shows the sync status, conflicts and a preview.
imapsync rework
- Sync sources: the server settings (host, port, encryption, authentication) are defined once and used by any number of jobs. A source can be available to everyone, to specific domains or to single users. Presets cover common providers.
- OAuth2 (XOAUTH2) for Microsoft 365 and Google. Tokens are refreshed automatically, even while a job is running.
- Parallel jobs: several jobs run at the same time. The maximum and a bandwidth limit can be set in the admin UI.
- The certificate of the source server is verified (SSL and STARTTLS). The check can be turned off per source.
- Updated to imapsync 2.314.
API keys
- Any number of API keys, each with a description, read-only or read-write access and its own IP allowlist.
- Keys from
mailcow.confare shown as locked service keys.
What's Changed
Features
- [Web][Dovecot] Rework imapsync: sync sources, OAuth2, Python runner by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7546
- [Web] Rework API keys: multiple keys + locked service keys from mailcow.conf by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7547
- [Web][Dovecot][SOGo][DockerApi] Add mailbox groups, shared mailboxes and identity provider sync by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7566
- [Netfilter] Rework: robust bans, no restart loops, identity provider outages are no failed logins by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7567
- [Web] Add Netfilter unban all button by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7593
Fixes & Security
- Fixes for the reworks: imapsync, logins/netfilter, groups, startup, hardening by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7589
- [SOGo] Update to 5.12.13 by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7590
Updates
- Update Alpine Images to 3.24 by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7563
- [Rspamd] Update to 4.2.3 by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7569
- [ACME][Dockerapi][Dovecot][Olefy][PHP][Rspamd][SOGo][Unbound][Watchdog] Update image tags by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7572
- [Web] Update composer libraries by @FreddleSpl0it in https://github.com/mailcow/mailcow-dockerized/pull/7568
- Update redis Docker tag to v7.4.12 by @renovate[bot] in https://github.com/mailcow/mailcow-dockerized/pull/7555
- Update dependency tianon/gosu to v1.20 by @renovate[bot] in https://github.com/mailcow/mailcow-dockerized/pull/7551
- [Postfix] update postscreen_access.cidr by @milkmaker in https://github.com/mailcow/mailcow-dockerized/pull/7584
Translations
- Translations update from Weblate by @milkmaker in https://github.com/mailcow/mailcow-dockerized/pull/7542