sysops 7e165c8eed feat(PROJ-1): httpOnly Cookie, Auditor-Guard, Nutzer-Aktionen (C)
Backend:
- Login setzt httpOnly SameSite=Strict Cookie (archivmail_session)
- Logout löscht Cookie + blacklistet Token
- authMiddleware: Cookie first, Bearer als Fallback (CLI kompatibel)

Frontend:
- api.ts: credentials: include statt localStorage/Bearer Token
- updateUser(), deleteUser() hinzugefügt
- useAuth: kein localStorage mehr, nur /api/auth/me
  requireRole: "admin" | "auditor" | undefined
- Login-Seite: kein localStorage
- Navbar: kein localStorage
- Admin: Nutzer-Aktionen (Sperren/Freischalten, Löschen, Passwort-Reset)
  Löschen verhindert wenn letzter Admin (HTTP 409)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 19:57:13 +01:00

archivmail

Selbst gehostetes Mail-Archiv-System für Unternehmen. E-Mails werden aus IMAP, SMTP und EML/MBOX-Quellen importiert, volltext-indexiert (Xapian) und verschlüsselt archiviert.

Features

  • Import via IMAP, SMTP-Journaling und EML/MBOX-Upload
  • Volltext-Suche über Xapian
  • AES-256-GCM-Verschlüsselung der archivierten Mails
  • Anhang-Deduplizierung
  • Rollenmodell: user, auditor, admin
  • Audit-Log (PostgreSQL + Append-only Logdatei)

Installation

# Systembenutzer anlegen
useradd -r -s /sbin/nologin archivmail

# Verzeichnisse anlegen
mkdir -p /etc/archivmail
mkdir -p /var/archivmail/store
mkdir -p /var/archivmail/astore
mkdir -p /var/lib/archivmail/xapian
mkdir -p /var/log/archivmail

# Berechtigungen setzen
chown -R archivmail:archivmail /var/archivmail /var/lib/archivmail /var/log/archivmail

# Encryption Key generieren
openssl rand -base64 32 > /etc/archivmail/keyfile
chmod 400 /etc/archivmail/keyfile
chown archivmail:archivmail /etc/archivmail/keyfile

# Konfiguration
cp config.example.yml /etc/archivmail/config.yml
# config.yml anpassen (Datenbank, SMTP-Port, etc.)

# Systemd-Service aktivieren
cp archivmail.service /lib/systemd/system/
systemctl daemon-reload
systemctl enable --now archivmail

Verzeichnisstruktur

/etc/archivmail/
├── config.yml              # Hauptkonfiguration
└── keyfile                 # AES-256-GCM Key (chmod 400)

/var/archivmail/
├── store/                  # Mailkörper (.m, verschlüsselt)
│   └── <server_id>/<customer_id>/<hash>/xxxxx.m
└── astore/                 # Anhänge dedupliziert (verschlüsselt)
    └── <hash>

/var/lib/archivmail/
└── xapian/                 # Volltext-Index

/var/log/archivmail/
└── audit.log               # Audit-Log (JSON Lines, append-only)

Standard-Zugangsdaten

Wichtig: Passwörter nach dem ersten Login ändern!

Benutzer Passwort Rolle
admin@archivmail archivmailrockz Admin (Konfiguration, Nutzerverwaltung)
auditor@archivmail archivmailrockz Auditor (alle E-Mails + Audit-Log)

Rollenübersicht

Rolle E-Mails (eigene) E-Mails (alle) Audit-Log Konfiguration
user
auditor
admin

Technologie

Komponente Technologie
Backend Go
Datenbank PostgreSQL
Volltext-Index Xapian
Verschlüsselung AES-256-GCM
Webserver eingebettet (Go net/http)

Lizenz

Proprietär

S
Description
No description provided
Readme 1.6 MiB
Languages
Go 54.6%
TypeScript 40.6%
Shell 3.8%
C++ 0.5%
CSS 0.2%
Other 0.2%