I would like to propose adding a built-in Calendar Sync page to the Mailcow UI.
Goal:
Allow logged-in Mailcow mailbox users to create secure two-way sync jobs between their Mailcow/SOGo calendars and external calendar providers such as Google Calendar and Outlook/Microsoft 365.
Current situation:
Mailcow already supports calendars through SOGo/CalDAV, and users can connect clients manually. However, there is no built-in Mailcow UI for server-side two-way calendar synchronization with Google Calendar or Microsoft 365.
Requested features:
- A new user-level “Calendar Sync” page in Mailcow UI.
- Users must be logged into their mailbox account to create or manage sync jobs.
- Users can create multiple sync jobs.
- The Add button should ask the user to select two calendars to sync.
- Supported providers:
- Mailcow/SOGo calendar
- Google Calendar via OAuth
- Outlook/Microsoft 365 Calendar via OAuth / Microsoft Graph
- Future support for generic CalDAV
- Sync modes:
- Two-way
- Mailcow to external only
- External to Mailcow only
- Conflict options:
- Newest update wins
- Prefer Mailcow
- Prefer external calendar
- Manual conflict handling
- Security requirements:
- No plain-text password storage
- OAuth tokens encrypted at rest
- User can only manage their own sync jobs
- CSRF protection
- Rate limiting
- Audit logs
- No secrets in logs
- Recommended architecture:
- Mailcow UI page for setup
- Database tables for connected accounts, sync jobs, and event mappings
- Separate non-root worker container to perform sync
- Configurable sync interval
This would make Mailcow much more useful for users who rely on Google Calendar, Outlook/Microsoft 365, Alexa-connected calendars, mobile devices, and external scheduling tools while still wanting Mailcow/SOGo to remain their main self-hosted calendar system.
I am planning to do a few test and create my own little test and see where this takes me. i might come with some samples in the future.