KamoCRM

Schließen Sie drei False-Verweigerungspfade die Überprüfung in RecipientDomainValidator gefunden

FixEmailService
Verschifft
29. September 2026 um 02:05 UTC
Autor
Kamo
Ausschuss
38cd3d5

Unabhängige Rezension von D-luna-1 (email-fix-review-1.md) fand zwei BLOCKER und ein MAJOR, jede eine echte falsche Ablehnung der legitimen E-Mail, von Code bereits in diesem nachgewiesen repo: - Case (BLOCKER): AliasService.createAlias, SharedMailboxService.create und ************ alle beharren auf einer Adresse genau als Admin getippt - eine echte Zeile kann "Sales@kamocrm.com" lesen. Jede Nachprüfung ist jetzt case-unsensitive in der Datenbank (LOWER(col) = LOWER(?)), gedeckt von org_id, welche immer noch erreicht diese Organisation eigenen Reihen durch jede Tabelle (org_id HASH, col) einzigartiger Index statt eines Cross-Organisations-Scans - er kann die Index-Scans einfach nicht verwenden sortierte Reichweitenkomponente, um den genauen Wert in ihnen zu suchen. Ein funktionaler Index auf LOWER(col) pro Tabelle (oder Normalisierung des Falles zum Zeitpunkt der Schreibzeit in diesen drei Diensten) würde eine einfache Punkt Suche wiederherzustellen; weder ist hier ohne Abmeldung getan, da Beide sind größer als diese Aufgabe. Implementiert über EntityManager native Abfragen in RecipientDomainValidator statt neueren Kamo-shared-Bibliotheks-Projektierungsmethoden. - Plus-Tags (BLOCKER): sage+urgent@kamocrm.com jetzt an sage@kamocrm.com (EmailAddress.baseLocalPart(), die gleiche Faltung der Vermittbarkeit/Suppressionsschicht bereits gilt) vor dem Mailbox-Check - nie für den Alias-Check, da Alias ist seine eigene, bewusst geschaffene Adresse. - Mehrere Root-Domains (MAJOR): eine alias-domain address (kamouniverse.com) ist jetzt Wiederaufnahme gegen jede Domain in ************ nicht nur die UI-Standard (allowedDomain) - eine Mailbox auf einer zweiten Root nicht mehr liest als unbekannt, nur weil es nicht die Standard-Domain der Org ist. - Unindexed member lookup (MAJOR): der MemberRepository Fallback wird entfernt. ************ hat keinen unterstützenden Index, also lief es einen Scan von jede Mitgliedsreihe in der Organisation für jede wirklich schlechte Vermutung - genau diese Feature's eigener Grund zu existieren. Es war auch unnötig: Diese Klasse läuft immer nur für eine Organisation auf KamoMail, wo eine echte, zu liefernde Adresse immer eine ************ Reihe (das ist, was stellt es); ein Mitglied dessen .email zufällig passt, aber keine dieser Zeilen hat keine Mailbox auf der geteilte Server entweder, so dass ein Senden an sie scheitert bei RCPT TO unabhängig davon, was diese überprüfen, sagte. Siehe die Klasse javadoc für das vollständige Argument. - Truncation (NIT): **************** beschließt jetzt seine Prosa auf 5 benannte Adressen ("und N mehr"), so DownstreamErrors' 300-char-Schnabschneiden kann nicht mehr schneiden Sie eine viele-schlechte Empfänger senden Nachricht aus Mitte-Adresse vor MailPack directory-lookup-Hinweis wird angefügt. abgelehnte Empfänger() wird nie gekürzt. Der MINOR (Existen-Okakel-) Befund wird als Argumentation akzeptiert, nicht als Codeänderung: Pre-Flight-Check-Antworten "does x@ownDomain exist" schneller als die bereits existierenden SendFailedException- - 422 RECIPIENTS_REJECTED Pfad könnte bereits (ein echter RCPT TO), für der gleiche-org, Sitz-Gated Caller; es öffnet keine neue Privilegiengrenze. Tests (rot bestätigt, dann grün): RecipientDomainValidatorTest gegen die neues EntityManager-basiertes Design (Spiegel **************** RETURNS_SELF Query mock) mit neuen Fällen für eine gespeicherte-mixed-case-Adresse, ein +tag gegen eine echte Mailbox, ein +tag, das sich immer noch nicht löst, und eine Alias-Domain-Adresse deren echte Mailbox lebt auf einer nicht-Standard-eigenen Root-Domain (mit und ohne +tag). SendFailureResponseTest gewann Fälle für die gedeckelte Prose vs. die untruncated strukturierte Liste. schwerer mvn test **************** 77 Laufen, 0 Ausfälle.

Alle Änderungen

Wie, was Sie sehen Versand?

Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.

Free Forever startenPreisgestaltung anzeigen