Development #72173
choix de l'expéditeur du mail : avoir une white-list des domaines possibles
0%
Description
Pour éviter qu'un tenant utilise une adresse email d'expédition dont il n'a pas la charge, on pourrait avoir un settings.EMAIL_DOMAINS_WHITELIST qui listerait les domaines acceptables pour cette adresse. On y ajouterait par défaut le domaine du tenant hobo lui-même (exemple : hobo.demarches.ville.fr ferait que le domaine demarches.ville.fr serait accepté).
Techniquement ça serait une validation ajoutée sur le ValidEmailField de hobo.emails.forms
Files
Associated revisions
History
Updated by Thomas Noël 4 months ago
- File 0001-emails-restrict-domains-for-default_from_email-72173.patch 0001-emails-restrict-domains-for-default_from_email-72173.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Ce patch ajoute un settings EMAIL_FROM_ACCEPTED_DOMAINS qui est une liste des domaines autorisés, et qui peut contenir un "*" (un peu à la façon ALLOWED_HOSTS).
On autorise par ailleurs tous les domaines des sites de KNOWN_SERVICES, car ça sera surtout le nom du portail usager qui sera utilisé ici.
Updated by Thomas Noël 4 months ago
- File 0001-emails-restrict-domains-for-default_from_email-72173.patch 0001-emails-restrict-domains-for-default_from_email-72173.patch added
Je retire le
+ if '.' not in domain: + raise ValidationError(_('Domain %s is not accepted') % email_domain)
qui ne sert à rien (trace d'une ancienne idée).
Updated by Frédéric Péters 3 months ago
# Note: all KNOWN_SERVICES url domains are always accepter
accepteD.
Mais plus généralement ici et ailleurs on utilisera plutôt allowed.
+ settings.KNOWN_SERVICES = { + 'combo': { + 'portal': { + 'title': 'Portal', + 'url': 'https://example.org/test', + }, + 'other': { + 'title': 'Empty', + }, + } + }
Régulièrement on n'aura pas https://example.org/ mais https://www.example.org/ , si je comprends bien ça ne va pas autoriser @example.org.
Updated by Thomas Noël 3 months ago
- File 0001-emails-restrict-domains-for-default_from_email-72173.patch 0001-emails-restrict-domains-for-default_from_email-72173.patch added
Frédéric Péters a écrit :
accepteD.
Mais plus généralement ici et ailleurs on utilisera plutôt allowed.
Merci, j'ai corrigé.
Régulièrement on n'aura pas https://example.org/ mais https://www.example.org/ , si je comprends bien ça ne va pas autoriser @example.org.
Régulièrement non, la plupart du temps on a une délégation sur demarches.ville.fr, et c'est sur ça qu'on installe le combo usager et qu'on gère le mail.
Au début j'avais choisi d’accepter ville.fr si on a une délégation sur demarches.ville.fr. Et je me dis que non, ça sera une exception, il faudra vérifier la config mail (SPF/DKIM/DMARC) avant d'autoriser l'usage via un settings. C'est un peu contraignant mais préférable : je préfère ne pas souffrir de l'inventivité des personnes qui ont accès à hobo.
Quand à nos recettes, on posera un settings général « EMAIL_FROM_ALLOWED_DOMAINS = ['entrouvert.org'] » dans /etc/hobo/settings.d/email_from_allowed_domains.py et tout ira bien.
Updated by Thomas Noël 3 months ago
- File 0001-emails-restrict-domains-for-default_from_email-72173.patch 0001-emails-restrict-domains-for-default_from_email-72173.patch added
Ajout de l'acceptation de "ville.fr" quand une URL est de la forme "www.ville.fr".
Updated by Frédéric Péters 3 months ago
Je sais que c'est ailleurs ainsi mais known_services = getattr(settings, 'KNOWN_SERVICES', {})
, il y aurait moyen de plutôt itérer sur utils.get_operational_services()
, ce qui garantit en plus qu'il y a une url, et ça deviendrait juste :
for service in utils.get_operational_services(): fqdn = urllib.parse.urlparse(service.base_url).netloc.split(':')[0] if fqdn == domain or fqdn == 'www.' + domain: return
(ça demande aussi modification au test, pour créer les objets plutôt que pose settings.KNOWN_SERVICES).
Updated by Thomas Noël 3 months ago
(branche corrigée, j'avais raté l'erreur de blackisation, une ligne vide manquante)
Updated by Gitea (Bot) Gitea 2 months ago
Thomas NOEL (tnoel) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://gitea.entrouvert.org/entrouvert/hobo/pulls/8
- Titre : emails: restrict domains for default_from_email (#72173)
- Modifications : https://gitea.entrouvert.org/entrouvert/hobo/pulls/8/files
Updated by Gitea (Bot) Gitea about 2 months ago
- Status changed from Solution proposée to Solution validée
Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Thomas Noël about 2 months ago
- Status changed from Solution validée to Résolu (à déployer)
commit 64d973c20e5b53ed9051a1113df976c550fc5346 Author: Thomas NOËL <tnoel@entrouvert.com> Date: Mon Dec 12 10:54:57 2022 +0100 emails: restrict domains for default_from_email (#72173)
Updated by Transition automatique about 2 months ago
- Status changed from Résolu (à déployer) to Solution déployée
emails: restrict domains for default_from_email (#72173)