07 Mar 2026, 00:00

DKIM

Présentation

DKIM (DomainKey Identified Mail) permet de signer les messages expédiés par un serveur SMTP. Pour ceci, une paire de clé doit être générée, la clé publique est ensuite publiée via DNS, la clé privée est fournie au serveur SMTP.
À la réception d’un message signé via DKIM, un serveur mail va se référer à l’entête “DKIM-Signature” pour identifier le domaine et le selecteur, puis va chercher la clé publique sur les enregistrements DNS afin de vérifier la signature.

Configuration du DNS

https://help.returnpath.com/hc/fr/articles/222481088-Aper%C3%A7u-du-DNS-record-pour-la-signature-DKIM

C’est une entrée de type “TXT” (mentionnée de type DKIM chez OVH), appliquée à “selecteur._domainkey.domain.com” (selecteur et domain doivent être adaptés).
Le champ fonctionne sur un principe clé=valeur ; on retrouve les champs suivants :

  • v= : version. DKIM1
  • k= : type de clé. “rsa”
  • p= : clé publique
  • t= : ? (t=s) ; il semble que ce champ puisse poser problème dans le cas d’utilisation de sous-domaines

Analyse de la signature

https://help.returnpath.com/hc/fr/articles/222438487-Informations-d-ent%C3%AAte-de-la-signature-DKIM

Dans les entêtes d’un mail. Entête “DKIM-Signature”

Balises obligatoires :

  • v= : version. Actulemment, c’est 1
  • a= : algo pour générer la signature. Ca sera quasi toujours rsa-sha256
  • d= : pour identifier le domaine responsable de la signature
  • s= : sélecteur ; avec le domaine, permet de trouver l’emplacement de la clé publique dans le DNS
  • h= : liste d’entetes qui seront utilisées pour créer la signature (et sont donc authentifiées) ; par exemple “h=To:From:Subject;”
  • b= : hachage de la valeur “h” ; c’est généralement ceci que l’on appelle “signature DKIM”
  • bh= : hachage du corps du message

Balises optionnelles :

  • t= : horodatage du message
  • x= : horodatage de l’expiration de la signature. Doit être postérieure à “t”

ARC (Authenticatd Received Chain)

https://www.dmarcanalyzer.com/fr/arc-est-ici/

Permet de résoudre des situations où SPF ou DKIM ne fonctionnent plus (typiquement lorsqu’il y’a un transfert de mail, soit via forward automatique, soit lors d’un transfert via une mailing-list).
En gros, lorsqu’un serveur de transfert reçoit un mail avec un résultat DMARC valide, il “encapsule” ce résultat dans une en-tête ARC. Il peut ensuite retransmettre l’ensemble (message + entête ARC) au destinataire suivant (qui peut être un autre intermédiaire, ou bien le destinataire final).

Si DMARC échoue, mais que l’ensemble de la chaîne ARC est valide, un serveur peut choisir de valider le mesage quand même.

En-têtes ARC :
ARC-Authentication-Results (AAR) : regroupe les infos d’authentification du mail d’origine (SPF, DKIM, DMARC)
ARC-Message-Signature (AMS) : une signature (comme pour DKIM) pour certifier le contenu de l’ensemble du message (excepté l’ARC-Seal)
ARC-Seal (AS) : une signature (comme pour DKIM) de l’ensemble de la chaîne des ARC-Seal

Chaque certification ARC est assortie d’un numéro d’instance (i) commençant à 1. Il peut y avoir plusieurs certifications ARC successives.

Gestion via Office 365

https://security.microsoft.com/dkimv2
ou ici
https://security.microsoft.com/authentication?viewid=DKIM

Nécessite de paramétrer les entrées DNS (CNAME type selector1._domainkey.mondomaine.fr. qui pointe chez MS)

05 Mar 2019, 00:00

SPF et DMARC

Les enregistrements DNS de type SPF et DMARC servent à essayer d’assurer la bonne provenance d’un mail en identifiant l’IP du serveur qui a envoyé le message (SPF), et en définissant des attitudes à adopter dans le cas d’un échec (DMARC).

Il est aussi possible de signer cryptographiquement des messages (DKIM), couvert dans cet article.

SPF

Un enregistrement spf est de type TXT, s’applique au (sous-)domaine dont on veut essayer de légitimer les mails. Il peut ressembler à ceci, pour example.com :

v=spf1 mx ip4:1.2.3.4 include:spf.fournisseurmailing.fr -all
  • v= déclare la version
  • mx déclare que tous les serveurs MX de example.com ont le droit d’envoyer des mails en tant que someone@example.com
  • ip4: déclare une adresse (ou une plage grâce à un masque) qui a le droit d’envoyer des mails
  • include: donne une (sous-)domaine sur lequel aller chercher un enregistrement spf qui déclarerait encore d’autres entrées.

Danc cet exemple, via l’entrée include, tous les serveurs que mon fournisseur de mailing-list a lui-même autorisé via le paramétrage spf de son domaine on le droit d’envoyer des mails en notre nom. On peut vérifier le contenu de ce spf via la commande dig TXT spf.fournisseurmailing.fr.

Le -all sert à définir strictement ces serveurs autorisés, voir cette page.

Dans un cas où il y’aurait besoin d’entrer beaucoup d’adresses ip différentes, cela peut ne pas rentrer dans un seul champ DNS. Il est alors possible de se créer un sous-domaine (par exemple spf.example.com), qui sera inclus dans le spf principal.
Par exemple, pour example.com :

v=spf1 mx ip4:1.2.3.4 ip4:5.6.7.8 ip4:9.10.11.12 include:spf.example.com -all

et pour spf.example.com

v=spf1 ip4:188.12.0.0/16 -all

pour autoriser les adresses IP 1.2.3.4 , 5.6.7.8 , 9.10.11.12 ainsi que toutes les adresses de type 188.12.X.X à envoyer des mails au nom de example.com

Attention, il ne faut toutefois pas déclencher plus 10 requêtes DNS pour évaluer le SPF (y compris les requêtes DNS provoquées par des entrées au sein d’un include).

DMARC

DMARC est apparu après, et a pour objectif de dire aux serveurs qui reçoivent des mails d’une adresse nous appartenant comment recouper les tests SPF et/où DKIM, et quelle action appliquer dans le cas d’un échec.

Ceci se fait également sous la forme d’une entrée DNS, qui doit être appliquée au domaine _dmarc.example.com, et est aussi une entrée TXT.

Elle peut ressembler à ceci :

v=DMARC1; p=quarantine; pct=100; sp=quarantine; aspf=s; adkim=r;
  • v= déclare la version
  • p= déclare la politique à appliquer en cas d’échec, pour une adresse du domaine. Peut être none, quarantine ou reject
  • pct= déclare le pourcentage de mails auxquels on doit appliquer ce filtrage (permet de l’appliquer au fur et à mesure)
  • sp= déclare la politique à appliquer en cas d’échec pour une adresse d’un sous-domaine
  • aspf= déclare l’alignement concernant SPF. Peut être r (relaxed) ou s (strict)
  • adkim= déclare l’alignement concernant DKIM.

Par défaut, le DMARC est passé lorsque soit DKIM soit SPF passe avec succès. Si l’un de ces 2 alignements est défini sur strict, alors il devra être passé avec succès pour que DMARC soit validé.

On peut aussi voir dans des mails une en-tête de type Authentication-Results qui contient les résultats d’un analyse ARC. Elle peut notamment contenir les chaînes dmarc=pass spf=pass dkim=none par exemple. Cette chaîne ARC peut être mise en place lors du transfert d’un mail (par ex liste de diffusion)

28 Jul 2018, 00:00

Divers - Office 365 - Exchange online

Équivalences AD / O365 / EAC si ADConnect paramétré

Globalement, l’autorisation “Gérer” de AD correspond au status “Propriétaire” sous O365.
Ce qui existe dans l’AD est transmis vers O365/EAC, l’inverse n’est pas (forcément) vrai. Si on souhaite avoir les éléments en local, il FAUT les créer en local.
Les autorisations d’envoyer un mail “en tant que” (par ex. en tant qu’un groupe de distribution) se gèrent dans tous les cas dans l’EAC, car dans le setup actuel, il n’y a pas de serveur Exchange en local, seulement sur O365.

Utilisateurs

Un utilisateur créé sous AD apparaîtra dans O365 sous “Utilisateurs actifs” et dans EAC sous “Destinataires -> Boîtes aux lettres”. C’est un utilisateur à part entière avec boîte mail dédiée.

Groupes de sécurité

Un groupe de sécurité créé sous AD peut avoir une adresse mail renseignée ou non.

Si adresse, il apparaîtra dans O365 sous “Groupes” (en tant que “Sécurité avec extension messagerie”) et dans EAC sous “Destinataires -> Groupes” (en tant que “Sécurité à extension courrier”).

Si aucune adresse mail n’est renseignée, il apparaitra sous O365 sous “Groupes” (en tant que “Sécurité”) et n’apparaitra PAS dans EAC.

C’est avant tout un groupe pour l’organisation de l’entreprise (GPO de l’AD, etc.), qui peut également être utilisé pour remettre un courrier à tous les membres de ce groupe.
Si un autre groupe est lui-même membre du groupe, les utilisateurs de cet autre groupe ne recevront le mail QUE SI cet autre groupe a une adresse de messagerie renseignée dans ses propriétés (ceci permet de couper le transfert vers les N+1 par exemple, si on ne met pas d’adresse mail).

Groupes de distribution

Un groupe de distribution créé sous AD apparaitra dans O365 sous “Groupes” en tant que “Liste de distribution” et dans EAC sous “Destinataires -> Groupes” en tant que Liste de distribution. Il faut lui définir une adresse mail, sans quoi son intérêt est très limité (il semble qu’il n’apparaisse as dans EAC si pas d’adresse mail renseignée).

C’est un alias qui va rediriger le courrier envoyé à l’adresse en question vers tous les membres inclus dedans (permet une gestion différente des groupes de sécurité).
Si un sous-groupe est lui-même membre du groupe, les utilisateurs de ce sous-groupe ne recevront le mail QUE SI le sous-groupe a une adresse de messagerie renseignée dans ses propriétés.

L’autorisation “Send As” ne peut être définie que directement dans le EAC. Par contre, si le groupe a été créé sur AD, l’autorisation “Send On Behalf” est définie dans ADSI, sous l’attribut “publicDelegates”. Il faut toujours attendre quelques (dizaines de) minutes pour que les changements soient effectifs sous Exchange.
Dans certains cas, le client Outlook d’un utilisateur peut rester “bloqué” sur l’intention d’envoyer “de la part de” (on behalf), ce qui echouera si la seule autorisation accordée est “send as”. Pour “réinitialiser” le comportement du client, il faut désactiver puis réactiver le mode “en cache” du compte Exchange.

Boîte au lettres partagées

Il s’agit d’une boîte à part entière, avec son propre stockage/quota (quota de 99Go à l’heure de cet article). Elle permet de centraliser des messages partagés par plusieurs utilisateurs, ainsi que le calendrier. Sur l’Outlook de l’utilisateur, la boîte sera distincte de celle de l’utilisateur.
Elle permet également de partager un calendrier entre tous les utilisteurs.

Comme nous n’avons dans le cas présent pas de serveur Exchange en local, il ne me semble pas possible d’en créer une sur l’AD. Elle peut être créée dans l’EAC sous “Destinataires -> Boîte aux lettres partagée”.

Elle n’apparaitra pas dans l’AD, mais dans O365 sous les “Utilisateurs actifs”, et bien sûr dans l’EAC.

Création d’une boite aux lettres partagées avec déploiement automatique (dont calendrier)

Dans le centre d’administration Exchange (EAC), on peut aller dans Recipients -> Shared, et créer une boite aux lettres partagées. Tous les utilisateurs qui sont entrés dans les propriétés de la boite partagée -> Mailbox delegation -> Full access verront la boite mail ainsi que son calendrier se déployer automatiquement sur leur client Outlook (avec toutefois un délai jusqu’à une heure). Cette fonctionnalité est appelée “Automapping”, et peut être désactivée lors de l’ajout de la délégation, si celle-ci est faite via Powershell.

Ceci correspond à une vraie boîte mail à part entière, avec son propre espace de stockage (quota de 99Go en 2018, 50Go en 2026 (bien qu’on puisse lui attribuer une licence Exchange P2 pour étendre à 100Go) ) et apparaitra sur le client outlook séparée de la boite principale.

Attention, lorsque le compte est ajouté de cette manière, l’envoi de mail en tant que cette adresse est sujet à plusieurs facteurs :

  • il faut que l’autorisation “Send as” soit accordée (en + de “Full Access”)
  • il faut manuellement, dans Outlook, activer le champ “De” dans la fenêtre de rédaction
  • il faut, la 1e fois, entrer manuellement l’adresse depuis laquelle on envoie le mail (et faire attention à ne pas la supprimer via la petite croix)
  • il faut sélectionner l’expéditeur à chaque nouveau message (pas besoin pour les réponses)
  • le mail est enregistré dans la boîte “Envoyés” du l’utilisateur qui envoie, pas de la boîte partagée !

Ce dernier point, devrait être configurable via les commandes PS :

set-mailbox <mailbox name> -MessageCopyForSentAsEnabled $True  
set-mailbox <mailbox name> -MessageCopyForSendOnBehalfEnabled $True  

Plus de détails ici :
https://learn.microsoft.com/en-us/troubleshoot/exchange/user-and-shared-mailboxes/sent-mail-is-not-saved

Il semble que l’ajout d’un groupe de sécurité, même avec adresse mail renseignée, ne déploie pas automatiquement les boites et calendriers chez les membres du groupe.

Si la MFA est en place sur la boîte partagée, elle est complètement ignorée lors de l’automapping ; l’authentification se fait au niveau de l’utilisateur principal.

Connexion directe à une boîte mail partagée

Une possibilité autre que celle indiquée ci-dessus est de ne pas ajouter de délégation pour la boîte mail partagée, et de simplement l’ajouter en tant que 2e compte dans Outlook.

Pour ceci, il faut d’abord réinitialiser le mot de passe dans l’admin cloud, et réactiver la connexion (par défaut, le sign-in est bloqué sur les boîtes partagées).
Ensuite on l’ajoute comme n’importe quel compte. Ça a l’inconvénient de devoir être fait manuellement, mais les inconvénients ci-dessus sont évités.

Si une MFA est en place sur la boîte partagée, il faudra y répondre pour ajouter la boîte dans Outlook.

Liste de distribution (alias) sur EAC

Dans le EAC -> Recipients -> Groups, on peut créer des listes de distributions. Ceci ne correspond pas à une vraie boîte mail, mais plutôt à un alias. Les messages sont transférés à tous les utilisateurs définis dans les propriétés de la liste -> Membership.
Si on souhaite qu’un utilisateur puisse écrire depuis l’adresse de la liste de distribution, il faut ajouter l’utilisateur en question dans les propriétés de la liste -> Group delegation, et ajouter son nom sous Send As (envoi en tant qu’alias) ou bien Send on Behalf (envoi en tant que user au nom de alias).

Pour que l’utilisateur puisse envoyer des messages depuis sont Outlook (version de bureau), il faut ajouter le champ De qui est masqué par défaut. Sous 2016, ceci peut se faire dans la fenêtre de rédaction d’un message, sous l’onglet Options. Ensuite, on ajoute à la main le nom de l’alias qui doit servir à envoyer le message. Si les paramètres serveur sont corrects, l’envoi devrait fonctionner. Sinon, essayer de désactiver puis réactiver le mode “en cache” du compte Exchange.