--- title: Emails description: Emails weight: 10 draft: false date: 2023-03-16 extra: parent: operations/courantes.md --- # Support d'un nom de domaine personnalisé Deuxfleurs peut héberger vos e-mails, même s'ils ne finissent pas en `@deuxfleurs.fr` ! Voilà comment faire. 1. Communiquez lui votre nom de domaine pour qu'il l'ajoute dans `ou=domains,ou=groups,dc=deuxfleurs,dc=fr` 1. Communiquez lui l'adresse email que vous souhaitez pour qu'il change l'entrée `mail` dans votre profil utilisateur 1. Vous devez ensuite rajouter les entrées pour votre nom de domaine en éditant votre zone : 1. L'entrée MX pour recevoir les emails ```bind @ MX 10 email-in.deuxfleurs.fr. ``` 1. L'entrée SPF pour autoriser notre IP à délivrer des emails en votre nom : ```bind @ TXT "v=spf1 mx:out.deuxfleurs.fr -all" ``` 1. L'entrée DKIM pour autoriser notre postfix+opendkim à délivrer des emails en votre nom : ``` smtp._domainkey TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDBOCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4WfmDWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" ``` 1. L'entrée DMARC pour indiquer le comportement à adopter si les contraintes précédentes ne sont pas satisfaites : ``` _dmarc TXT "v=DMARC1; p=reject; sp=reject; adkim=s; fo=1; aspf=s; ruf=mailto:prod-sysadmin@deuxfleurs.fr; rf=afrf; pct=100; ri=86400" ``` 1. C'est tout ! Vous devrez probablement attendre 24/48h que les changements se propagent. # Comprendre le fonctionnement des e-mails ## Serveurs - SMTP: Postfix - IMAP: Dovecot (fixé sur une machine avec un backup) ## Enregistrements DNS | nom | type | valeur | signification | | --- | ---- | ------ | ------------- | | `@` | `MX` | `12 email-in.deuxfleurs.fr` | Serveur que chercheront à joindre les gens qui veulent envoyer un courrier à une addresse `@deuxfleurs.fr` | | `default._domainkey` | `TXT` | `v=DKIM1; h=sha256; k=rsa; p=` | Enregistrement DKIM (voir ci-dessous) | | `smtp._domainkey` | `TXT` | `v=DKIM1; h=sha256; k=rsa; p=` | Enregistrement DKIM (voir ci-dessous) | | `@` | `TXT` | `"v=spf1 mx:out.deuxfleurs.fr ip4: [...] -all" | Enregistrement SPF (voir ci-dessous) | | `_dmarc` | `TXT` | `"v=DMARC1; [...]` | Enregistrement DMARC (voir ci-dessous) | | `email-in` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix (pour l'enregistrement MX) | | `smtp` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Postfix (pour les utilisateurs Deuxfleurs) | | `imap` | `A` | défini par D53 | Addresse IPv4 pour parler au serveur Dovecot (pour les utilisateurs Deuxfleurs) | ### L'enregistrement DKIM Référence : **Exemple de valeurs :** ``` default._domainkey.deuxfleurs.fr. 10800 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" smtp._domainkey.deuxfleurs.fr. 1800 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtdZp4qrgZR+6R7HeAkuLGJ/3L/6Ungvf5zwrMq6T8Tu931j2G4lYuPtsxyn9fZkT4y7DlX0waktLDB" "OCwf7X78nLEWjAFWiJTeWGRGhRdYRUFpscs9NUN0P+46jKlabibG3XTKd1DeAmywTu6o1oO03yiolrgKD1zgyDRFeUTfSwZIdPrdbcBSA1arda4WFtcBIrSygM9b4jtlqfQwGDrsMLbCBfVHDn4Wfm" "DWyNg0gDAkuLrYClNETk6aqIyj9fC8srKri0Qp3cRagCn+fjBvuxP35qWWJH7Rnnh/tuEDr1ufuNYO2KgJZ7JdMidUotxXE8cfU+OrEWQf4mIYeJ4wIDAQAB" default._domainkey.adnab.me. 3600 IN TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHd2zQXgGAoFX2CFaRqvWw1oBGhbUIRB5QXPxE9nvWwe/og5LjZBcnKoInPWsKYEz/f5kmpTDq4RZT3PMmjm+u5IuvyQ2LJcdIKSW6t8KWa7yztk2D87f3Lono6WJwvY8RHdGPqKS5RXfEdQFriXiSCAO5ZSQrNXQ5yiQ9T1ptGwIDAQAB; t=s" ``` **Structure :** - Le nom de domaine est composé d'un selecteur (souvent `default`, on a ici aussi `smtp`) qui permet de distinguer différentes clefs pour signer les messages. Il est formé de la manière suivante: `._domainkey.` - La valeur est composé de plusieurs champs entre guillemets séparés par des `;`, le champ `v` peut contenir la version de DKIM utilisée (ici `v=DKIM1`) - Le champ `p` contient la clef publique - Les autres champs sont optionels **Application à la vérification d'une signature (exemple) :** Prenons la signature suivante : ``` DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=deuxfleurs.fr; s=smtp; t=1679050854; bh=AkDk3Tm0bnC7b6dvTjRXJbThLE6h/IStsBGIYGa+q7c=; h=Date:To:From:Subject:From; b=Qll5ASi9DmD2rw9LK1vJOahE77Pd/HNDbmrkrOCt4S8Nu42WtJXXOtiwo9J3KGPzR zA2Cw5oCUB0HW5ere8RkINsUj9X/nxOovxFaJw4LSrgEYxQh7unaGBs6Ecw6k2Aqc/ oMhNE2OVCSlLkJVUQbgzwBUcZuwndlki6yYoJXkSPMuZ4tFbhgjSaxneRgUvPocYw3 Vqc/yMEAbofrlaEf6nSNQZL+LSE4IEBeudsv3JodMn12OYAijhO0rrHHsinK9UkM3M PEEISyatG6RzE6veh4VVv3PTyJMYouQI7fKNooLuDmlGsdSTV9HRo4UvQeOQT1SL/7 KvgJtR0Hqz3mQ== ``` Cette signature contient les champs suivants : - `v` (obligatoire) indique la version, doit toujours être à `1` - `a` (obligatoire) indique l'algorithme de signature, généralement `rsa-sha256` - `d` (obligatoire) indique le domaine pour lequel la signature est produite - `s` (obligatoire) indique le sélecteur de la clef DKIM utilisée (ici `smtp` pour utiliser la clef `smtp._domainkey.deuxfleurs.fr`) - `h` (obligatoire) indique la liste des en-têtes signés - `bh` (obligatoire) donne le hash du contenu du message - `b` (obligatoire) donne la signature à proprement parler, qui signe les en-têtes `h` et le hash du contenu `bh` - `t` (recomandé) donne le timestamp de la signature, i.e. sa date et son heure - `c` est un paramètre additionnel de la méthode de calcul de la signature ### L'enregistrement SPF **Exemple de valeurs :** ``` deuxfleurs.fr. 300 IN TXT "v=spf1 mx:out.deuxfleurs.fr ip4:82.66.80.201 -all" adnab.me. 3600 IN TXT "v=spf1 mx mx:adnab.me include:mx.ovh.com -all" ``` ### L'enregistrement DMARC Exemple de valeurs : ``` _dmarc.deuxfleurs.fr. 300 IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; fo=1; aspf=s; ruf=mailto:prod-sysadmin@deuxfleurs.fr; rua=mailto:prod-sysadmin@deuxfleurs.fr; rf=afrf; pct=100; ri=86400" _dmarc.adnab.me. 3600 IN TXT "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:postmaster@adnab.me!10m; ruf=mailto:postmaster@adnab.me!10m; rf=afrf; pct=100; ri=86400" ```