No description
  • Python 98.3%
  • Shell 1.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-01-12 18:24:42 +00:00
mailcow-share-manager Edit mailcow-share-manager 2026-01-12 18:24:42 +00:00
.gitlab-ci.yml add ci script 2026-01-11 14:45:45 +01:00
build-package ad dpackaging script 2026-01-11 14:44:21 +01:00
LICENSE Add license 2026-01-11 14:52:27 +01:00
README.md update readme 2026-01-11 19:49:04 +01:00

mailcow-share-manager

mailcow-share-manager ist ein CLI-Admin-Tool zur zentralen Verwaltung von Mailcow-Freigaben über SOGo (Kalender & Adressbücher) und Dovecot (Mailbox-ACLs).

Ziel ist eine reproduzierbare, skriptfähige, serverseitige Verwaltung von Shares, ohne Nutzung des SOGo-Webinterfaces.


FEATURES

SOGo:

  • Kalender- & Adressbuch-Freigaben erstellen und löschen
  • Rollen-Aliase (read / write / write-full)
  • Automatisches Subscribe / Unsubscribe
  • Shares listen (aggregiert oder raw)
  • Alle vorhandenen Ressourcen anzeigen (auch ohne Freigaben)
  • Desired-State-Fixer für eindeutige Displaynamen → „Persönlicher Kalender (user@domain)“

Dovecot:

  • Mailbox-ACLs setzen und entfernen
  • Rekursive Freigabe ganzer Postfächer
  • Wildcards (, INBOX/)
  • ACL-Inheritance aktivieren/deaktivieren
  • Mailboxen auflisten (Root oder rekursiv)

Allgemein:

  • Auto-Discovery von /opt/mailcow-dockerized
  • Direkte Nutzung der Mailcow-Docker-Container
  • Kein manueller DB-Zugriff notwendig
  • Dry-Run / Apply Prinzip
  • Idempotente Operationen

INSTALLATION

Über das bashclub APT-Repository:

wget -O - https://apt.bashclub.org/gpg/bashclub.pub | gpg --dearmor > /usr/share/keyrings/bashclub-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/bashclub-keyring.gpg] https://apt.bashclub.org/release $(lsb_release -cs) main" > /etc/apt/sources.list.d/bashclub.list

apt update apt install mailcow-share-manager

Das Binary wird installiert als: /usr/bin/mailcow-share-manager


VORAUSSETZUNGEN

  • laufende Mailcow-Installation (Docker Compose)
  • Standardpfad: /opt/mailcow-dockerized
  • Root-Rechte oder Docker-Zugriff

GRUNDKONZEPTE

Share-Typen:

  • calendar → SOGo Kalender
  • addressbook → SOGo Adressbücher
  • mailbox → Dovecot IMAP-Mailboxen

SOGo Rollen-Aliase:

  • read → Lesen
  • write → Schreiben, private Termine nur busy
  • write-full → Schreiben inkl. privater Termine

Dovecot Rollen:

  • read → lookup, read
  • readwrite → read + write + delete
  • admin → volle ACL inkl. admin

BEISPIELE

Alle Shares anzeigen: mailcow-share-manager shares-list

Nur Kalender-Freigaben: mailcow-share-manager shares-list --type calendar

Raw-Modus (echte SOGo-Rollen): mailcow-share-manager shares-list --raw


ALLE SOGO-RESSOURCEN ANZEIGEN (ohne Freigaben)

mailcow-share-manager sogo-resources-list

Nur Kalender eines Users: mailcow-share-manager sogo-resources-list --type calendar --owner support@example.com


MAILBOXEN AUFLISTEN

Top-Level-Mailboxen: mailcow-share-manager mailboxes-list --owner support@example.com

Rekursiv: mailcow-share-manager mailboxes-list --owner support@example.com --subfolders


SHARES ERSTELLEN

Kalender freigeben (schreiben, private Termine nur busy): mailcow-share-manager shares-create
--type calendar
--owner support@example.com
--path Calendar/personal
--grantee user@example.com
--role write

Adressbuch freigeben: mailcow-share-manager shares-create
--type addressbook
--owner support@example.com
--path Contacts/personal
--grantee user@example.com
--role write

Ganze Mailbox rekursiv freigeben: mailcow-share-manager shares-create
--type mailbox
--owner support@example.com
--path INBOX
--grantee user@example.com
--role readwrite
--recursive

Oder mit Wildcard: mailcow-share-manager shares-create
--type mailbox
--owner support@example.com
--path "INBOX/*"
--grantee user@example.com
--role readwrite


SHARES LÖSCHEN

Kalender-Freigabe entfernen (inkl. Unsubscribe): mailcow-share-manager shares-delete
--type calendar
--owner support@example.com
--path Calendar/personal
--grantee user@example.com

Mailbox-ACL rekursiv entfernen: mailcow-share-manager shares-delete
--type mailbox
--owner support@example.com
--path INBOX
--grantee user@example.com
--recursive


DOVECOT ACL-INHERITANCE

Status anzeigen: mailcow-share-manager dovecot-inheritance

Einschalten: mailcow-share-manager dovecot-inheritance change on

Umschalten: mailcow-share-manager dovecot-inheritance toggle

Die Konfiguration wird in: data/conf/dovecot/extra.conf gesetzt und der Mailcow-Stack automatisch neu gestartet.


EINDEUTIGE DISPLAYNAMEN (DESIRED STATE)

Problem: Alle User haben „Persönlicher Kalender“

Lösung: Serverseitig erzwingen: „Persönlicher Kalender (user@domain)“

Dry-Run: mailcow-share-manager sogo-personal-displayname ensure

Anwenden: mailcow-share-manager sogo-personal-displayname ensure --apply

Nur Kalender: mailcow-share-manager sogo-personal-displayname ensure --which calendar --apply


SICHERHEIT & HINWEISE

  • Kein ACL „anyone“
  • Keine UI-Abhängigkeit
  • Idempotente Operationen
  • Geeignet für Automatisierung / GitOps / Skripte

LIZENZ

MIT License