Administrar reglas de bandeja de entrada para varios usuarios en Exchange Online o Exchange Server puede llevar mucho tiempo cuando se hace manualmente. Necesita crear, actualizar o reemplazar reglas para docenas o cientos de buzones sin abrir el Outlook de cada usuario. El cmdlet de PowerShell New-InboxRule le permite automatizar esta tarea directamente desde el Shell de administración de Exchange o el módulo de PowerShell de Exchange Online. Este artículo explica cómo implementar reglas de bandeja de entrada en los buzones de correo de los usuarios usando New-InboxRule, incluidos los requisitos previos, los comandos paso a paso y los errores comunes que se deben evitar.
Puntos clave: Implementación de reglas de bandeja de entrada con PowerShell
- Cmdlet New-InboxRule: Crea una nueva regla de bandeja de entrada para un buzón específico usando parámetros como -Mailbox, -Name y condiciones o acciones de la regla.
- Bucle ForEach con Get-Mailbox: Itera a través de una lista filtrada de buzones para aplicar la misma regla a varios usuarios en un solo script.
- Remove-InboxRule antes de la implementación: Elimina las reglas existentes con el mismo nombre para evitar errores de reglas duplicadas al actualizar reglas.
Descripción de New-InboxRule y sus requisitos
New-InboxRule es un cmdlet de Exchange PowerShell que crea una regla de bandeja de entrada del lado del servidor para un buzón especificado. La regla se ejecuta en el servidor de Exchange o en Exchange Online, por lo que funciona incluso cuando el Outlook del usuario está cerrado. El cmdlet admite condiciones comunes como la dirección del remitente, palabras clave del asunto y la dirección del destinatario, y acciones como mover a una carpeta, reenviar o eliminar.
Antes de usar New-InboxRule, debe cumplir estos requisitos:
- Módulo de PowerShell: Instale el módulo PowerShell de Exchange Online V2 (EXO V2) para buzones en la nube, o conéctese a un Shell de administración de Exchange local.
- Permisos: Necesita el rol Destinatarios de correo o ser miembro del grupo de roles Administración de la organización o Administración de destinatarios.
- Tipo de buzón: El buzón de destino debe ser un buzón de usuario, no un buzón compartido o de recursos, a menos que habilite la asignación automática.
- Existencia de la carpeta: Si la regla mueve mensajes a una carpeta, esa carpeta ya debe existir en el buzón de destino. New-InboxRule no crea carpetas.
Pasos para implementar una regla en un solo buzón
- Conéctese a Exchange
Abra Exchange Online PowerShell o el Shell de administración de Exchange. Para Exchange Online, ejecute:Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com. Para local, abra el Shell de administración de Exchange como administrador. - Verifique que el buzón de destino existe
EjecuteGet-Mailbox -Identity user@yourdomain.com | Format-List Name, RecipientTypeDetailspara confirmar que el buzón es un UserMailbox y no un buzón compartido o de recursos. - Compruebe si existe una regla con el mismo nombre
EjecuteGet-InboxRule -Mailbox user@yourdomain.com -Name "Move Invoices to Archive". Si la regla existe, elimínela primero:Remove-InboxRule -Mailbox user@yourdomain.com -Name "Move Invoices to Archive" -Confirm:$false. - Cree la nueva regla de bandeja de entrada
Ejecute el comando New-InboxRule con los parámetros requeridos. Ejemplo:New-InboxRule -Mailbox user@yourdomain.com -Name "Move Invoices to Archive" -From "invoices@company.com" -MoveToFolder "user@yourdomain.com:\Archive" -StopProcessing:$true. El parámetro-StopProcessing:$trueimpide que otras reglas se ejecuten después de que esta regla procese el mensaje. - Pruebe la regla
Envíe un correo de prueba desde el remitente especificado al buzón. Compruebe que el mensaje se mueve a la carpeta de destino. Para verificar las propiedades de la regla, ejecuteGet-InboxRule -Mailbox user@yourdomain.com -Name "Move Invoices to Archive" | Format-List.
Implementación de la misma regla en varios buzones
Para aplicar una regla a muchos usuarios, use un bucle ForEach con Get-Mailbox. Este ejemplo mueve los correos electrónicos de un remitente específico a una carpeta Archive para todos los usuarios del departamento de Ventas.
- Obtenga la lista de buzones de destino
Ejecute$mailboxes = Get-Mailbox -Filter {Department -eq "Sales"} -ResultSize Unlimited. Esto almacena todos los buzones del departamento de Ventas en la variable $mailboxes. - Recorra cada buzón y cree la regla
Use este script:foreach ($mbx in $mailboxes) {
Remove-InboxRule -Mailbox $mbx.Identity -Name "Move Invoices to Archive" -Confirm:$false -ErrorAction SilentlyContinue
New-InboxRule -Mailbox $mbx.Identity -Name "Move Invoices to Archive" -From "invoices@company.com" -MoveToFolder ($mbx.Identity + ":\Archive") -StopProcessing:$true
}
La línea Remove-InboxRule usa -ErrorAction SilentlyContinue para que el script no se detenga si no se encuentra ninguna regla existente. - Confirme que se crearon las reglas
Ejecuteforeach ($mbx in $mailboxes) { Get-InboxRule -Mailbox $mbx.Identity -Name "Move Invoices to Archive" | Format-Table MailboxName, Name, Enabled }. Esto muestra el nombre del buzón, el nombre de la regla y si la regla está habilitada. - Maneje los buzones sin la carpeta de destino
Si un buzón no tiene la carpeta Archive, el comando falla. Para crear la carpeta en cada buzón antes de aplicar la regla, ejecute:foreach ($mbx in $mailboxes) {
$folder = Get-MailboxFolder -Mailbox $mbx.Identity -FolderType Archive -ErrorAction SilentlyContinue
if (-not $folder) { New-MailboxFolder -Mailbox $mbx.Identity -Name "Archive" -ParentPath "\" }
}
Luego ejecute de nuevo el bucle de creación de reglas.
Uso de condiciones y acciones en reglas masivas
New-InboxRule admite muchos parámetros para condiciones y acciones. Al implementar reglas masivas, puede combinar parámetros para que coincidan con escenarios específicos.
Parámetros de condición comunes
- -From: Coincide con una dirección de correo electrónico o dominio de remitente específico.
- -SubjectContainsWords: Coincide con los mensajes cuyo asunto contiene cualquiera de las palabras especificadas.
- -BodyContainsWords: Coincide con los mensajes cuyo cuerpo contiene cualquiera de las palabras especificadas.
- -SentTo: Coincide con los mensajes enviados a una dirección de destinatario específica.
- -HasAttachment: Coincide con los mensajes que tienen uno o más archivos adjuntos.
Parámetros de acción comunes
- -MoveToFolder: Mueve el mensaje a una carpeta especificada.
- -CopyToFolder: Copia el mensaje a una carpeta especificada sin eliminar el original.
- -ForwardTo: Reenvía el mensaje a un destinatario especificado.
- -DeleteMessage: Elimina el mensaje sin enviarlo a la carpeta Elementos eliminados.
- -MarkImportance: Establece el nivel de importancia en Baja, Normal o Alta.
Ejemplo: Cree una regla que marque los correos electrónicos con archivos adjuntos de remitentes externos para todos los usuarios del departamento de TI.foreach ($mbx in $mailboxes) {
New-InboxRule -Mailbox $mbx.Identity -Name "External Attachments" -From "@" -HasAttachment:$true -MarkImportance High -StopProcessing:$false
}
Errores comunes de implementación y cómo evitarlos
La creación de la regla falla porque la carpeta de destino no existe
New-InboxRule no crea carpetas automáticamente. Si una regla hace referencia a una carpeta que falta, el cmdlet devuelve un error. Siempre verifique o cree la carpeta antes de aplicar la regla. Use Get-MailboxFolder para comprobar y New-MailboxFolder para crear la carpeta como se muestra en los pasos de implementación anteriores.
Los nombres de reglas duplicados causan errores
Cada buzón puede tener solo una regla con un nombre determinado. Si ejecuta New-InboxRule con el mismo nombre y la regla ya existe, el cmdlet falla. Siempre llame a Remove-InboxRule con -Confirm:$false antes de crear una nueva regla con el mismo nombre. Como alternativa, use un nombre único por implementación agregando una marca de tiempo, como “Move Invoices to Archive 2025-03-15”.
La regla no se aplica a los mensajes que ya están en la bandeja de entrada
New-InboxRule crea reglas que se aplican solo a los mensajes nuevos que llegan después de habilitar la regla. Los mensajes existentes en la bandeja de entrada no se ven afectados. Para mover los mensajes existentes, use Search-Mailbox o el cmdlet Move-MailboxFolder, o pida a los usuarios que apliquen manualmente la regla a su bandeja de entrada actual desde Outlook.
Identidad de buzón incorrecta en el parámetro MoveToFolder
El parámetro MoveToFolder requiere la identidad completa del buzón y la ruta de la carpeta en el formato "mailbox@domain.com:\Folder Name". Si usa una variable como $mbx.Identity, asegúrese de que contenga la dirección SMTP o el GUID del buzón. Usar $mbx.PrimarySmtpAddress es más seguro que $mbx.Identity cuando la identidad es un ID de objeto.
New-InboxRule frente a otros métodos de implementación de reglas
| Elemento | New-InboxRule (PowerShell) | Creación manual de reglas en Outlook |
|---|---|---|
| Alcance de la implementación | Un solo buzón o masivo mediante script | Un buzón a la vez |
| Automatización | Totalmente automatizable con bucles y filtros | Sin automatización, requiere interacción con la GUI |
| Almacenamiento de reglas | Regla del lado del servidor en Exchange o Exchange Online | Regla del lado del servidor, pero creada a través de Outlook |
| Creación de carpetas | Debe hacerse por separado con New-MailboxFolder | Outlook crea la carpeta automáticamente durante la configuración de la regla |
| Manejo de errores | Requiere verificación manual de errores en los scripts | Outlook muestra cuadros de diálogo de error durante la creación |
| Reversión | Use Remove-InboxRule en un bucle | Elimine las reglas manualmente en cada buzón |
Use New-InboxRule cuando necesite implementar la misma regla en muchos usuarios rápidamente. Use la creación manual solo para reglas únicas o cuando pruebe una nueva regla en un solo buzón antes de la implementación masiva.
Ahora puede usar New-InboxRule para implementar reglas de bandeja de entrada en los buzones de correo de los usuarios en Exchange Online o Exchange Server. Comience probando la regla en un solo buzón, luego use el bucle ForEach con Get-Mailbox para aplicarla a un departamento o a toda la organización. Siempre elimine las reglas existentes con el mismo nombre antes de crear otras nuevas para evitar errores. Para escenarios avanzados, combine varias condiciones y acciones en un solo comando New-InboxRule para manejar necesidades complejas de enrutamiento de correo electrónico.