Migration Univention Corporate Server & Kopano nach Zamba AD & Mailcow
Univention Corporate Server durch Zamba AD und Mailcow ersetzen
Migration von Univention UCS und Kopano zu Zamba Active Directory, Mailcow und Proxmox VE. Viele kleinere Unternehmen nutzen Univention Corporate Server hauptsächlich als Domain Controller und Benutzerverwaltung. Wenn UCS nur noch als Active Directory dient und Kopano ohnehin abgelöst werden soll, ist der Betrieb häufig unnötig aufwendig.
Mit Zamba Active Directory, Mailcow, Proxmox VE, optional Proxmox Mail Gateway und Mailpiler lässt sich eine schlanke, moderne Open-Source-Infrastruktur aufbauen, die schneller wartbar ist und sich ideal für kleine und mittlere Unternehmen eignet.
Updates von Mailcow und Zamba AD Controller laufen künftig in wenigen Minuten statt in mehreren Stunden.
Kunden, die Keycloak oder eine vollständig vom Hersteller supportete UCS-Umgebung benötigen, sollten weiterhin bei Univention bleiben.
Passende Kurse finden Sie auf cloudistboese.de unter den Themen Mailcow, Domain Controller ablösen und Alles ohne Windows.
Vorteile der Migration
- Univention UCS kann in kleinen Umgebungen ersetzt werden
- Active Directory bleibt mit Samba/Zamba erhalten
- Mailcow ersetzt Kopano als moderne Groupware
- Updates werden deutlich einfacher und schneller
- Proxmox VE ermöglicht Snapshots, Backups und einfache Wiederherstellung
- LDAP-Anbindung für Mailcow, Mailpiler und weitere Dienste bleibt möglich
- Die Umgebung wird schlanker, transparenter und besser wartbar
Systemvoraussetzungen
- Bestehender Univention Corporate Server im AD-Modus
- Kopano oder vergleichbare Groupware mit IMAP-Zugriff
- Proxmox VE 8.x oder neuer
- Linux Container mit installiertem Git
- Grundkenntnisse in DNS, Active Directory, Mailservern und Proxmox VE
Übersicht der Migration
- Zamba Active Directory als zweiten Domain Controller installieren
- Active Directory replizieren und prüfen
- DNS auf den neuen Domain Controller umstellen
- Mailcow installieren
- LDAP-Anbindung in Mailcow konfigurieren
- Benutzer und Mailboxen synchronisieren
- Mails von Kopano nach Mailcow migrieren
- Kalender und Kontakte übernehmen
- Aliase und Weiterleitungen prüfen
- Mailcow produktiv schalten
- FSMO-Rollen übernehmen
- Univention UCS demoten und abschalten
- LDAP-Clients auf den neuen Zamba AD umstellen
Zamba Active Directory als zweiten Domain Controller installieren
Die Installation erfolgt auf dem Proxmox Host, zum Beispiel im Verzeichnis /root.
git clone -b dev https://github.com/bashclub/zamba-lxc-toolbox
cd zamba-lxc-toolbox
cp conf/zamba.conf.example conf/zamba.conf
zamba.conf anpassen
In der Datei conf/zamba.conf werden die Werte an die bestehende Umgebung angepasst.
LXC_TEMPLATE_STORAGE="local"
LXC_ROOTFS_SIZE="32"
LXC_ROOTFS_STORAGE="rpool-data"
LXC_SHAREFS_SIZE="100"
LXC_SHAREFS_STORAGE="rpool-data"
LXC_HOSTNAME="zmb-ad"
LXC_DOMAIN="windomain.local"
LXC_IP="10.0.0.254/24"
LXC_GW="10.0.0.1"
LXC_DNS="10.0.0.4"
LXC_BRIDGE="vmbr0"
LXC_PWD='Admin123'
ZMB_REALM="WINDOMAIN.LOCAL"
ZMB_DOMAIN="WINDOMAIN"
ZMB_ADMIN_USER="administrator"
ZMB_ADMIN_PASS='Admin123'
Hinweis: LXC_DNS zeigt zunächst auf den alten UCS-DNS-Server. Bei Windows-Domänen sollte vorher gegebenenfalls das Funktionslevel geprüft werden.
Zamba AD Join starten
bash install.sh -i 100
Im Menü wird Zamba-AD-Join gewählt.
Replikation prüfen
Nach der Installation kann der Container betreten und die Replikation geprüft werden.
pct enter 100
su -
wbinfo -u
wbinfo -g
Wenn alle Benutzer und Gruppen angezeigt werden, ist der Join grundsätzlich erfolgreich.
Empfehlung: In Proxmox sollte anschließend der alte UCS-DNS-Server aus der Hostkonfiguration entfernt werden, sobald der neue Zamba AD DNS zuverlässig funktioniert.
smb.conf anpassen
Folgende Anpassungen können in der smb.conf hilfreich sein:
vi /etc/samba/smb.conf
[global]
ldap server require strong auth = no
dns forwarder = 1.1.1.1 1.0.0.1
DNS auf den neuen Domain Controller umstellen
DNS ist bei Active Directory fast immer der kritischste Punkt. Sobald der neue Zamba Domain Controller sauber repliziert, werden feste IP-Konfigurationen und DHCP-Einstellungen angepasst.
- Alle Server mit statischer IP erhalten den neuen Zamba AD als DNS-Server
- Im DHCP-Server wird der alte UCS-DNS durch den neuen DC ersetzt
- Alte UCS-DNS-Einträge werden später bereinigt
- RSAT DNS-Konsole zur Kontrolle verwenden
Merksatz: It was DNS.
Mailcow installieren
Für Mailcow wird ein weiterer LXC verwendet. Die Installation erfolgt ebenfalls über die Zamba LXC Toolbox.
cp conf/zamba.conf.example conf/zamba.conf
Für Mailcow müssen insbesondere Hostname und Netzwerkeinstellungen angepasst werden.
bash install.sh -i 101
Im Menü wird Mailcow gewählt.
Mailcow aktualisieren
pct enter 101
su -
cd /opt/mailcow-dockerized
apt install jq
./update.sh
Danach wird das Mailcow-Webinterface geöffnet:
https://10.0.0.253/admin
Grundkonfiguration von Mailcow
Unbedingt notwendige Schritte
- Admin-Passwort ändern: System / Konfiguration / Administrator bearbeiten
- Alle Maildomains eintragen: E-Mail / Konfiguration / Domains
- Schwellwerte und Quotas beachten
- LDAP-Bind-User im AD anlegen: zum Beispiel
bind-mailcow
LDAP in Mailcow konfigurieren
Die LDAP-Anbindung erfolgt unter:
System / Konfiguration / Zugang / Identity Provider
- Identity Provider: LDAP
- Host: IP des neuen Zamba AD
- Port: 636
- Benutze SSL: an
- Ignoriere SSL Fehler: an
- Base DN:
CN=Users,DC=windomain,DC=local - Username Feld:
mail - Attribute Feld:
mail - Bind DN:
CN=bind-mailcow,CN=Users,DC=windomain,DC=local - Bind Passwort: Passwort des Bind-Users
- Attribute Mapping: Standardvorlage / Default
- Benutzer beim Login erstellen: an
- Vollsynchronisation: an
- Importiere Benutzer: an
- Sync / Import interval: für den Anfang 1 Minute
Der Erfolg wird unter E-Mail / Mailboxen kontrolliert.
E-Mails von Kopano nach Mailcow migrieren
Die Migration erfolgt über IMAP-Synchronisation.
Mailcow Sync Job erstellen
In Mailcow:
E-Mail / Synchronisationen / Neuen Sync Job erstellen
- Host: IP des Kopano-Servers
- Port: 993
- Benutzername: Windows-Loginname
- Elemente ausschließen: Regex-Inhalt entfernen, da zu gefährlich
--delete2duplicatesnur verwenden, solange Mails noch auf Kopano laufen
Kopano hat standardmäßig IMAP teilweise deaktiviert. In der
server.confnachdisablesuchen oder in UMC beim Benutzer unter Kopano IMAP aktivieren.
Der Erfolg der Synchronisation sollte im Dialog und in den Logs kontrolliert werden.
Kalender aus Kopano exportieren
Kopano stellt Kalender über CalDAV bereit. Beispiele:
http://kopano:8080/caldav/<user>/<folder-name>/ |
Kalender oder Aufgabenordner im Benutzerpostfach |
http://kopano:8080/caldav/<user>/<sub-folder>/ |
Selbst erstellter Unterkalender |
http://kopano:8080/caldav/<other-user>/<folder-name>/ |
Freigegebener Kalender eines anderen Benutzers |
http://kopano:8080/caldav/public/<foldername>/ |
Öffentlicher Kalender |
http://kopano:8080/caldav/<user>/ |
Standardkalender des Benutzers |
Die exportierten Dateien können anschließend im SOGo-Frontend oder in einem Mailclient importiert werden.
Kontakte exportieren und importieren
Kontakte exportieren
Der Export kann über den alten Mailclient erfolgen. Alternativ kann ein Python-Script mit Kopano-MAPI genutzt werden.
sudo apt install python3-kopano
mkdir export
wget https://raw.githubusercontent.com/bashclub/trmm-scripts/refs/heads/main/kopano-export-contacts.py
python3 kopano-export-contacts.py
Das Script exportiert Kontakte in Unterordner pro Benutzer, da Kopano kein echtes CardDAV für diesen Zweck bereitstellt.
Kontakte importieren
- Outlook kann beim Export oder Import Probleme verursachen
- SOGo importiert Kontakte oft nur einzeln
- eM Client war in der Praxis häufig die beste Lösung für den Import vieler VCF-Dateien per Drag & Drop
Beispiel für CardDAV-Anbindung:
https://kunde.dyndns.org/SOGo/dav/user@domain.de/Contacts/personal/
Aliase und Weiterleitungen übernehmen
Aliase finden
univention-ldapsearch -LLL | grep @ | grep mailAlternative
Aliase werden in Mailcow unter E-Mail / Aliasse / Alias hinzufügen eingetragen.
Weiterleitungen finden
univention-ldapsearch -LLL | grep mailForward
Weiterleitungen werden im SOGo-Webfrontend unter E-Mail konfiguriert, nicht direkt in Mailcow.
Mailcow produktiv schalten
NAT und Portweiterleitungen
Auf der Firewall, zum Beispiel OPNsense, können Aliase verwendet werden.
p_mailcow: 80 443 465 993 4190
h_mailcow: 10.0.0.253
Port Forwarding:
any > WAN IP > p_mailcow > h_mailcow
Mailcow neu starten
pct enter 101
su -
rm /opt/mailcow-dockerized/data/conf/nginx/redirect.conf
cd /opt/mailcow-dockerized
docker compose down
Optional: Greylisting deaktivieren
vi /opt/mailcow-dockerized/data/conf/rspamd/local.d/greylist.conf
enabled = false;
Optional: Let’s Encrypt Einstellungen
vi /opt/mailcow-dockerized/mailcow.conf
SKIP_LETS_ENCRYPT=n
SKIP_HTTP_VERIFICATION=y
docker compose up -d
Let’s Encrypt kontrollieren
docker compose logs --tail=200 -f acme-mailcow
Alternativ eigenes Zertifikat verwenden
Eigene Zertifikate können hier abgelegt werden:
/opt/mailcow-dockerized/data/assets/ssl
cert.pemkey.pem
Danach DNS-Werte beim Provider kontrollieren:
E-Mail / Domains / DNS
Abschluss der Migration
- Synchronisationen nach erfolgreicher Migration deaktivieren
- Optional Proxmox Mail Gateway auf Mailcow verweisen
- Alten Univention Corporate Server abschalten
- FSMO-Rollen auf Zamba AD übertragen
- Alte UCS-Fragmente bereinigen
- LDAP-Clients auf neuen Zamba AD umstellen
FSMO-Rollen übernehmen
pct enter 100
su -
samba-tool fsmo transfer --role=all -Uadministrator
samba-tool domain demote --remove-other-dead-server=UCS
rm /etc/cron.d/sysvol-sync
Bereinigung
- RSAT DNS-Konsole nach alten Fragmenten durchsuchen
- Alte DNS-Einträge entfernen
- Optional Metadata Cleanup durchführen
LDAP-Clients anpassen
Für bestehende LDAP-Clients werden neue Bind-User pro Rolle angelegt. Anschließend werden die LDAP-Parameter angepasst.
- IP: neuer Zamba AD
- Port: von 7389 auf 636 mit SSL ändern
- UID auf
sAMAccountNameändern - Bind DN von
uidaufcnändern
Proxmox Mail Gateway mit Mailcow verbinden
Greylisting in Mailcow deaktivieren
vi /opt/mailcow-dockerized/data/conf/rspamd/local.d/greylist.conf
enabled = false;
docker compose restart rspamd-mailcow
Routing in Mailcow
- Konfiguration / Routing / Networks
ipvompmg:26- Greylisting deaktivieren
Senderabhängige Transport Maps
- Für alle Maildomains, die PMG nutzen
- ID 1:
ipvompmg:26
Proxmox Mail Gateway
- Configuration / Mail Proxy
- Relay Domain setzen
- Transport zur Mailcow konfigurieren
- Kein MX für internen Transport verwenden
Beim DNS-Provider werden die PMG-Werte statt der direkten Mailcow-Werte gesetzt.
Mailpiler als Mailarchiv integrieren
Mailpiler kann ebenfalls über die LXC Toolbox installiert werden.
Mailcow für Archivweiterleitung vorbereiten
- System / Konfiguration / Einstellungen / Weiterleitungs-Hosts
- IP des Mailpilers eintragen
BCC an das Archiv
- System / Konfiguration / Routing / Transport
- Ziel:
piler.windomain.local - Next Hop:
10.0.0.x
BCC-Maps einrichten
Unter:
E-Mail / Konfiguration / Adressumschreibung / BCC-Maps
Für jede Maildomain jeweils eingehend und ausgehend:
- Lokales Ziel:
sysops.tv - BCC-Ziel:
piler@piler.windomain.local - Domain:
sysops.tv
Kontrolle im Mailpiler:
tail -f /var/log/mail.log
Eine LDAP-Anpassung im Mailpiler wäre in
config-site.phpmöglich, funktioniert jedoch nicht zuverlässig für Aliase.
Doppelte Mails bei mehrfacher Kopano-Synchronisation vermeiden
Die IMAP-Kompatibilität von Kopano ist in der Praxis oft problematisch. Wenn Mails doppelt oder dreifach erscheinen, kann eine gezielte Bereinigung und erneute Synchronisation helfen.
apt install kopano-migration-imap
nano migrate.sh
#!/bin/bash
set -euo pipefail
if [ "$#" -ne 6 ]; then
echo "Verwendung:"
echo "$0 <host1> <host2> <user1> <pass1> <user2> <pass2>"
exit 1
fi
HOST1="$1"
HOST2="$2"
USER1="$3"
PASS1="$4"
USER2="$5"
PASS2="$6"
MAILCOW_DOVECOT_CONTAINER="565cef8dac49"
echo "=========================================="
echo "Bereinige Zielordner auf Mailcow"
echo "=========================================="
docker exec "$MAILCOW_DOVECOT_CONTAINER" \
doveadm expunge -u "$USER2" mailbox "Gesendet" ALL || true
docker exec "$MAILCOW_DOVECOT_CONTAINER" \
doveadm mailbox delete -u "$USER2" "Sent" || true
docker exec "$MAILCOW_DOVECOT_CONTAINER" \
doveadm mailbox delete -u "$USER2" "Gesendete Objekte" || true
docker exec "$MAILCOW_DOVECOT_CONTAINER" \
doveadm mailbox delete -u "$USER2" "Gesendete Objekte/Gesendete Objekte" || true
echo "=========================================="
echo "Starte IMAP Sync"
echo "=========================================="
kopano-migration-imap \
--host1 "$HOST1" \
--host2 "$HOST2" \
--user1 "$USER1" \
--password1 "$PASS1" \
--user2 "$USER2" \
--password2 "$PASS2" \
--ssl1 \
--ssl2 \
--regextrans2 's#^Gel&APY-schte Objekte$#Papierkorb#' \
--useheader Message-Id \
--addheader \
--usecache \
--syncinternaldates \
--skipsize \
--nofoldersizes \
--nofoldersizesatend \
--delete2 \
--delete2folders \
--delete2duplicates \
--exclude '(?i)^trash$|^junk$|^spam$|^unwanted$|^&U3CPbg-($|/)'
echo "=========================================="
echo "Migration abgeschlossen"
echo "=========================================="
Ausführen mit:
bash migrate.sh quellip zielip login passwortucs email@adresse.de passwortmailcow
Das Beispiel nimmt keine Papierkörbe oder Spam-Ordner mit. Dies wird über
--excludegesteuert.
Optionale DNS-Einträge für Autokonfiguration
Für Thunderbird, eM Client und weitere Programme können SRV-Records gesetzt werden, damit Mail, Kalender und Kontakte automatisch gefunden werden.
_autodiscover._tcp IN SRV 0 0 443 q.deine-domain.de.
_caldavs._tcp IN SRV 0 1 443 q.deine-domain.de.
_carddavs._tcp IN SRV 0 1 443 q.deine-domain.de.
_imaps._tcp IN SRV 0 1 993 q.deine-domain.de.
_matrix._tcp IN SRV 0 1 465 matrix.deine-domain.de.
_sieve._tcp IN SRV 0 1 4190 mail.deine-domain.de.
_smtps._tcp IN SRV 0 1 465 q.deine-domain.de.
_submissions._tcp IN SRV 0 1 465 q.deine-domain.de.
Fazit
Mit Zamba Active Directory, Mailcow und Proxmox VE lässt sich eine bestehende Univention-/Kopano-Umgebung vollständig durch moderne Open-Source-Komponenten ersetzen. Für kleine und mittlere Unternehmen entsteht eine schlanke, wartbare und zukunftssichere Infrastruktur.
- Active Directory bleibt erhalten
- Kopano wird durch Mailcow ersetzt
- Updates werden deutlich schneller
- Proxmox VE ermöglicht einfache Snapshots und Backups
- Mailpiler und Proxmox Mail Gateway können integriert werden
- Der Betrieb wird transparenter und besser kontrollierbar
Passende Schulungen
Wenn Sie die Migration unter Anleitung durchführen möchten, finden Sie passende Live-Schulungen auf cloudistboese.de:
- Windows Domain Controller mit Samba/Zamba ablösen
- Open-Source Mailserver mit Mailcow betreiben
- Alles ohne Windows
- Proxmox produktiv mit ZFS betreiben
- Replikationen und Backups trojanersicher