Migration Univention Corporate Server & Kopano nach Zamba AD & Mailcow
Nachdem
Univention vieleCorporate Server durch Zamba AD und Mailcow ersetzen
Migration von Univention UCS und Kopano zu Zamba Active Directory, Mailcow und Proxmox VE. Viele kleinere KundenUnternehmen nutzen Univention Corporate Server hauptsächlich als Domain Controller und Benutzerverwaltung. Wenn UCS nur dennoch Domaincontrollerals benötigen,Active jedochDirectory UCSdient +und Kopano fürohnehin denabgelöst werden soll, ist der Betrieb nutzen,häufig kannunnötig UCSaufwendig.
Mit vielenZamba KundenActive nunDirectory, ersetztMailcow, werden.DasProxmox UpgradeVE, aufoptional UCSProxmox 5.2Mail zeigtGateway erneut,und dassMailpiler lässt sich dereine Aufwandschlanke, einesmoderne UpgradesOpen-Source-Infrastruktur nichtaufbauen, mehrdie mitschneller demwartbar Nutzenist einesund Domaincontrollerssich rechnet.ideal für kleine und mittlere Unternehmen eignet.
Updates von Mailcow und Zamba AD Controller laufen künftig in wenigen
Minuten,MinutennichtstattmehrereinStundenmehreren Stunden.
KundenKunden, die Keycloakundoder eine vollständig vom Hersteller supportete UCS-Umgebungwünschenbenötigen,bleibensolltenbitteweiterhin beiUnivention!!!Univention bleiben.
EntsprechendePassende Kurse finden Sie auf cloudistboese.de unter Mailcowden Themen Mailcow, Domain Controller ablösen und DomaincoltrollerAlles ablösen!ohne Windows.
Vorteile der Migration
Systemvoraussetzungen
- Bestehender Univention Corporate Server im
ADAD-Modus - Kopano oder vergleichbare Groupware mit
IMAPIMAP-Zugriff - Proxmox VE
>8.xmitoder neuer
Installation
Übersicht zweiterder Domaincontroller
Migration
Installation
Zamba Active Directory als zweiten Domain Controller installieren
Die Installation erfolgt auf dem Proxmox Host, zum Beispiel im z.Verzeichnis B. /root. Ordner
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 folgendewerden Parameterdie Werte an dasdie Systembestehende anpassenUmgebung angepasst.
LXC_TEMPLATE_STORAGE="local"#LXC Template Store
LXC_ROOTFS_SIZE="32"#DCs Root Size
LXC_ROOTFS_STORAGE="rpool-data"#or local-zfs #DCs Root Store
LXC_SHAREFS_SIZE="100"#DCs Root Backup Size
LXC_SHAREFS_STORAGE="rpool-data"#or local-zfs #DCs Backup Store
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"#your old UCS IP, If Windows Step Down to Level 2008R2 first!
LXC_BRIDGE="vmbr0"
LXC_PWD='Admin123'
ZMB_REALM="WINDOMAIN.LOCAL"
ZMB_DOMAIN="WINDOMAIN"
ZMB_ADMIN_USER="administrator"
ZMB_ADMIN_PASS='Admin123'Hinweis:
LXC_DNSzeigt zunächst auf den alten UCS-DNS-Server. Bei Windows-Domänen sollte vorher gegebenenfalls das Funktionslevel geprüft werden.
Zamba
AD
Die installation des LXCs als zweiten DCJoin starten
bash install.sh -i 100#für Container 100Im Menü
wählenwirdwirZamba-AD-Join gewählt.
Replikation prüfen
Nach der Installation könnenkann wir in dender Container gelangenbetreten mitund 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.
pct enter 100
su -
wbinfo -u
wbinfo -g
Empfehlung: In Proxmox
densolltealtenanschließendUCSder alte UCS-DNS-Server aus der Hostkonfiguration entfernt werden, sobald der neue Zamba AD DNSServerzuverlässigentfernenfunktioniert.
Dort
smb.conf Finden wir im Idealfall alle User und Gruppen, was den Erfolg bestätigtanpassen
Folgende AnpassungAnpassungen können in der smb.conf machthilfreich das Leben leichtersein:
vi /etc/samba/smb.conf[global]ldap server require strong auth = no
dns forwarder = 1.1.1.1 1.0.0.1
It
DNS was DNS
An dieser Stelle erhalten alle Computer mit festen IPsauf 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.
Merksatz: It was DNS.
Mailcow installieren
ImFür DHCPMailcow Serverwird ersetzenein wirweiterer LXC verwendet. Die Installation erfolgt ebenfalls denüber DNSdie ServerZamba mitLXC dem neuen DC, der alte DNS Server vom UCS kann rausToolbox.
Installation Mailcow
vicp conf/zamba.conf.example conf/zamba.conf
Die Installation derFür Mailcow benötigtmüssen keineinsbesondere spezielle Anpassung im unteren Bereich außer dem LXC_HOSTNAMEHostname und denNetzwerkeinstellungen Netzwerkeinstellungenangepasst werden.
bash install.sh -i 101#für Container 101Im Menü
wählenwirdwirMailcowMailcowgewählt.
Mailcow
Nachaktualisieren
der Installation von Mailcow
pct enter100101su -
cd /opt/mailcow-dockerized
apt install jq
./update.sh
Danach rufen wirwird das Mailcow Mailcow-Webinterface mit der Admin Seite aufgeöffnet:
Folgende
Grundkonfiguration von Mailcow
Unbedingt notwendige Schritte sind unerlässlich
AdminAdmin-Passwortändernändern:-System / Konfiguration / Administrator bearbeiten- Alle
DomänenMaildomainseintragen und Schwellwerte beachten!eintragen:-E-Mail / Konfiguration / Domains Benutzer in der AD anlegen, z. B. bind-mailcow-Windows Active DirectorySchwellwerte undBenutzerQuotasoder UMCbeachten- 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
neuedesZMB-neuen Zamba AD - Port: 636
(Active Directory) - 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:
wurdePasswortobendesangelegtBind-Users - Attribute
Mapping /Mapping: Standardvorlage / Default Benutzer beim Login erstellen: an
Vollsynchronisation: an
Importiere Benutzer: an
Sync / Import
Anfang 1 Minuteintervalinterval:(min): 1 (für denAnfang)
Der
ErfolgE-Mails Synchronisierenvon -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
Kopanodes Kopano-Servers PortPort: 993- Benutzername:
Windows Login nameWindows-Loginname - Elemente
ausschließenausschließen:(Regex)Regex-Inhalt entfernen, da zu gefährlich Lösche Duplikate im Ziel (--nurdelete2duplicates)delete2duplicatessoverwenden,lange diesolange Mails noch auf Kopanolaufen, danach raus!laufen
Kopano hat
per defaultstandardmäßig IMAPdeaktiviert,teilweisedaherdeaktiviert.ggf.In derserver.confnachdisablesuchen oder inder server.conf mal nach disable suchenoderInUMCimbeimUserBenutzer unter Kopano IMAPaktivierenaktivieren.(Aktiviere Kopano Funktionen)Der
Erfolg der Synchronisation sollte im Dialog unddessenin den LogskontrollierenkontrolliertKalendereinträgewerden.derBenutzterKalender aus Kopano exportieren
Kopano
stellt Kalender über CalDAV bereit. Beispiele:
http://kopano:8080/caldav/<user>/<folder-folder-name>/Calendar/taskKalenderfolderoderinAufgabenordneruser’simstore. Make sure the calendar/task folder already exists.Benutzerpostfachhttp://kopano:8080/caldav/<user>/<sub-sub-folder>/SelfSelbstcreatederstelltersubcalendar in the user’s own store. Location through actual subfolders in Zarafa is irrelevant.Unterkalenderhttp://kopano:8080/caldav/<other-useruser>/<folder-name>/SharedFreigegebenercalendar/taskKalenderfoldereinesofanderenother userBenutzershttp://kopano:8080/caldav/public/<foldernamefoldername>/Calendar/taskÖffentlicherfolder in the public folderKalenderhttp://kopano:8080/caldav/<user>/DefaultStandardkalendercalendardesof the current user. Although this works for most clients, this URL is not recommended.BenutzersDie exportierten Dateien können anschließend im
werden.Mailcow SoGoSOGo-Frontend oder in einem Mailclientdirektimportiertwerden
Kontakte
exportieren und importierenKontakte exportieren
Der Export
Kontaktegehtkann über den altenMailclient,Mailclientdaerfolgen.deinAlternativCarddavkannServereinvorhandenPythonPython-Script mitMAPiDiesesKopano-MAPIScriptgenutztexportiertwerden.alle Kontakte in Unterordner pro User, da kein Card DAV in Kopano stecktsudo apt install python3-kopanomkdir 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
Import Kontakte
importieren
- Outlook
hattekannmit dembeim Export oder Import Problemeund der Verarbeitung, sprich Daten fehltenverursachenSOGOSOGo importiert Kontakte oft nur einzelnEM-eM Client waraminEndeder Praxis häufig die besteWahlLösung für den Importdervieler.VCFVCF-Dateienam Stückper Drag & DropAnbindung des EM-ClientBeispiel für
ImportCardDAV-Anbindung:oder Nutzunghttps://kunde.dyndns.org/SOGo/dav/user@domain.de/Contacts/personal/
Aliase
und Weiterleitungen übernehmenAliase finden
und anlegenunivention-ldapsearch -LLL | grep @ |grepgrep mailAlternativeAliase
eingetragen.eintragenwerden-in Mailcow unter E-Mail-/ Aliasse / Alias hinzufügenWeiterleitungen finden
univention-ldapsearch -LLL | grep mailForward#ListetWeiterleitungen
WeiterleitungenWeiterleitung wirdwerden imSoGo WebfrontentSOGo-Webfrontend unter E-Mail konfiguriert, nicht direkt inMailcow!!!Mailcow.
Mailcow onlineproduktiv stellen
schalten
NAT Portsund setzen,Portweiterleitungen
Auf B.der aufFirewall, OPNsensezum alsBeispiel Alias
p_mailcow: 80 443 465 993 4190
Port Forwarding
any > WAN IP > p_mailcow > h_mailcow
Mailcow neu starten
pct enter100101su -
rm /opt/mailcow-dockerized/data/conf/nginx/redirect.conf
cd /opt/mailcow-dockerized
docker compose down
#Optional:
OptionalGreylistingbeideaktivierenPMG Einsatz greylisting aus#vi /opt/mailcow-dockerized/data/conf/rspamd/local.d/greylist.confenabled = false;
#Optional:
OptionalLet’s Encrypt Einstellungenvi /opt/mailcow-dockerized/mailcow.confSKIP_LETS_ENCRYPT=nSKIP_HTTP_VERIFICATION=y
docker compose up -d
Let’s
docker compose logs --tail=200 -f acme-mailcow
Alternativ eigenes Zertifikat unter
verwenden
Eigene Zertifikate können hier abgelegt werden:
/opt/mailcow-dockerized/data/assets/ssl
cert.pemkey.pem
Danach
kontrollieren -E-Mail / Domains / DNS
Abschluss der Arbeiten
Migration
- Synchronisationen nach
Erfolgerfolgreicher Migration deaktivieren - Optional
PMGProxmox Mail Gateway auf Mailcow verweisen - Alten Univention Corporate Server abschalten
TakeoverFSMO-RollenActiveaufDirectoryZamba
UCS-Fragmente bereinigenLDAP-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
DNSDNS-Konsole nach alten Fragmenten durchsuchenund entfernen - Alte DNS-Einträge entfernen
LDAP-Clients
Für bestehendenbestehende anLDAP-Clients UCSwerden angebundenenneue LDAP Clients
IP =IP: neuerZMB-Zamba ADPortPort: von 7389zuauf 636 mit SSL ändern- UID
zuaufsAMAccountNameändern - Bind DN von
uidzuaufcnändern
Proxmox Mail Gateway
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
ipvompmg:26
ipvompmg:26
Proxmox Mail Gateway
- Configuration /
MailproxyMail
Beim DNS DNS-Provider PMGwerden Settingsdie überschreibenPMG-Werte teilestatt dender Mailcowdirekten Empfehlung
Mailpiler
Mailpiler kann ebenfalls über die LXC Toolbox zuvor
Mailcow demfür ArchivArchivweiterleitung vorbereiten
systemSystem /konfigurationKonfiguration /einstellungenEinstellungen /weiterleitungs-hosts
BCC an das Archiv
systemSystem /konfigurationKonfiguration /routingRouting /transport
piler.windoimain.windomain.local
Next 10.0.0.x
BCC-Maps
Unter:
E-Mail /
konfigurationKonfiguration /adressumschreibungAdressumschreibung /bcc-mapsBCC-Maps
Für projede domainMaildomain eintragenjeweils (1x eingehend, 1x ausgehend)
- Lokales Ziel:
sysops.tv - BCC-
ZielZiel:piler@piler.windomain.local - Domain:
sysops.tv
Kontrolle im MailpilerMailpiler:
tail -f /var/log/mail.log
Aliase.Eine LDAP-Anpassung im Mailpiler wäre in
config-site.phpmöglich, funktioniert jedoch nicht zuverlässig fürim PilerAliase!
Dubletten
Doppelte Mails bei mehrfachemmehrfacher Kopano-Synchronisation vermeiden
Die IMAP-Kompatibilität von Kopano Sync
Leider ist die IMAP Kompatibilität bei Kopano eher aufin der niedrigenPraxis Seite.
Findenproblematisch. sich etlicheWenn Mails offensichtlich doppelt oder dreifach,dreifach führterscheinen, mankann deneine zweitengezielte BefehltBereinigung aufund dererneute KopanoseiteSynchronisation mehrfach aus.helfen.
apt install kopano-migration-imap#identisch imapsyncnano 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
dann mitmit:bash migrate.shquellip/localhostquellip zielip login passwortucsemai@adres.seemail@adresse.de passwortmailcowDas Beispiel nimmt
keine Papierkörbe oderSpamsSpam-Ordnermit!mit.(Dies wird über--gesteuert.exclude)exclude
OptionalkönnenOptionale
wir erweiterte DNSDNS-Einträgesetzen,fürdamitAutokonfigurationsichFür Thunderbird,
EM-eM Client und weitere ProgrammekomplettkönnenmitSRV-Records gesetzt werden, damit Mail, Kalender undKontaktenKontakteverbindenautomatisch 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.dede.
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