Un Catch-all Mailbox (cuenta de correo electrónico de captura) es una dirección de correo que se especifica para recibir todos los mensajes que están dirigidos a una dirección de correo electrónico incorrecta para un dominio, de modo que los emails que se envíen a una de correo electrónico no válida, se envían a la cuenta catch-all.
Esto lo podemos lograr gracias a las reglas de transporte para controlar el flujo de correo. Las reglas de transporte son una solución muy flexible, potente y fácil de mantener.
En este ejemplo, una vez establecida la sesión de PowerShell en Exchange Online, lo primero que tenemos que hacer es cambiar nuestro tipo de dominio a Internal Relay.
1 2 |
$domain = 'itpro.es' Set-AcceptedDomain -Identity $domain -DomainType InternalRelay |
Ahora necesitamos una lista de distribución que contenga todos nuestros buzones. La idea es redirigir todos los mensajes que hayan sido enviados a direcciones desconocidas, y esta lista de distribución contendrá todas las direcciones conocidas. Lo ideal para este escenario es utilizar una lista de distribución dinámica, ya que de ese modo no se requerirá ningún mantenimiento después de la configuración inicial. En el ejemplo, la lista la vamos a llamar «Everyone». Si lo deseas, esta lista puedes ocultarla de la GAL (Global Address List).
1 2 3 4 |
New-DynamicDistributionGroup ` -Name 'Everyone' ` -PrimarySmtpAddress "everyone@$domain" ` -IncludedRecipients AllRecipients |
Por último, crearemos la regla de transporte que se encargará de la redirección en el flujo de correo. En este ejemplo, vamos a redirigirlo a un buzón existente, $targetAddress.
1 2 3 4 5 6 |
$targetAddress = "contact@$domain" New-TransportRule ` -Name "Catch-all $domain" ` -RecipientDomainIs $domain ` -ExceptIfSentToMemberOf "everyone@$domain" ` -RedirectMessageTo $targetAddress |
Ahora voy a explicar esta sencilla regla de transporte, por si deseáis hacerlo a través del panel de administración de Office 365. Todos los emails que se envíen al dominio $domain serán afectados por esta regla, como se especifica en el parámetro -RecipientDomainIs. También estoy usando la lista de distribución de «Everyone» en el parámetro de ExceptIfSentToMemberOf, para que excluya los buzones existentes. Y esto es todo! 🙂