Kurzüberblick

Getestete Basis ist die openSUSE-basierte grommunio Appliance 2026.06.1. Die Beispiele verwenden durchgehend die neutrale Appliance-Domain https://mail.example.test; Pfade wie /web/, /admin/, /auth/, /chat/, /meet/ und /files/ liegen auf derselben Appliance.Dieser Beitrag zeigt, wie du grommunio Archive auf einer bestehenden grommunio-2026-Appliance einrichtest und den Mailfluss bis Suche und Wiederherstellung prüfst.

Die Anleitung führt durch Komponenten, Dienste, Archivierung, Suchoberfläche, Treffer, Restore, Retention-Grundlagen, Berechtigungen, Logs und Abschlussprüfung.

Getestete Umgebung

  • grommunio 2026 auf der openSUSE-basierten grommunio Appliance.

  • Alle Appliance-Befehle werden direkt auf der grommunio Appliance ausgeführt.

  • Öffentliche Beispiele verwenden durchgehend die neutrale Appliance-Domain https://mail.example.test.

1. Ausgangslage & Voraussetzungen

Ausgangspunkt ist eine grommunio-Installation mit funktionierendem DNS, TLS, Admin-Zugriff und sauberer Basisprüfung. Jeder Beitrag behandelt genau den Baustein, den du für eine vollständige Collaboration-Plattform brauchst.

2. Schritt-für-Schritt-Anleitung

Dieser Beitrag zeigt den jeweiligen grommunio-Baustein auf der openSUSE-basierten Appliance so, dass du die Konfiguration nachvollziehen, testen und in den Betrieb übernehmen kannst.

Voraussetzungen

Eine bestehende oder geplante grommunio-Umgebung, passende DNS-Namen, TLS, administrative Zugänge und ein klares Ziel für Mail, Collaboration oder Betrieb.

4. Typische Fehler & Troubleshooting

  • Weboberfläche lädt nicht: FQDN, TLS, Reverse Proxy, Firewall und Dienststatus kontrollieren.

  • Login oder SSO schlägt fehl: Realm, Client, Redirect-URIs, Zertifikatskette, Uhrzeit und Benutzerzuordnung kontrollieren.

  • Feature bleibt leer: Paketstand, Plugins, Rechte, Logs und Hintergrunddienste kontrollieren.

5. Fazit & Ausblick

Der grommunio-Baustein ist damit nachvollziehbar eingerichtet und in die Plattform eingeordnet. Die nächsten Teile führen die Collaboration-Umgebung Schritt für Schritt weiter.

Diese Anleitung zeigt dir, wie du grommunio Archive auf einer grommunio-2026.06.1-Appliance einrichtest, technisch prüfst und einen vollständigen Archivierungs- und Restore-Workflow nachweist. Sie ist bewusst praxisnah: Paket installieren, Datenbank und Storage vorbereiten, Mailflow anbinden, Benutzer berechtigen, suchen, wiederherstellen, sichern und überwachen.

Wir sprechen hier über technische E-Mail-Archivierung und einen belastbaren Retention-Compliance-Baustein. Rechtliche Anforderungen wie Aufbewahrungsfristen, Exportpflichten oder Beweiswerterhaltung musst du immer mit der eigenen Organisation und Rechtsberatung abstimmen.

Was wir aufbauen

Archive hängt in diesem Setup nicht als dekorative Zusatzoberfläche neben der Groupware. Die Appliance nimmt eine Nachricht normal in die Mailbox an und erzeugt zusätzlich eine Archivkopie über die Postfix-BCC-Strecke. grommunio Archive speichert die Nachricht, legt Metadaten in der Datenbank ab, indexiert sie über Sphinx und stellt Suche sowie Restore über die Archive-Weboberfläche bereit.

  • Paket: grommunio-archive
  • Version im Test: 1.4.9 auf grommunio 2026.06.1
  • Daemons: grommunio-archive, grommunio-archive-smtp und searchd
  • Datenbank: groarchive in MariaDB
  • Datenpfad: /var/lib/grommunio-archive
  • Webpfad: https://mail.example.test/archive/
  • Login: grommunio-Benutzer mit IMAP/POP und Archive-Recht
  • Restore: aus Archive zurück in die Benutzer-Mailbox.

Architektur und Mailflow

Der getestete Ablauf ist einfach, aber wichtig: Eine eingehende oder lokal erzeugte Nachricht wird an die Mailbox zugestellt und parallel an eine interne Archive-Adresse kopiert. Diese Adresse routet Postfix lokal zum Archive-SMTP-Dienst auf 127.0.0.1:2693. Dadurch bleibt der Archive-Daemon intern gebunden; öffentlich sichtbar ist nur die HTTPS-Oberfläche unter /archive/.

  • Mailflow
  • Postfix / gromox
  • Mailbox
  • recipient_bcc_maps
  • archive@archive.example.test
  • smtp:[127.0.0.1]:2693
  • grommunio Archive
  • groarchive Datenbank
  • Sphinx Suchindex
  • Archive Web UI
  • Restore in die Mailbox

Voraussetzungen prüfen

Starte auf einer funktionierenden grommunio-2026-Basis. DNS, TLS, Zeitsynchronisation, Admin-Zugang, funktionierende Benutzerpostfächer und IMAP müssen bereits sauber laufen. Wenn du aus der Artikelserie kommst, ist die Installation aus Teil 1 die Grundlage.

bash
cat /etc/os-release
hostname -f
rpm -qa | grep -Ei 'grommunio|gromox|archive' | sort
zypper search -s grommunio-archive
systemctl list-unit-files | grep -Ei 'archive|grommunio'
ss -lntup

Archive installieren

Das Paket kommt aus den grommunio-Repositories. Vor der Installation prüfst du die angebotene Version, danach installierst du nur das reale Paket. In unserem Test war grommunio-archive 1.4.9-lp160.3.32 verfügbar.

bash
zypper refresh
zypper search -s grommunio-archive
zypper --non-interactive install grommunio-archive
rpm -q grommunio-archive

Datenbank und Storage vorbereiten

grommunio Archive verwendet eine eigene Datenbank. Im getesteten Setup heißt sie groarchive. Lege Benutzer und Datenbank mit einem starken, nicht im Shell-Verlauf sichtbaren Passwort an, importiere das mitgelieferte Schema und bewahre das Passwort in einer nur für Root und die Archive-Gruppe lesbaren Datei auf.

bash
install -d -m 0750 -o root -g groarchive /etc/grommunio-archive
openssl rand -base64 36 > /etc/grommunio-archive/db.secret
chown root:groarchive /etc/grommunio-archive/db.secret
chmod 0640 /etc/grommunio-archive/db.secret
mariadb -uroot <<'SQL'
CREATE DATABASE IF NOT EXISTS groarchive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'groarchive'@'localhost' IDENTIFIED BY '<strong-password>';
GRANT ALL PRIVILEGES ON groarchive.* TO 'groarchive'@'localhost';
FLUSH PRIVILEGES;
SQL
mariadb groarchive < /usr/share/grommunio-archive/db-mysql.sql

Die Daten, temporären Dateien, Indexdaten und Fehlerablagen liegen unter /var/lib/grommunio-archive. Für Produktion planst du diesen Pfad wie Maildaten: eigener Speicher, Monitoring, Backup, Kapazitätsplanung und klare Restore-Tests.

bash
rpm -ql grommunio-archive | sort
du -sh /var/lib/grommunio-archive
find /var/lib/grommunio-archive -maxdepth 1 -type d -printf '%p\n' | sort

Archive konfigurieren

Kopiere nicht blind ganze Beispielkonfigurationen, sondern setze die Werte, die in deiner Umgebung wirklich gelten: Hostname, Datenbank, Storage, Sphinx, interner SMTP-Port, IMAP-Backend und öffentliche URL. Im Lab war die externe URL https://mail.example.test/archive/.

bash
cp -n /etc/grommunio-archive/grommunio-archive.conf.dist /etc/grommunio-archive/grommunio-archive.conf
cp -n /etc/grommunio-archive/config-site.dist.php /etc/grommunio-archive/config-site.php
cp -n /etc/grommunio-archive/sphinx.conf.dist /etc/sphinx/sphinx.conf
# Danach kontrolliert setzen:
# hostid=mail.example.test
# listen_addr=127.0.0.1
# listen_port=2693
# mysqldb=groarchive
# mysqluser=groarchive
# queuedir=/var/lib/grommunio-archive/store
# workdir=/var/lib/grommunio-archive/tmp
# sphxhost=127.0.0.1
# sphxport=9306

Dienste und Ports aktivieren

Nach der Konfiguration startest du Archive, den Archive-SMTP-Dienst, Sphinx, PHP-FPM und nginx. Der entscheidende Sicherheitscheck: piler-smtp lauscht nur lokal auf 127.0.0.1:2693. Von außen sollen Benutzer nur HTTPS sehen.

bash
systemctl enable --now searchd grommunio-archive grommunio-archive-smtp
systemctl restart php-fpm nginx
systemctl is-active searchd grommunio-archive grommunio-archive-smtp php-fpm nginx
ss -lntup | grep -Ei '2693|9306|:443|:80'

Reverse Proxy für /archive/

Die Weboberfläche läuft in diesem Setup unter /archive/. nginx übergibt PHP-Dateien an den grommunio-Archive-PHP-FPM-Pool. Zusätzlich müssen die Rewrite-Regeln der Anwendung für Such-, Login-, Message- und Restore-Routen greifen.

nginx
location ^~ /archive/ {
alias /usr/share/grommunio-archive/archive/;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_pass unix:/run/php-fpm/php-grommunio-archive-fpm.sock;
}
}
bash
nginx -t
systemctl reload nginx
curl -kI https://mail.example.test/archive/

Benutzer berechtigen

Ein Benutzer braucht IMAP/POP und das Archive-Recht. grommunio dokumentiert diesen Weg auch für Archive-Login und Restore über IMAP. Für einen Testbenutzer sieht das so aus:

bash
grommunio-admin user modify alice@example.test --pop3-imap true --privArchive true
grommunio-admin user query username pop3_imap privArchive --filter username=alice@example.test

Archive-Login prüfen

Melde dich danach mit einem berechtigten Benutzer unter /archive/ an. Im Lab wurde der Pfad über https://mail.example.test/archive/ getestet. Verwende in der Anleitung und in Screenshots immer die echte Ziel-URL deiner Appliance, nicht lokale Portweiterleitungen.

Testmail senden und Archivierung nachweisen

Für den technischen Nachweis sendest du eine Testnachricht an den Benutzer. Postfix kopiert sie über recipient_bcc_maps an die interne Archive-Adresse. Danach prüfst du drei Ebenen: Zustellung an Archive-SMTP, Eintrag in groarchive und Suchbarkeit im Sphinx-Index.

bash
/usr/sbin/sendmail -t <<'MAIL'
From: Archive Sender <sender@example.test>
To: alice@example.test
Subject: ForgeOne Archive Search Validation 20260908140826
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Diese Nachricht prüft Suche und Restore im grommunio Archive.
MAIL
postmap -q alice@example.test mysql:/etc/postfix/grommunio-bcc-forwards.cf
postmap -q archive.example.test lmdb:/etc/postfix/transport
mariadb groarchive -e "SELECT id, CAST(subject AS CHAR(255)) AS subject_text FROM metadata ORDER BY id DESC LIMIT 5;"

Der Delta-Indexer läuft im Regelbetrieb per Cron. Für einen unmittelbaren Lab-Nachweis kannst du den Delta-Index manuell rotieren und danach direkt gegen Sphinx suchen.

bash
runuser -u groarchive -- indexer --rotate --config /etc/sphinx/sphinx.conf delta1
mariadb -h127.0.0.1 -P9306 -e "SELECT id FROM main1,dailydelta1,delta1 WHERE MATCH('ForgeOne');"

Suchen und Nachricht öffnen

In Archive suchst du nach einem eindeutigen Marker aus dem Betreff. Der Treffer muss Datum, Absender, Empfänger, Betreff und Größe zeigen. Öffne die Nachricht und prüfe, dass Headerdaten, Inhalt und Restore-Aktion sichtbar sind.

Aus der Mailbox löschen und aus Archive wiederherstellen

Für den echten Restore-Test reicht es nicht, dass die Nachricht in Archive sichtbar ist. Lösche sie zuerst aus der Mailbox, prüfe, dass sie dort nicht mehr vorhanden ist, löse dann in Archive Restore to mailbox aus und prüfe die Mailbox erneut.

Im produktiven Browserpfad öffnest du danach grommunio Web, meldest dich als derselbe Benutzer an und suchst im Posteingang nach dem eindeutigen Betreff. Für automatisierte Abnahme ist die IMAP-Prüfung reproduzierbarer, weil sie dieselbe Mailbox ohne UI-Session-Effekte kontrolliert.

bash
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826"
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826" delete
# Danach in der Archive-Weboberfläche: Restore to mailbox
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826"

Export, Anhänge und Benutzerisolation prüfen

Prüfe nach dem Basis-Restore auch Export und Berechtigungsgrenzen. Ein normaler Benutzer soll eigene archivierte Nachrichten finden, öffnen, als EML herunterladen und wiederherstellen können. Er soll aber keine fremden Mailboxen sehen. Anhänge müssen in der geöffneten Nachricht nachvollziehbar erscheinen und dürfen beim Export nicht verloren gehen.

  • Suche als Alice nach einer Alice-Nachricht.
  • Suche als Bob nach derselben Alice-Nachricht und erwarte keinen Treffer.
  • Öffne eine Nachricht mit Anhang und prüfe Anzeige sowie EML-Download.
  • Dokumentiere Rollen für Helpdesk, Auditoren oder Administratoren getrennt von normalen Benutzern.

Backup und Restore der Archive-Plattform

Für Archive sicherst du nicht nur die Datenbank. Du brauchst mindestens Datenbankdump, /var/lib/grommunio-archive, Archive-Konfiguration, Sphinx-Konfiguration, nginx-Route und die zugehörigen Schlüssel- beziehungsweise Secret-Dateien. Die Dateien dürfen im Backup liegen, aber nicht im Artikel, in Screenshots oder in Tickets veröffentlicht werden.

bash
mariadb-dump --single-transaction groarchive | gzip -c > /root/archive-backup-validation/groarchive.sql.gz
tar -C / -czf /root/archive-backup-validation/grommunio-archive-config-data.tar.gz \
etc/grommunio-archive \
etc/sphinx/sphinx.conf \
etc/grommunio-common/nginx/locations.d/grommunio-archive.conf \
var/lib/grommunio-archive
gzip -t /root/archive-backup-validation/groarchive.sql.gz
tar -tzf /root/archive-backup-validation/grommunio-archive-config-data.tar.gz | head

Monitoring und Logs

Überwache nicht nur HTTP 200. Für Archive sind Servicezustand, lokaler SMTP-Port, Sphinx-Port, Datenbankzugriff, Indexalter, eingehende Archivnachrichten, Suchfunktion und ein synthetischer Restore-Test relevant.

bash
systemctl status grommunio-archive grommunio-archive-smtp searchd --no-pager
journalctl -u grommunio-archive -u grommunio-archive-smtp -u searchd --since "1 hour ago" --no-pager
du -sh /var/lib/grommunio-archive
mariadb groarchive -e "SELECT COUNT(*) AS archived_messages FROM metadata;"

Troubleshooting

  • Login schlägt fehl: IMAP/POP und privArchive für den Benutzer prüfen.
  • Kein Treffer in der Suche: Mailflow, metadata-Tabelle und Delta-Indexer prüfen.
  • Restore kommt nicht an: IMAP-Backend, Benutzerrechte und Archive-Logs prüfen.
  • 404 unter /archive/: nginx-Location, Rewrite-Regeln und PHP-FPM-Socket prüfen.
  • Port 2693 öffentlich sichtbar: listen_addr korrigieren und Firewall prüfen.

Fazit

Ergebniskontrolle / Technische Abnahme

Installation

Prüfung
Pakete und Komponenten prüfen
Erwartetes Ergebnis
Der Baustein ist vollständig installiert
Status
PASS

Dienste

Prüfung
systemd-Services prüfen
Erwartetes Ergebnis
Die notwendigen Dienste sind aktiv
Status
PASS

Netzwerk

Prüfung
Ports und URLs prüfen
Erwartetes Ergebnis
Der Baustein ist über die vorgesehenen Pfade erreichbar
Status
PASS

Grundfunktion

Prüfung
Standalone-Test ausführen
Erwartetes Ergebnis
Die Kernfunktion funktioniert vor der tieferen Integration
Status
PASS

Authentifizierung

Prüfung
SSO/Login testen
Erwartetes Ergebnis
Der Login funktioniert über den vorgesehenen Weg oder ist bewusst nicht erforderlich
Status
PASS oder N/A

grommunio Web

Prüfung
Integration aus Web prüfen
Erwartetes Ergebnis
Der Baustein ist aus grommunio Web erreichbar oder nutzbar
Status
PASS oder N/A

End-to-End

Prüfung
Realen Benutzerworkflow testen
Erwartetes Ergebnis
Der vollständige Workflow ist nachvollziehbar erfolgreich
Status
PASS

Neustart

Prüfung
Dienste neu starten
Erwartetes Ergebnis
Die Funktion bleibt nach einem Neustart erhalten
Status
PASS

Logs

Prüfung
Relevante Logs kontrollieren
Erwartetes Ergebnis
Keine blockierenden Fehler im geprüften Ablauf
Status
PASS