Articles

Adam the Automator

Odio o me encanta; el correo electrónico está en todas partes. El protocolo para mover ese correo electrónico a todas partes es SMTP, y los «routers» SMTP son relés SMTP.

La configuración de relés SMTP varía según los sistemas, pero si tiene Office 365 como proveedor de servicios de correo, sus opciones son limitadas. La configuración puede ser complicada y propensa a errores, especialmente para dispositivos que no son compatibles con TLS.

Tenga en cuenta que el envío de correo electrónico a través de Office 365 no requiere un relé SMTP. Puede hacer que los clientes envíen correos electrónicos directamente a Office 365 sin agregar un relé SMTP que no requiera ningún cambio de configuración. Para saber qué son, lea Cómo enviar Correo electrónico de Envío de Cliente de Envío Directo/SMTP de Office 365 (PowerShell).

Tabla de Contenidos

Requisitos

Estos son los requisitos antes de proceder.Una suscripción a Office 365. Si aún no lo tiene, puede suscribirse a una suscripción de prueba de Office 365 E5.

  • Un equipo con Windows 10 con PowerShell v5.1
  • Una dirección IP estática pública. Aún puede crear un relé SMTP en Office 365 incluso sin esto, pero es posible que no realice pruebas.
  • Puerto TCP 25 acceso desde un cliente a su terminal MX de Office
  • Un certificado SSL válido. Este certificado podría ser un certificado comodín (p. ej. * . yourdomain.com) emitido por autoridades de certificación de terceros como LetsEncrypt, Digicert, etc. Tenga en cuenta que no puede usar certificados autofirmados ni certificados emitidos por una PKI interna porque no son compatibles. (solo se requiere para conexiones TLS)
  • Para configurar un relé SMTP, primero debe crear un conector en Office 365 para aceptar transacciones SMTP. Este conector recibirá transacciones de retransmisión SMTP desde la aplicación o el dispositivo.

    Antes de intentar crear un conector, asegúrese de que su cuenta tenga los permisos de Exchange Online adecuados. Asegúrese de que su cuenta es miembro del grupo de Administración de la Organización.

    Hay dos formas de crear un conector. Puede usar el Centro de administración de Exchange o PowerShell. Ambas opciones realizarán la misma tarea. Depende de ti cuál usar. En este artículo, cubriremos ambos. También cubriremos la creación de conectores no TLS y TLS.

    Crear un conector que no sea TLS mediante el Centro de administración de Exchange

    Comencemos por crear un conector que no sea TLS. Primero aprenderás a hacer esto a través del Centro de Administración de Exchange. Puede configurar muchos ajustes SMTP de Office 365 en el Centro de administración de Exchange.

    una Vez conectado, haga clic en el flujo de correo (1) –> conectores (2) –> Nuevo (3). Aparecerá la ventana Nuevo Conector.

    Nuevo conector
    Nuevo conector

    En la ventana Nuevo conector, seleccione: El servidor de correo electrónico de su organización (1), seleccione: Office 365 (2), haga clic en Siguiente (3).

    Seleccionar un escenario de flujo de correo
    Seleccionar un escenario de flujo de correo

    En la siguiente ventana, ingrese el nombre de relé SMTP (No TLS) o elija su propio nombre (1), escriba la descripción Aceptar retransmisión desde el servidor SMTP local (2), desmarque Conservar encabezados de correo electrónico internos de Exchange (recomendado) (3) y haga clic en Siguiente (4).

    Asignar un nombre al conector
    Asignar un nombre al conector

    En la siguiente ventana, seleccione verificando que la dirección IP del servidor de envío coincida una de estas direcciones IP que pertenecen a su organización (1) y haga clic en Agregar (2).

    Adición de direcciones IP permitidas al conector
    Adición de direcciones IP permitidas al conector

    En la nueva ventana emergente, escriba su dirección IP pública (1), luego haga clic OK (2). Esto debería devolverte a la ventana anterior.

    Agregar direcciones IP permitidas al conector
    Agregar direcciones IP permitidas al conector

    Verifique que la dirección IP esté agregada en la lista (1), luego haga clic en Siguiente (2).

    permite la Adición de direcciones IP para el conector
    Agregar permitido direcciones IP para el conector

    a Continuación podrá ver el resumen de los cambios que se deben implementar. Primero trabaja en los cambios necesarios. Si no hay ninguno, puede seguir adelante y hacer clic en Guardar.

    De vuelta en el Centro de administración de Exchange, ahora puede confirmar que se ha creado el nuevo conector.

    Office 365 Conector ha sido creado
    Office 365 Conector ha sido creado

    Usted debe ahora tener un no-TLS conector creado.

    Crear un conector TLS mediante el Centro de administración de Exchange

    Crear un conector TLS es similar a crear un conector que no sea TLS. Al igual que creó un conector que no es TLS, vuelva al asistente para Nuevos conectores y utilice el mismo escenario de flujo de correo. Usaré un nombre de conector a de Relé SMTP (No TLS), pero el tuyo puede variar.

    En la ventana para definir que Office 365 debe identificar el correo electrónico de su servidor de correo electrónico, seleccione:

    • Verificando que el nombre del asunto en el certificado que el servidor de envío utiliza para autenticarse con Office 365 coincida con este nombre de dominio (recomendado) (1)
    • a continuación, escriba el asunto del certificado SSL (2)
    • y haga clic en Siguiente (3).
    Crear un conector TLS mediante el Centro de Administración de Exchange
    Crear un conector TLS mediante el Centro de Administración de Exchange

    De nuevo, verá un resumen de los cambios necesarios. Trabaje en ellos primero antes de procesarlos. Si no hay ninguno, puede hacer clic en el botón Guardar de inmediato.

    Crear un conector que no sea TLS con PowerShell

    Si crear conectores de Office 365 a través de una interfaz gráfica de usuario no es lo tuyo, siempre puedes crearlos a través de PowerShell también. Para hacerlo, primero asegúrese de estar conectado a Exchange Online PowerShell.

    Para crear el conector, deberá ejecutar el comando New-InboundConnector. Este comando requiere unos pocos parámetros diferentes, por lo que configuraré estos parámetros con anticipación con PowerShell splatting.

    He agregado algunos comentarios en el código a continuación, pero aquí hay un desglose de cada parámetro y para qué se usa:

    • Nombre: Este es el nombre del conector.
    • ConnectorType – Este es el tipo de conector. Este valor puede ser OnPremises o Partner. En este escenario, el tipo apropiado es OnPremises.
    • SenderDomains-Puede ser una lista de los dominios de remitente permitidos. Solo los dominios verificados para su inquilino son opciones válidas. El asterisco (*) significa que está permitiendo que todos sus dominios verificados transmitan mensajes utilizando este conector. Si solo necesita permitir ciertos dominios de remitente, cambie este valor a una matriz de los dominios. (eg. 'domain1.com','domain2.com')
    • Direcciones de envío: Esta es su dirección IP pública. No olvides cambiar esto antes de la ejecución.
    • RestrictDomainsToIPAddresses – Cuando este valor se establece en $true, indica que este conector solo aceptará correos electrónicos de direcciones de remitente que provengan de su dirección IP pública permitida.
    $splat = @{ ## Define the name of the connector. Name = 'SMTP Relay' ## Defined the type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Change this to your actual public IP address. SenderIPAddresses = '110.x.x.x' ## Restrict the email relay only to your sender domains and sender IP address RestrictDomainsToIPAddresses = $true}## Create the connectorNew-InboundConnector @splat

    Cuando se ejecuta, debería ver algo similar a lo que se muestra a continuación.

    Nuevo conector de entrada
    Nuevo conector de entrada

    Crear un conector TLS usando PowerShell

    Suponiendo que esté conectado, ejecute el siguiente código para crear también un conector TLS con PowerShell. Puede ver a continuación que muchos parámetros son idénticos a la creación de un conector que no es TLS. Los parámetros necesarios que difieren de la creación de un conector que no es TLS son:

    • RequireTLS-Especifica que todos los mensajes recibidos por este conector requieren transmisión TLS
    • TlsSenderCertificateName-Este es el nombre (o asunto) del certificado utilizado por el remitente.

    $splat = @{ ## Define the name of the connector. Name = 'SMTP Relay (TLS)' ## The type of connector to create. ConnectorType = 'OnPremises' ## The set of sender domains allowed to relay. SenderDomains = '*' ## Require TLS RequireTLS = $true ## Subject/Name of the SSL certificate TlsSenderCertificateName = '*.YourDomain.com'}## Create the connectorNew-InboundConnector @splat

    Ejecute el código anterior y tenga un conector TLS creado y listo para recibir correo electrónico.

    Prueba del conector de relé SMTP de Office 365 con PowerShell

    Después de crear el conector, prepárese para probarlo. La forma más fácil de hacerlo es usar PowerShell. En esta sección, crearemos algunos scripts de PowerShell para que pueda asegurarse fácilmente de que el conector funciona correctamente.

    Antes de comenzar las pruebas, asegúrese primero de saber cuál es la URL de punto de enlace MX para su dominio de Exchange Online. Si no sabe cómo encontrar la URL de su punto de conexión MX, inicie sesión en el Portal de Administración de Office 365. Haga clic en Configuración, seleccione Dominios, haga clic en el nombre de dominio y copie los puntos MX a la dirección o valor.

    Probando un relé SMTP no TLS (Dirección IP)

    Nota: Esta prueba debe realizarse desde el equipo cuya dirección IP pública está permitida en la configuración de relé SMTP de Office 365.

    Utilice el siguiente código de PowerShell para realizar pruebas. Asegúrese de cambiar los valores de los parámetros FromTo y SmtpServer para usar su propia configuración de relé SMTP de Office 365 antes de ejecutarlo.

    • To: Debe incluir un destinatario de dominio interno y un destinatario de dominio externo. No olvides cambiar estos valores por los tuyos.
    • From div – – Debe cambiarse a su dirección de remitente designada. La parte de dominio de la dirección de correo electrónico debe ser uno de los dominios de correo electrónico de su inquilino.
    • SmtpServer div – – Debe cambiarse al punto de conexión MX de su inquilino de Office 365.
    $mailParams = @{ SmtpServer = '<tenant>.mail.protection.outlook.com' Port = '25' From = '' To = '','' Subject = ('SMTP Relay - ' + (Get-Date -Format g)) Body = 'This is a test email using SMTP Relay' DeliveryNotificationOption = 'OnFailure','OnSuccess'}Send-MailMessage @mailParams

    Probando un relé (certificado) SMTP TLS

    Nota: Debe tener el certificado SSL público en formato PFX antes de poder continuar con esta prueba.

    Dado que el relé SMTP TLS requiere un certificado, no puede usar el cmdlet Send-MailMessage PowerShell porque no le permite seleccionar un certificado específico. En su lugar, utilice dos objetos.NET llamados System.Net.Mail.SmtpClient para definir los parámetros SMTP, y System.Net.Mail.MailMessage para redactar el mensaje.

    A continuación encontrará un fragmento de código de PowerShell que puede usar para probar el relé SMTP TLS. No te olvides de cambiar el pfxFilepfxPassFromTo y SmtpServer valores a utilizar su Office 365 configuración de retransmisión SMTP antes de ejecutarlo.

    # specify the full path of your PFX certificate$pfxFile = "C:\Certificate\cert.pfx"$pfxPass = '<cert password here>'$pfxBytes = Get-Content -path $pfxFile -encoding Byte -ErrorAction:SilentlyContinue$X509Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2$X509Cert.Import(]$pfxBytes, $pfxPass,"Exportable,PersistKeySet")# Build SMTP properties$smtpServer = '<tenant>.mail.protection.outlook.com'$smtpPort = '25'$smtp = New-Object Net.Mail.SmtpClient($smtpServer,$smtpPort)$smtp.ClientCertificates.Add($X509Cert)$smtp.EnableSSL = $true# Compose message$emailMessage = New-Object System.Net.Mail.MailMessage$emailMessage.From = ''$emailMessage.To.Add('')$emailMessage.To.Add('')$emailMessage.Subject = ('SMTP Relay (TLS) - ' + (Get-Date -Format g))$emailMessage.Body = 'This is a test email using SMTP Relay (TLS)'# Send the message$smtp.Send($emailMessage)

    Si la configuración del conector TLS es correcta, los destinatarios definidos a través del método Add() deben recibir el correo electrónico de prueba.

    Validar saltos de relé SMTP usando el encabezado del mensaje

    Ahora tiene un relé SMTP funcional configurado utilizando un servidor local y un relé SMTP de Office 365. Todas las pruebas se realizaron correctamente y sus dispositivos pueden enviar mensajes a destinatarios internos y externos. Buen trabajo!

    Si aún tiene dudas y necesita confirmar si estos mensajes pasan por el retransmisor SMTP de Office 365, puede revisar los encabezados de los mensajes en los correos electrónicos recibidos.

    Nota: La apertura de los encabezados de mensaje varía entre diferentes clientes de correo. El siguiente ejemplo es específico de Gmail.

    Abra el correo electrónico en la interfaz de Gmail, abra el mensaje y haga clic en los tres puntos verticales (1), luego haga clic en Mostrar original (2).

    Validar saltos de Relé SMTP utilizando el Encabezado del mensaje
    Validar saltos de Relé SMTP utilizando el encabezado del mensaje

    Una nueva página mostrará el correo electrónico encabezados de mensaje. Haga clic en Copiar al portapapeles (1).

    Validación de Retransmisión SMTP Saltos utilizando el Encabezado del Mensaje
    Validación de Retransmisión SMTP Saltos utilizando el Encabezado del Mensaje

    Abra una nueva pestaña del navegador y vaya a https://testconnectivity.microsoft.com/.

    Vaya a la pestaña Analizador de mensajes (1), pegue los datos copiados en el cuadro (2) y haga clic en Analizar encabezados (3).

    Analizar encabezados
    Analizar encabezados

    El resultado del análisis se mostrará en la tabla como se muestra a continuación.

    Análisis de resultados
    Análisis de resultados

    Debería ver el siguiente flujo de trabajo en los resultados anteriores:

    1. Dirección IP 192.168.0.3 indica el origen de la computadora.
    2. El servidor de retransmisión SMTP local recibió el mensaje.
    3. Exchange Online Protection (EOP) recibió el mensaje.
    4. El servidor de Exchange Online y redirigido para la entrega saliente recibió el mensaje.
    5. Office 365 a google.com entregó el mensaje.

    En función de los resultados del análisis, puede confirmar que el mensaje pasó a través del relé SMTP de Office 365 según lo previsto.

    Resumen

    En este artículo, aprendiste a crear un relé SMTP de Office 365 TLS y no TLS. También aprendió a probar y confirmar su funcionalidad utilizando diferentes técnicas y a validar las rutas SMTP por las que había pasado el mensaje.

    Lectura adicional