Exchange : n’autoriser que certains expéditeurs externes à envoyer à une liste de distribution
Une liste de distribution dans Exchange peut être configurée de sorte que seuls certains expéditeurs externes puissent l’atteindre. Deux méthodes avec PowerShell : restriction de remise avec des contacts de messagerie ou règle de transport. Découvrez également les limites de la vérification de l’expéditeur et comment DMARC les comble.
Par défaut, une liste de distribution dans Exchange n’accepte que les messages provenant d’expéditeurs authentifiés, donc internes. Si un partenaire, un fournisseur ou un client doit également pouvoir joindre la liste sans pour autant l’ouvrir à l’ensemble d’Internet, deux possibilités existent : une restriction de remise sur le groupe lui-même ou une règle de transport. Les deux fonctionnent dans Exchange Server 2016, 2019 et Subscription Edition.
Situation initiale : RequireSenderAuthenticationEnabled
La propriété RequireSenderAuthenticationEnabled contrôle si un groupe accepte des messages externes. Si elle est définie sur $true (valeur par défaut pour les nouveaux groupes de distribution), Exchange rejette tout message provenant d’un expéditeur non authentifié. Les deux variantes suivantes exigent donc que cette vérification soit désactivée :
Set-DistributionGroup -Identity "Projektteam" -RequireSenderAuthenticationEnabled $false
Sans restriction supplémentaire, tout expéditeur externe peut écrire à la liste après cette étape. La restriction à certains expéditeurs intervient à l’étape suivante, idéalement pendant la même fenêtre de maintenance.
Variante 1 : restriction de remise avec des contacts de messagerie
La liste des expéditeurs autorisés (AcceptMessagesOnlyFromSendersOrMembers) n’accepte que des objets de votre propre annuaire : boîtes aux lettres, utilisateurs de messagerie, contacts de messagerie et groupes. Une simple adresse SMTP ne peut pas y être ajoutée. Créez donc un contact de messagerie pour chaque expéditeur externe. Afin que le contact n’apparaisse pas dans la liste d’adresses globale, masquez-le :
$kontakt = @{
Name = "Extern Max Muster"
ExternalEmailAddress = "max.muster@partner.example"
OrganizationalUnit = "example.local/Kontakte/Extern"
}
New-MailContact @kontakt
Set-MailContact -Identity "Extern Max Muster" -HiddenFromAddressListsEnabled $true
Ajoutez ensuite le contact comme expéditeur autorisé. La table de hachage avec Add complète la liste existante au lieu de l’écraser :
$erlaubt = @{ Add = "Extern Max Muster", "Extern Anna Beispiel" }
Set-DistributionGroup -Identity "Projektteam" -AcceptMessagesOnlyFromSendersOrMembers $erlaubt
Dès que cette liste contient au moins une entrée, Exchange rejette tous les autres expéditeurs, y compris les expéditeurs internes. Si les collaborateurs doivent continuer à pouvoir écrire à la liste, ajoutez également un groupe approprié, par exemple le groupe de distribution lui-même (tous les membres peuvent alors envoyer) ou un groupe contenant tous les collaborateurs. Les expéditeurs rejetés reçoivent un rapport de non-remise avec l’état 5.7.1.
Vérifiez l’état actuel ainsi :
Get-DistributionGroup -Identity "Projektteam" |
Format-List Name, RequireSenderAuthenticationEnabled,
AcceptMessagesOnlyFrom, AcceptMessagesOnlyFromDLMembers
AcceptMessagesOnlyFromSendersOrMembers est un paramètre agrégé : Exchange répartit les entrées entre les propriétés AcceptMessagesOnlyFrom (expéditeurs individuels) et AcceptMessagesOnlyFromDLMembers (groupes). C’est pourquoi la requête affiche ces deux propriétés. Vous trouverez le même paramètre dans le Centre d’administration Exchange, dans les propriétés du groupe, sous Gestion de la remise (Delivery management).
Cette variante convient lorsque seuls quelques expéditeurs externes doivent être ajoutés et que la liste des expéditeurs autorisés doit être visible directement sur l’objet de groupe. Son inconvénient est la charge de maintenance : chaque nouvel expéditeur nécessite un contact dans Active Directory.
Variante 2 : règle de transport sans contacts
Si tous les utilisateurs internes doivent continuer à pouvoir écrire à la liste et que seuls les expéditeurs externes doivent être restreints, une règle de transport est plus simple. Elle ne nécessite aucun contact et peut aussi s’appliquer à des domaines entiers. RequireSenderAuthenticationEnabled doit également être défini sur $false.
$regel = @{
Name = "Projektteam: nur freigegebene externe Absender"
SentTo = "projektteam@example.com"
FromScope = "NotInOrganization"
ExceptIfFromAddressMatchesPatterns = '^max\.muster@partner\.example$',
'@lieferant\.example$'
RejectMessageReasonText = "Sie sind nicht berechtigt, an diese Adresse zu senden."
RejectMessageEnhancedStatusCode = "5.7.1"
}
New-TransportRule @regel
Sans l’ancrage avec ^ et $, un modèle tel que max\.muster@partner\.example correspondrait aussi à max.muster@partner.example.net. Ajoutez de nouveaux expéditeurs avec Set-TransportRule et la liste complète étendue des modèles ; le paramètre remplace la liste existante.
Limite des deux variantes : l’adresse de l’expéditeur peut être falsifiée
Les deux variantes ne vérifient que l’adresse de l’expéditeur. Exchange ne détermine pas si le message provient réellement du partenaire autorisé. Toute personne connaissant l’adresse d’un expéditeur autorisé peut la falsifier et ainsi joindre la liste. Pour une liste dont les participants sont internes, cela ouvre la voie au phishing, d’autant plus qu’il semble provenir d’une adresse connue.
SPF, DKIM et DMARC comblent cette lacune. Si le domaine du partenaire dispose d’une politique DMARC avec p=reject ou p=quarantine et que votre passerelle de messagerie applique cette politique, les messages falsifiés de ce domaine n’atteignent même pas Exchange. Cette protection manque pour les domaines sans politique DMARC ou avec p=none.
Si votre passerelle inscrit le résultat de la vérification dans l’en-tête Authentication-Results, une seconde règle de transport peut en outre rejeter les expéditeurs autorisés lorsque DMARC n’a pas été validé :
$regel = @{
Name = "Projektteam: freigegebene Absender nur mit DMARC pass"
SentTo = "projektteam@example.com"
FromScope = "NotInOrganization"
FromAddressMatchesPatterns = '^max\.muster@partner\.example$',
'@lieferant\.example$'
ExceptIfHeaderMatchesMessageHeader = "Authentication-Results"
ExceptIfHeaderMatchesPatterns = 'dmarc=pass'
RejectMessageReasonText = "Absender konnte nicht verifiziert werden."
RejectMessageEnhancedStatusCode = "5.7.1"
}
New-TransportRule @regel
Cette règle ne fonctionne de manière fiable que si la passerelle supprime ou écrase les en-têtes Authentication-Results entrants depuis Internet. Sinon, un expéditeur peut fournir lui-même l’en-tête avec dmarc=pass. La documentation de votre passerelle indique quels en-têtes elle définit et si elle supprime les en-têtes tiers ; Exchange lui-même n’évalue pas DMARC.
Quelle variante choisir
La restriction de remise avec des contacts convient aux listes ayant un cercle restreint et fixe d’expéditeurs externes, et peut aussi restreindre les expéditeurs internes si souhaité. La règle de transport convient lorsque tous les utilisateurs internes peuvent envoyer, que des domaines partenaires entiers doivent être autorisés ou qu’aucun contact ne doit être créé dans Active Directory. Quelle que soit la variante, vérifiez la politique DMARC pour chaque domaine autorisé et documentez qui maintient la liste des expéditeurs autorisés.
Commentaires
Les commentaires sont chargés depuis GitHub / Giscus.