- Python 98.3%
- Shell 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| mailcow-share-manager | ||
| .gitlab-ci.yml | ||
| build-package | ||
| LICENSE | ||
| README.md | ||
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