Stressfrei-Mailbox: Postfach-Passwort beim Anlegen verbindlich setzen

Beim Anlegen einer Adresse mit echter Mailbox (IMAP/SMTP) wird das
frisch generierte Passwort jetzt immer explizit am Provider gesetzt
(updateMailboxPassword direkt nach dem Provisioning).

Behebt den Fall, dass die Adresse beim Provider bereits als reine
Weiterleitung existierte: dann kehrte provisionEmailWithMailbox frueh
mit success zurueck, ohne je ein Postfach-Passwort zu setzen. Im CRM
lag dann ein verschluesseltes Passwort, das der Provider nicht kannte
-> IMAP/SMTP-Login schlug fehl. Jetzt stimmen CRM und Provider ueberein.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-30 11:13:08 +02:00
co-authored by Claude Opus 4.8
parent c0bd8a9f5c
commit c39d252f5f
2 changed files with 30 additions and 1 deletions
@@ -189,7 +189,8 @@ export async function createEmail(data: CreateEmailData) {
const localPart = data.email.split('@')[0];
if (createMailbox) {
// Mit echter Mailbox anlegen
// Mit echter Mailbox anlegen. Immer ein frisches, sicheres Passwort
// erzeugen.
const password = generateSecurePassword();
const result = await provisionEmailWithMailbox(localPart, customer.email, password);
@@ -197,6 +198,22 @@ export async function createEmail(data: CreateEmailData) {
throw new Error(result.error || 'Fehler beim Anlegen der Mailbox');
}
// Passwort verbindlich am Postfach setzen. Beim Neu-Anlegen hat
// createEmailWithMailbox es zwar schon gesetzt (der folgende Call ist
// dann idempotent), ABER wenn die Adresse beim Provider bereits als
// reine Weiterleitung existierte, kehrt provisionEmailWithMailbox früh
// mit success zurück, ohne je ein Postfach-Passwort zu setzen. Ohne
// diesen expliziten Schritt läge im CRM ein verschlüsseltes Passwort,
// das der Provider gar nicht kennt → IMAP/SMTP-Login schlägt fehl.
// Deshalb: nach jedem Mailbox-Anlegen das generierte Passwort
// garantiert am Provider setzen, damit CRM und Provider übereinstimmen.
const pwResult = await updateMailboxPassword(localPart, password);
if (!pwResult.success) {
throw new Error(
pwResult.error || 'Mailbox angelegt, aber Postfach-Passwort konnte nicht gesetzt werden',
);
}
// Passwort verschlüsseln und speichern
const passwordEncrypted = encrypt(password);