¿Necesitas que solo los propietarios de un Microsoft 365 Group (incluidos los grupos con alias “.onmicrosoft.com”) puedan enviar correos al buzón del grupo? En esta guía práctica verás cómo hacerlo de forma segura con Exchange Online PowerShell, cómo verificarlo y cómo mantenerlo sin dolores de cabeza.
Resumen del caso y objetivo
Un equipo creó un Microsoft 365 Group y desea restringir el envío de correos a la dirección del grupo para que solo los propietarios (owners) tengan permiso de enviar al grupo completo. Los miembros no deben poder enviar mensajes al alias del grupo. La forma más simple y efectiva de implementar esto es usando el parámetro AcceptMessagesOnlyFromSendersOrMembers
del cmdlet Set-UnifiedGroup
en Exchange Online PowerShell.
Cómo funciona a nivel de Exchange
Los Microsoft 365 Groups son objetos “Unified Group” en Exchange Online. Igual que con los grupos de distribución, podemos definir una lista explícita de remitentes permitidos que pueden enviar mensajes al alias del grupo. Cuando configuras AcceptMessagesOnlyFromSendersOrMembers
, el sistema solo acepta mensajes si el remitente está:
- En la lista de direcciones/buzones especificados, o
- Es miembro de un mail-enabled security group (grupo de seguridad habilitado para correo) que hayas incluido en esa lista.
Todo lo demás se rechaza con un rebote (NDR) por autorización insuficiente. Si además estableces AllowExternalSenders:$false
, bloquearás cualquier intento desde direcciones externas al tenant.
Requisitos previos
- Rol con permisos para administrar Exchange Online (por ejemplo, Exchange Administrator o permisos delegados equivalentes).
- PowerShell 5.1 o PowerShell 7.x en tu estación de administración.
- Módulo
ExchangeOnlineManagement
instalado y conectividad saliente hacia los servicios de Microsoft 365.
Pasos rápidos para aplicar la restricción
Los siguientes pasos te llevan de cero a la configuración final. Si ya tienes el módulo instalado, puedes omitir lo correspondiente.
Conectar a Exchange Online
Set-ExecutionPolicy RemoteSigned
Install-Module -Name ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Permitir que solo los owners envíen al grupo
Reemplaza group@domain.com
por el alias del grupo y lista únicamente las direcciones de los propietarios:
Set-UnifiedGroup -Identity "group@domain.com" `
-AcceptMessagesOnlyFromSendersOrMembers owner1@domain.com,owner2@domain.com
A partir de este cambio, solo esos remitentes podrán enviar mensajes al grupo. Cualquier otro remitente (incluidos los miembros) será rechazado.
Bloquear remitentes externos (opcional pero recomendado)
Set-UnifiedGroup -Identity "group@domain.com" -AllowExternalSenders:$false
Esto evita envíos desde fuera de tu organización. Mantén también la autenticación de remitentes habilitada (suele estar en $true
por defecto).
Verificar la configuración
Get-UnifiedGroup -Identity "group@domain.com" |
Format-List DisplayName,PrimarySmtpAddress,AcceptMessagesOnlyFromSendersOrMembers,AllowExternalSenders
Conceptos clave para entender la configuración
Concepto | Descripción | Implicación en el caso |
---|---|---|
Owner | Usuario con permisos de administración sobre el grupo (agregar/quitar miembros, cambiar configuración). | No existe un parámetro “dinámico” de “solo owners”; debes enumerar sus direcciones o usar un grupo de seguridad con correo. |
Member | Usuario que pertenece al grupo y recibe mensajes/permite colaborar. | En este escenario, no debe poder enviar al alias del grupo. |
AcceptMessagesOnlyFromSendersOrMembers | Lista de remitentes permitidos (buzones, usuarios de correo o grupos habilitados para correo). | Corazón de la solución. Limita quién puede enviar al grupo. |
AllowExternalSenders | Permite o bloquea envíos desde direcciones externas al tenant. | Déjalo en $false para endurecer la superficie de ataque. |
Enumerar owners sin mantenimiento manual
Como no existe una opción nativa de “solo owners”, lo más limpio es:
- Opción A: Rellenar la lista con los owners actuales y actualizarla cuando cambien.
- Opción B (recomendada): Crear un mail-enabled security group (p. ej.
Owners-GroupX
), agregar ahí a los propietarios y usar este grupo como único remitente permitido.
Opción A: Poblar la lista con los owners actuales
Si ya tienes los owners definidos en el grupo, puedes extraerlos y aplicarlos de una vez:
$groupId = "group@domain.com"
Obtener owners del Unified Group
\$owners = (Get-UnifiedGroupLinks -Identity \$groupId -LinkType Owners |
Where-Object {$\_.PrimarySmtpAddress} |
Select-Object -ExpandProperty PrimarySmtpAddress)
if (-not \$owners -or \$owners.Count -eq 0) {
throw "El grupo no tiene owners con dirección SMTP. Define los owners antes de restringir el envío."
}
Aplicar restricción de envío solo a esos owners
Set-UnifiedGroup -Identity \$groupId -AcceptMessagesOnlyFromSendersOrMembers \$owners
(Opcional) Bloquear externos
Set-UnifiedGroup -Identity \$groupId -AllowExternalSenders:\$false
Verificar
Get-UnifiedGroup -Identity \$groupId |
Format-List DisplayName,PrimarySmtpAddress,AcceptMessagesOnlyFromSendersOrMembers,AllowExternalSenders
Opción B: Usar un mail-enabled security group para los owners
Esta opción reduce el mantenimiento: cuando cambien los propietarios, solo actualizas el grupo de seguridad.
# 1) Crear el grupo de seguridad habilitado para correo
New-DistributionGroup -Name "Owners-GroupX" -PrimarySmtpAddress owners-groupx@domain.com -Type Security
2) Agregar a los propietarios como miembros del grupo de seguridad
Add-DistributionGroupMember -Identity "Owners-GroupX" -Member [owner1@domain.com](mailto:owner1@domain.com)
Add-DistributionGroupMember -Identity "Owners-GroupX" -Member [owner2@domain.com](mailto:owner2@domain.com)
3) Usar ese grupo como remitente permitido del Microsoft 365 Group
Set-UnifiedGroup -Identity "[group@domain.com](mailto:group@domain.com)" \`
-AcceptMessagesOnlyFromSendersOrMembers [owners-groupx@domain.com](mailto:owners-groupx@domain.com)
4) (Opcional) Bloquear externos
Set-UnifiedGroup -Identity "[group@domain.com](mailto:group@domain.com)" -AllowExternalSenders:\$false
5) Comprobación
Get-UnifiedGroup -Identity "[group@domain.com](mailto:group@domain.com)" |
Format-List DisplayName,PrimarySmtpAddress,AcceptMessagesOnlyFromSendersOrMembers,AllowExternalSenders
Buenas prácticas y notas operativas
- Evita mantenimiento manual usando un grupo de seguridad con correo para los owners. Así, no tocas el parámetro del Microsoft 365 Group cada vez que un owner cambia.
- Usa identidades habilitadas para correo: buzones, usuarios de correo o grupos con correo. Direcciones sueltas sin objeto en Azure AD no funcionarán.
- Propagación: tras aplicar cambios, puede haber una ventana de propagación (normalmente unos minutos) hasta que todos los flujos de transporte reflejen la nueva regla.
- Alias “.onmicrosoft.com”: la configuración aplica al objeto del grupo, independientemente de si usas el dominio inicial
.onmicrosoft.com
o un dominio personalizado. - Autenticación: mantén la autenticación de remitentes habilitada; reforzarás la protección frente a suplantación interna.
Verificación y pruebas finales
- Envía un mensaje de prueba desde una cuenta owner incluida en la lista o en el grupo de seguridad: el mensaje debe entregarse al buzón del grupo.
- Envía un mensaje de prueba desde un usuario que sea miembro pero no owner: debe rebotar con un error de autorización.
- Desde una cuenta externa, prueba que el rebote ocurra si
AllowExternalSenders
está en$false
.
Para una verificación adicional, revisa el parámetro AcceptMessagesOnlyFromSendersOrMembers
con:
Get-UnifiedGroup -Identity "group@domain.com" |
Select-Object -ExpandProperty AcceptMessagesOnlyFromSendersOrMembers
Solución de problemas frecuentes
Síntoma | Causa probable | Cómo resolver |
---|---|---|
Rebotes inesperados de owners | Los owners no están en la lista o su objeto no es “mail-enabled”. | Ejecuta Get-UnifiedGroupLinks -LinkType Owners y valida PrimarySmtpAddress . Agrega las direcciones correctas y vuelve a aplicar la regla. |
Miembros siguen pudiendo enviar | La lista de remitentes permitidos está vacía o incluye inadvertidamente a “Members”. | Vuelve a establecer AcceptMessagesOnlyFromSendersOrMembers con owners específicos o el grupo de seguridad. Verifica que no haya otros objetos permitidos. |
Externos pueden enviar | AllowExternalSenders está en $true . | Ejecuta Set-UnifiedGroup -AllowExternalSenders:$false y verifica. |
Error de permisos al conectar | La cuenta carece de roles necesarios. | Usa una cuenta con rol de Exchange Administrator o ajusta Roles en Entra ID. |
El cambio tarda en surtir efecto | Propagación interna de Exchange Online. | Espera unos minutos y vuelve a probar. Confirma con Get-UnifiedGroup . |
Checklist de implementación
- Identifica el UPN/SMTP del grupo:
group@domain.com
. - Confirma los owners y sus direcciones SMTP.
- Decide si usarás un grupo de seguridad con correo.
- Aplica
AcceptMessagesOnlyFromSendersOrMembers
. - Deshabilita
AllowExternalSenders
si procede. - Verifica con
Get-UnifiedGroup
y pruebas de envío.
Snippets listos para copiar y pegar
Configurar en un solo bloque
# Conectar
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Variables
\$Group = "[group@domain.com](mailto:group@domain.com)"
\$Owners = "[owner1@domain.com](mailto:owner1@domain.com)","[owner2@domain.com](mailto:owner2@domain.com)"
Aplicar
Set-UnifiedGroup -Identity \$Group -AcceptMessagesOnlyFromSendersOrMembers \$Owners
Set-UnifiedGroup -Identity \$Group -AllowExternalSenders:\$false
Verificar
Get-UnifiedGroup -Identity \$Group |
Format-List DisplayName,PrimarySmtpAddress,AcceptMessagesOnlyFromSendersOrMembers,AllowExternalSenders
Revertir la restricción
Si necesitas volver a permitir envíos sin restricciones:
Set-UnifiedGroup -Identity "group@domain.com" -AcceptMessagesOnlyFromSendersOrMembers $null
Confirma que el valor haya quedado vacío al consultar el grupo.
Automatización: sincronizar owners a un grupo de seguridad
Para minimizar operaciones manuales, puedes ejecutar periódicamente un script que sincronice los owners del Unified Group con el mail-enabled security group usado como “lista de remitentes permitidos”.
param(
[Parameter(Mandatory=$true)][string]$UnifiedGroupSmtp,
[Parameter(Mandatory=$true)][string]$OwnersSecurityGroupName
)
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
try {
\$ug = Get-UnifiedGroup -Identity \$UnifiedGroupSmtp -ErrorAction Stop
\$secGroup = Get-DistributionGroup -Identity \$OwnersSecurityGroupName -ErrorAction SilentlyContinue
if (-not \$secGroup) {
Write-Host "Creando grupo de seguridad con correo: \$OwnersSecurityGroupName"
\$secGroup = New-DistributionGroup -Name \$OwnersSecurityGroupName -Type Security
}
\$currentMembers = (Get-DistributionGroupMember -Identity \$secGroup.Identity -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty PrimarySmtpAddress) + @()
\$ownerSmtps = (Get-UnifiedGroupLinks -Identity \$ug.Identity -LinkType Owners |
Where-Object {$\_.PrimarySmtpAddress} |
Select-Object -ExpandProperty PrimarySmtpAddress) + @()
Agregar faltantes
foreach (\$addr in \$ownerSmtps) {
if (\$currentMembers -notcontains \$addr) {
Add-DistributionGroupMember -Identity \$secGroup.Identity -Member \$addr -BypassSecurityGroupManagerCheck
Write-Host "Agregado \$addr a \$(\$secGroup.DisplayName)"
}
}
Quitar sobrantes (opcional)
foreach (\$addr in \$currentMembers) {
if (\$ownerSmtps -notcontains \$addr) {
Remove-DistributionGroupMember -Identity \$secGroup.Identity -Member \$addr -Confirm:\$false
Write-Host "Quitado \$addr de \$(\$secGroup.DisplayName)"
}
}
Asegurar que solo el grupo de seguridad esté como remitente permitido
Set-UnifiedGroup -Identity \$ug.Identity -AcceptMessagesOnlyFromSendersOrMembers \$secGroup.PrimarySmtpAddress
Set-UnifiedGroup -Identity \$ug.Identity -AllowExternalSenders:\$false
Write-Host "Sincronización completa para \$UnifiedGroupSmtp"
}
catch {
Write-Error $\_
}
finally {
Disconnect-ExchangeOnline -Confirm:\$false
}
Puedes programarlo como tarea en Windows para que se ejecute diariamente y mantenga alineada la lista de remitentes permitidos con los owners vigentes.
Comparación con otras alternativas
- Reglas de transporte (mail flow rules): Podrían filtrar envíos al alias, pero son más complejas de mantener, y no sustituyen una lista de remitentes permitidos a nivel de objeto. La opción con
Set-UnifiedGroup
es más directa y menos propensa a errores. - Moderación de mensajes: No bloquea; solicita aprobación. En escenarios de “solo owners pueden enviar”, la moderación introduce latencia operativa y carga adicional.
Preguntas frecuentes
¿Debo usar el dominio “.onmicrosoft.com” o un dominio personalizado?
Puedes usar cualquiera; la restricción aplica al objeto del grupo, no al dominio.
¿Los owners deben ser también miembros?
No es obligatorio. La capacidad de enviar al alias del grupo está controlada por la lista de remitentes permitidos, no por la membresía.
¿Puedo incluir aplicaciones o buzones compartidos?
Sí, siempre que sean objetos habilitados para correo en tu organización.
¿Qué pasa si agrego un nuevo owner?
Si usas la Opción B, solo agrégalo al mail-enabled security group. Si usas la Opción A, vuelve a ejecutar Set-UnifiedGroup
con la lista actualizada.
¿Cómo audito quién envió al grupo?
Puedes usar registros de auditoría y seguimiento de mensajes en Exchange Online para ver envíos realizados y su estado.
Resumen ejecutivo
Para restringir el envío a un Microsoft 365 Group y permitir solo a los owners:
- Conéctate a Exchange Online con el módulo oficial.
- Establece
AcceptMessagesOnlyFromSendersOrMembers
con las direcciones de los owners o con un mail-enabled security group. - Configura
AllowExternalSenders:$false
si no necesitas remitentes externos. - Verifica con
Get-UnifiedGroup
y realiza pruebas de envío.
Apéndice: comandos rápidos
Acción | Comando |
---|---|
Conectar | Connect-ExchangeOnline |
Restringir a owners específicos | Set-UnifiedGroup -Identity "group@domain.com" -AcceptMessagesOnlyFromSendersOrMembers owner1@domain.com,owner2@domain.com |
Bloquear externos | Set-UnifiedGroup -Identity "group@domain.com" -AllowExternalSenders:$false |
Verificar | Get-UnifiedGroup -Identity "group@domain.com" | Format-List ... |
Revertir restricción | Set-UnifiedGroup -Identity "group@domain.com" -AcceptMessagesOnlyFromSendersOrMembers $null |
Conclusión
La solución más robusta y simple para asegurar que solo los owners puedan enviar al alias de un Microsoft 365 Group es aprovechar AcceptMessagesOnlyFromSendersOrMembers
desde Exchange Online PowerShell. Si encapsulas a los propietarios en un mail-enabled security group, el mantenimiento es mínimo y la política permanece consistente a lo largo del tiempo. Complementa con AllowExternalSenders:$false
para cerrar la puerta a remitentes externos y ejecuta verificaciones periódicas. Con estos pasos, tu grupo quedará protegido y bajo control, sin fricción para los usuarios autorizados.