Public-Domain-Guard (icloud.com/gmail.com etc. nie blockbar/veröffentlichbar): - neue utils/public-email-domains.ts (shared Freemail-Liste) - custom-domains/index.post + custom-domains/suggest + curated-domains/suggest lehnen Public-Domains mit 400 PUBLIC_DOMAIN ab (defense-in-depth) Mail-Detection (mo): "spins" zu GAMBLING_KEYWORDS + Subject-%-Pattern (Score 10) → fängt "Spins + 400% Bonus"-Spam von Freemail-Absendern. 61/61 Tests grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
2.2 KiB
TypeScript
54 lines
2.2 KiB
TypeScript
/**
|
|
* Public-/Freemail-Provider-Domains.
|
|
*
|
|
* Diese Domains dürfen NIEMALS als Custom-Domain (web ODER mail) geblockt oder
|
|
* in die kuratierte Country-Liste vorgeschlagen werden:
|
|
* - web: icloud.com/gmail.com blocken würde die Webmail des Users sperren
|
|
* - mail: würde JEDE Mail von diesem Provider löschen (Kontakte, Banken, alles)
|
|
*
|
|
* Realer Vorfall: User hat eine Casino-Spam-Mail von `xyz@icloud.com` geöffnet,
|
|
* die komplette Adresse kopiert + ins Add-Feld gepackt → wir extrahierten
|
|
* `icloud.com` und hätten es geblockt/veröffentlicht. Das muss hart verhindert
|
|
* werden — auf JEDER Ebene (Frontend-Hinweis + Backend-Reject).
|
|
*
|
|
* Spiegel-Liste im Frontend: `apps/rebreak-native/hooks/useCustomDomains.ts`
|
|
* (PUBLIC_EMAIL_DOMAINS) — bei Änderungen beide synchron halten.
|
|
*/
|
|
export const PUBLIC_EMAIL_DOMAINS: ReadonlySet<string> = new Set([
|
|
// Google
|
|
"gmail.com", "googlemail.com",
|
|
// Apple
|
|
"icloud.com", "me.com", "mac.com",
|
|
// Microsoft
|
|
"outlook.com", "outlook.de", "hotmail.com", "hotmail.de", "hotmail.co.uk",
|
|
"hotmail.fr", "live.com", "live.de", "msn.com",
|
|
// Yahoo
|
|
"yahoo.com", "yahoo.de", "yahoo.co.uk", "yahoo.fr", "ymail.com", "rocketmail.com",
|
|
// GMX / United Internet (DACH)
|
|
"gmx.de", "gmx.net", "gmx.at", "gmx.ch", "gmx.com", "web.de",
|
|
// AOL
|
|
"aol.com", "aim.com",
|
|
// Proton / Tutanota / Posteo / Mailbox (privacy)
|
|
"proton.me", "protonmail.com", "pm.me", "tutanota.com", "tutanota.de",
|
|
"tuta.io", "posteo.de", "posteo.net", "mailbox.org", "hey.com",
|
|
// Deutsche ISP-Freemail
|
|
"t-online.de", "freenet.de", "arcor.de",
|
|
// Generische Freemail
|
|
"mail.com", "mail.de", "email.de", "zoho.com", "fastmail.com", "fastmail.fm",
|
|
"hushmail.com",
|
|
// Yandex / Mail.ru
|
|
"yandex.com", "yandex.ru", "mail.ru",
|
|
// Frankreich (FR-Markt)
|
|
"laposte.net", "orange.fr", "free.fr", "sfr.fr", "wanadoo.fr",
|
|
// Asien
|
|
"qq.com", "163.com", "126.com", "naver.com", "daum.net",
|
|
]);
|
|
|
|
/**
|
|
* True wenn die (bereits normalisierte, lowercase) Domain ein
|
|
* Public-/Freemail-Provider ist und daher nicht blockbar/vorschlagbar.
|
|
*/
|
|
export function isPublicEmailDomain(domain: string): boolean {
|
|
return PUBLIC_EMAIL_DOMAINS.has(domain.trim().toLowerCase());
|
|
}
|