Mailbox-Fix R130: enableMailboxForExisting statt updateMailboxPassword
Pentester R130: der erste Fix (c39d252) setzte bei Plesk nur -passwd,
liess die Adresse aber auf -mailbox false stehen -> Mailbox wurde nie
aktiviert, IMAP/SMTP-Login scheiterte trotz korrektem Passwort.
Jetzt enableMailboxForExistingEmail (-mailbox true -passwd ...), das
sowohl den existierte-als-Forward-Fall als auch den Neu-Anlage-Fall
idempotent abdeckt.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -198,16 +198,21 @@ export async function createEmail(data: CreateEmailData) {
|
|||||||
throw new Error(result.error || 'Fehler beim Anlegen der Mailbox');
|
throw new Error(result.error || 'Fehler beim Anlegen der Mailbox');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Passwort verbindlich am Postfach setzen. Beim Neu-Anlegen hat
|
// Mailbox verbindlich aktivieren UND Passwort setzen. Beim Neu-Anlegen
|
||||||
// createEmailWithMailbox es zwar schon gesetzt (der folgende Call ist
|
// hat createEmailWithMailbox das schon getan (der folgende Call ist dann
|
||||||
// dann idempotent), ABER wenn die Adresse beim Provider bereits als
|
// idempotent), ABER wenn die Adresse beim Provider bereits als reine
|
||||||
// reine Weiterleitung existierte, kehrt provisionEmailWithMailbox früh
|
// Weiterleitung existierte, kehrt provisionEmailWithMailbox früh mit
|
||||||
// mit success zurück, ohne je ein Postfach-Passwort zu setzen. Ohne
|
// success zurück, ohne je die Mailbox zu aktivieren. Ohne diesen Schritt
|
||||||
// diesen expliziten Schritt läge im CRM ein verschlüsseltes Passwort,
|
// läge im CRM ein verschlüsseltes Passwort, das der Provider gar nicht
|
||||||
// das der Provider gar nicht kennt → IMAP/SMTP-Login schlägt fehl.
|
// kennt → IMAP/SMTP-Login schlägt fehl.
|
||||||
// Deshalb: nach jedem Mailbox-Anlegen das generierte Passwort
|
//
|
||||||
// garantiert am Provider setzen, damit CRM und Provider übereinstimmen.
|
// WICHTIG (Pentest R130): hier MUSS enableMailboxForExistingEmail
|
||||||
const pwResult = await updateMailboxPassword(localPart, password);
|
// verwendet werden, nicht updateMailboxPassword. Letzteres setzt bei
|
||||||
|
// Plesk nur `-passwd`, lässt die Adresse aber auf `-mailbox false`
|
||||||
|
// stehen – die Mailbox wird also nie aktiviert und der Login scheitert
|
||||||
|
// trotz korrektem Passwort. enableMailboxForExisting setzt
|
||||||
|
// `-mailbox true -passwd ...` und deckt beide Fälle idempotent ab.
|
||||||
|
const pwResult = await enableMailboxForExistingEmail(localPart, password);
|
||||||
if (!pwResult.success) {
|
if (!pwResult.success) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
pwResult.error || 'Mailbox angelegt, aber Postfach-Passwort konnte nicht gesetzt werden',
|
pwResult.error || 'Mailbox angelegt, aber Postfach-Passwort konnte nicht gesetzt werden',
|
||||||
|
|||||||
@@ -113,6 +113,11 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
|||||||
mit success zurück, ohne je ein Postfach-Passwort zu setzen – im CRM lag
|
mit success zurück, ohne je ein Postfach-Passwort zu setzen – im CRM lag
|
||||||
ein verschlüsseltes Passwort, das der Provider nicht kannte → IMAP/SMTP-
|
ein verschlüsseltes Passwort, das der Provider nicht kannte → IMAP/SMTP-
|
||||||
Login schlug fehl. Jetzt stimmen CRM und Provider garantiert überein.
|
Login schlug fehl. Jetzt stimmen CRM und Provider garantiert überein.
|
||||||
|
- **Nachtrag Pentest R130:** Erster Versuch (`updateMailboxPassword`)
|
||||||
|
setzte bei Plesk nur `-passwd`, ließ die Adresse aber auf
|
||||||
|
`-mailbox false` → Mailbox nie aktiviert, Login scheiterte weiter.
|
||||||
|
Jetzt `enableMailboxForExistingEmail` (`-mailbox true -passwd ...`),
|
||||||
|
deckt beide Fälle idempotent ab.
|
||||||
- Tab-Leiste bei vielen Tabs: `flex-wrap` statt Overflow aus dem Rahmen.
|
- Tab-Leiste bei vielen Tabs: `flex-wrap` statt Overflow aus dem Rahmen.
|
||||||
- Referrals: 4 neue Beziehungen + Bearbeiten-Stift pro Eintrag (s.u.).
|
- Referrals: 4 neue Beziehungen + Bearbeiten-Stift pro Eintrag (s.u.).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user