Gerenciar regras de caixa de entrada para vários usuários no Exchange Online ou Exchange Server pode ser demorado quando feito manualmente. Você precisa criar, atualizar ou substituir regras para dezenas ou centenas de caixas de correio sem abrir o Outlook de cada usuário. O cmdlet PowerShell New-InboxRule permite automatizar essa tarefa diretamente do Exchange Management Shell ou do módulo Exchange Online PowerShell. Este artigo explica como implantar regras de caixa de entrada em várias caixas de correio usando New-InboxRule, incluindo pré-requisitos, comandos passo a passo e erros comuns a evitar.
Principais Conclusões: Implantação de Regras de Caixa de Entrada com PowerShell
- Cmdlet New-InboxRule: Cria uma nova regra de caixa de entrada para uma caixa de correio específica usando parâmetros como -Mailbox, -Name e condições ou ações da regra.
- Loop ForEach com Get-Mailbox: Itera por uma lista filtrada de caixas de correio para aplicar a mesma regra a vários usuários em um único script.
- Remove-InboxRule antes da implantação: Exclui regras existentes com o mesmo nome para evitar erros de regra duplicada ao atualizar regras.
Entendendo o New-InboxRule e seus Requisitos
New-InboxRule é um cmdlet do Exchange PowerShell que cria uma regra de caixa de entrada no servidor para uma caixa de correio especificada. A regra é executada no servidor Exchange ou no Exchange Online, funcionando mesmo quando o Outlook do usuário está fechado. O cmdlet suporta condições comuns como endereço do remetente, palavras-chave no assunto e endereço do destinatário, e ações como mover para uma pasta, encaminhar ou excluir.
Antes de usar o New-InboxRule, você deve atender a estes requisitos:
- Módulo PowerShell: Instale o módulo Exchange Online PowerShell V2 (EXO V2) para caixas de correio na nuvem, ou conecte-se a um Exchange Management Shell local.
- Permissões: Você precisa da função Destinatários de Email ou ser membro do grupo de funções Gerenciamento da Organização ou Gerenciamento de Destinatários.
- Tipo de caixa de correio: A caixa de correio de destino deve ser uma caixa de correio de usuário, não uma caixa de correio compartilhada ou de recurso, a menos que você habilite o automapeamento.
- Existência da pasta: Se a regra mover mensagens para uma pasta, essa pasta já deve existir na caixa de correio de destino. O New-InboxRule não cria pastas.
Passos para Implantar uma Regra em uma Única Caixa de Correio
- Conectar ao Exchange
Abra o Exchange Online PowerShell ou o Exchange Management Shell. Para Exchange Online, execute:Connect-ExchangeOnline -UserPrincipalName admin@seudominio.com. Para ambiente local, abra o Exchange Management Shell como administrador. - Verificar se a caixa de correio de destino existe
ExecuteGet-Mailbox -Identity usuario@seudominio.com | Format-List Name, RecipientTypeDetailspara confirmar que a caixa de correio é do tipo UserMailbox e não compartilhada ou de recurso. - Verificar se existe uma regra com o mesmo nome
ExecuteGet-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo". Se a regra existir, remova-a primeiro:Remove-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" -Confirm:$false. - Criar a nova regra de caixa de entrada
Execute o comando New-InboxRule com os parâmetros necessários. Exemplo:New-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" -From "faturas@empresa.com" -MoveToFolder "usuario@seudominio.com:\Arquivo" -StopProcessing:$true. O parâmetro-StopProcessing:$trueimpede que outras regras sejam executadas após esta processar a mensagem. - Testar a regra
Envie um email de teste do remetente especificado para a caixa de correio. Verifique se a mensagem foi movida para a pasta de destino. Para confirmar as propriedades da regra, executeGet-InboxRule -Mailbox usuario@seudominio.com -Name "Mover Faturas para Arquivo" | Format-List.
Implantando a Mesma Regra em Várias Caixas de Correio
Para aplicar uma regra a muitos usuários, use um loop ForEach com Get-Mailbox. Este exemplo move emails de um remetente específico para uma pasta Arquivo para todos os usuários do departamento de Vendas.
- Obter a lista de caixas de correio de destino
Execute$mailboxes = Get-Mailbox -Filter {Department -eq "Vendas"} -ResultSize Unlimited. Isso armazena todas as caixas de correio do departamento de Vendas na variável $mailboxes. - Percorrer cada caixa de correio e criar a regra
Use este script:foreach ($mbx in $mailboxes) {
Remove-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" -Confirm:$false -ErrorAction SilentlyContinue
New-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" -From "faturas@empresa.com" -MoveToFolder ($mbx.Identity + ":\Arquivo") -StopProcessing:$true
}
A linha Remove-InboxRule usa -ErrorAction SilentlyContinue para que o script não pare se nenhuma regra existente for encontrada. - Confirmar que as regras foram criadas
Executeforeach ($mbx in $mailboxes) { Get-InboxRule -Mailbox $mbx.Identity -Name "Mover Faturas para Arquivo" | Format-Table MailboxName, Name, Enabled }. Isso mostra o nome da caixa de correio, o nome da regra e se a regra está habilitada. - Lidar com caixas de correio sem a pasta de destino
Se uma caixa de correio não tiver a pasta Arquivo, o comando falha. Para criar a pasta em cada caixa de correio antes de aplicar a regra, execute:foreach ($mbx in $mailboxes) {
$folder = Get-MailboxFolder -Mailbox $mbx.Identity -FolderType Archive -ErrorAction SilentlyContinue
if (-not $folder) { New-MailboxFolder -Mailbox $mbx.Identity -Name "Arquivo" -ParentPath "\" }
}
Em seguida, execute o loop de criação da regra novamente.
Usando Condições e Ações em Regras em Massa
O New-InboxRule suporta muitos parâmetros para condições e ações. Ao implantar regras em massa, você pode combinar parâmetros para atender a cenários específicos.
Parâmetros de condição comuns
- -From: Corresponde a um endereço de email ou domínio específico do remetente.
- -SubjectContainsWords: Corresponde a mensagens cujo assunto contenha qualquer uma das palavras especificadas.
- -BodyContainsWords: Corresponde a mensagens cujo corpo contenha qualquer uma das palavras especificadas.
- -SentTo: Corresponde a mensagens enviadas para um endereço de destinatário específico.
- -HasAttachment: Corresponde a mensagens que tenham um ou mais anexos.
Parâmetros de ação comuns
- -MoveToFolder: Move a mensagem para uma pasta especificada.
- -CopyToFolder: Copia a mensagem para uma pasta especificada sem excluir a original.
- -ForwardTo: Encaminha a mensagem para um destinatário especificado.
- -DeleteMessage: Exclui a mensagem sem enviá-la para a pasta Itens Excluídos.
- -MarkImportance: Define o nível de importância como Baixa, Normal ou Alta.
Exemplo: Crie uma regra que sinalize emails com anexos de remetentes externos para todos os usuários do departamento de TI.foreach ($mbx in $mailboxes) {
New-InboxRule -Mailbox $mbx.Identity -Name "Anexos Externos" -From "@" -HasAttachment:$true -MarkImportance High -StopProcessing:$false
}
Erros Comuns na Implantação e Como Evitá-los
A criação da regra falha porque a pasta de destino não existe
O New-InboxRule não cria pastas automaticamente. Se uma regra fizer referência a uma pasta que não existe, o cmdlet retorna um erro. Sempre verifique ou crie a pasta antes de aplicar a regra. Use Get-MailboxFolder para verificar e New-MailboxFolder para criar a pasta, conforme mostrado nas etapas de implantação acima.
Nomes de regra duplicados causam erros
Cada caixa de correio pode ter apenas uma regra com um determinado nome. Se você executar New-InboxRule com o mesmo nome e a regra já existir, o cmdlet falha. Sempre chame Remove-InboxRule com -Confirm:$false antes de criar uma nova regra com o mesmo nome. Alternativamente, use um nome único por implantação, acrescentando um timestamp, como “Mover Faturas para Arquivo 2025-03-15”.
A regra não se aplica a mensagens já existentes na caixa de entrada
O New-InboxRule cria regras que se aplicam apenas a novas mensagens que chegam após a regra ser habilitada. Mensagens existentes na caixa de entrada não são afetadas. Para mover mensagens existentes, use Search-Mailbox ou o cmdlet Move-MailboxFolder, ou peça aos usuários que apliquem manualmente a regra à caixa de entrada atual no Outlook.
Identidade incorreta da caixa de correio no parâmetro MoveToFolder
O parâmetro MoveToFolder requer a identidade completa da caixa de correio e o caminho da pasta no formato "caixa@dominio.com:\Nome da Pasta". Se você usar uma variável como $mbx.Identity, certifique-se de que ela contenha o endereço SMTP ou GUID da caixa de correio. Usar $mbx.PrimarySmtpAddress é mais seguro que $mbx.Identity quando a identidade é um ID de objeto.
New-InboxRule vs Outros Métodos de Implantação de Regras
| Item | New-InboxRule (PowerShell) | Criação Manual de Regras no Outlook |
|---|---|---|
| Escopo de implantação | Caixa de correio única ou em massa via script | Uma caixa de correio por vez |
| Automação | Totalmente scriptável com loops e filtros | Sem automação, requer interação com a GUI |
| Armazenamento da regra | Regra no servidor Exchange ou Exchange Online | Regra no servidor, mas criada via Outlook |
| Criação de pasta | Deve ser feita separadamente com New-MailboxFolder | Outlook cria a pasta automaticamente durante a configuração da regra |
| Tratamento de erros | Requer verificação manual de erros nos scripts | Outlook exibe diálogos de erro durante a criação |
| Reversão | Use Remove-InboxRule em um loop | Exclua regras manualmente em cada caixa de correio |
Use o New-InboxRule quando precisar implantar a mesma regra para muitos usuários rapidamente. Use a criação manual apenas para regras pontuais ou ao testar uma nova regra em uma única caixa de correio antes da implantação em massa.
Agora você pode usar o New-InboxRule para implantar regras de caixa de entrada em várias caixas de correio no Exchange Online ou Exchange Server. Comece testando a regra em uma única caixa de correio e, em seguida, use o loop ForEach com Get-Mailbox para aplicá-la a um departamento ou a toda a organização. Sempre remova as regras existentes com o mesmo nome antes de criar novas para evitar erros. Para cenários avançados, combine várias condições e ações em um único comando New-InboxRule para lidar com necessidades complexas de roteamento de email.