Exchange: Permitir solo remitentes externos seleccionados en una lista de distribución
Una lista de distribución en Exchange puede configurarse para que solo determinados remitentes externos puedan contactarla. Dos métodos con PowerShell: restricción de entrega con contactos de correo electrónico o regla de transporte. También se explican los límites de la comprobación de remitentes y cómo DMARC los subsana.
De forma predeterminada, una lista de distribución en Exchange solo acepta mensajes de remitentes autenticados, es decir, internos. Si un socio, proveedor o cliente también debe poder contactar con la lista sin abrirla a todo Internet, existen dos opciones: una restricción de entrega en el propio grupo o una regla de transporte. Ambas funcionan en Exchange Server 2016, 2019 y Subscription Edition.
Situación inicial: RequireSenderAuthenticationEnabled
La propiedad RequireSenderAuthenticationEnabled controla si un grupo acepta mensajes externos. Si está establecida en $true (valor predeterminado en los nuevos grupos de distribución), Exchange rechaza todos los mensajes de remitentes no autenticados. Por tanto, ambas variantes siguientes requieren desactivar esta comprobación:
Set-DistributionGroup -Identity "Projektteam" -RequireSenderAuthenticationEnabled $false
Sin más restricciones, tras este paso cualquier remitente externo puede escribir a la lista. La limitación a remitentes concretos se realiza en el siguiente paso, idealmente durante la misma ventana de mantenimiento.
Variante 1: Restricción de entrega con contactos de correo electrónico
La lista de remitentes permitidos (AcceptMessagesOnlyFromSendersOrMembers) solo acepta objetos del propio directorio: buzones, usuarios de correo electrónico, contactos de correo electrónico y grupos. No se puede introducir una dirección SMTP sin más. Por ello, cree un contacto de correo electrónico para cada remitente externo. Para que el contacto no aparezca en la lista global de direcciones, ocúltelo:
$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
A continuación, añada el contacto como remitente permitido. La tabla hash con Add amplía la lista existente en lugar de sobrescribirla:
$erlaubt = @{ Add = "Extern Max Muster", "Extern Anna Beispiel" }
Set-DistributionGroup -Identity "Projektteam" -AcceptMessagesOnlyFromSendersOrMembers $erlaubt
En cuanto esta lista contiene al menos una entrada, Exchange rechaza a todos los demás remitentes, incluidos los internos. Si los empleados deben seguir pudiendo escribir a la lista, añada también un grupo adecuado, por ejemplo, el propio grupo de distribución (en ese caso podrán enviar todos sus miembros) o un grupo con todos los empleados. Los remitentes rechazados reciben un informe de no entrega con el estado 5.7.1.
Puede comprobar el estado actual de esta forma:
Get-DistributionGroup -Identity "Projektteam" |
Format-List Name, RequireSenderAuthenticationEnabled,
AcceptMessagesOnlyFrom, AcceptMessagesOnlyFromDLMembers
AcceptMessagesOnlyFromSendersOrMembers es un parámetro de recopilación: Exchange distribuye las entradas entre las propiedades AcceptMessagesOnlyFrom (remitentes individuales) y AcceptMessagesOnlyFromDLMembers (grupos). Por eso la consulta muestra estas dos propiedades. También encontrará la misma configuración en el Exchange Admin Center, en las propiedades del grupo, en Administración de entrega (Delivery management).
Esta variante es adecuada cuando solo se añaden unos pocos remitentes externos y la lista de remitentes permitidos debe ser visible en el propio objeto de grupo. La desventaja es el esfuerzo de mantenimiento: cada nuevo remitente necesita un contacto en Active Directory.
Variante 2: Regla de transporte sin contactos
Si internamente todos deben poder seguir escribiendo a la lista y solo se desea restringir a los remitentes externos, una regla de transporte es más sencilla. No requiere contactos y también puede aplicarse a dominios completos. RequireSenderAuthenticationEnabled también debe establecerse aquí en $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
Sin el anclaje con ^ y $, un patrón como max\.muster@partner\.example también coincidiría con max.muster@partner.example.net. Añada nuevos remitentes con Set-TransportRule y la lista completa y ampliada de patrones; el parámetro sustituye la lista existente.
Límite de ambas variantes: la dirección del remitente puede falsificarse
Ambas variantes solo comprueban la dirección del remitente. Exchange no determina si el mensaje procede realmente del socio autorizado. Quien conozca la dirección de un remitente autorizado puede falsificarla y llegar así a la lista. En una lista con participantes internos, esto abre una vía para el phishing que, además, aparenta proceder de una dirección conocida.
SPF, DKIM y DMARC cierran esta brecha. Si el dominio del socio tiene una política DMARC con p=reject o p=quarantine y su puerta de enlace de correo aplica esta política, los mensajes falsificados de ese dominio ni siquiera llegan a Exchange. En dominios sin política DMARC o con p=none, falta esta protección.
Si su puerta de enlace escribe el resultado de la comprobación en el encabezado Authentication-Results, una segunda regla de transporte puede rechazar adicionalmente a los remitentes autorizados si DMARC no se ha superado:
$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
Esta regla solo funciona de forma fiable si la puerta de enlace elimina o sobrescribe los encabezados Authentication-Results entrantes desde Internet. De lo contrario, un remitente puede incluir por sí mismo el encabezado con dmarc=pass. La documentación de su puerta de enlace indica qué encabezados establece y si elimina encabezados externos; Exchange no evalúa DMARC por sí mismo.
Qué variante es adecuada
La restricción de entrega con contactos es adecuada para listas con un círculo fijo y reducido de remitentes externos y, si se desea, también restringe a los remitentes internos. La regla de transporte es adecuada cuando todos los usuarios internos pueden enviar, se deben autorizar dominios completos de socios o no se desean crear contactos en Active Directory. Independientemente de la variante, compruebe la política DMARC de cada dominio autorizado y documente quién mantiene la lista de remitentes permitidos.
Comentarios
Los comentarios se cargan desde GitHub / Giscus.