Relay correo con Exchange

En la mayoría de instalaciones es necesario poder enviar o reenviar correos electrónicos desde dispositivos de red, ya sean escáneres, fax, bases de datos, aplicaciones específicas, gestores de alertas, etc…; pero ¡no vale la barra libre! Poder enviar correos electrónicos si, pero de manera controlada. Si permitimos que todos los dispositivos puedan enviar correos electrónicos sin ningún tipo de control, seguramente en poco tiempo, nos encontraremos el servidor de correo electrónico bloqueado por ser un generador de spam i eso no lo queremos.

Se habla de enviar un correo electrónico cuando va dirigido a una dirección del propio dominio de correo electrónico. El servidor conoce las direcciones y simplemente hace la entrega. Es lo que pasa cuando alguien envía un correo electrónico desde el exterior o bien desde la red interna a una dirección del dominio. No se sabe quién es el emisor, puede ser cualquiera. Normalmente se utiliza la figura del anónimo para tratar la entrada del correo al servidor, de esta manera, cualquiera nos puede enviar un correo electrónico.

El reenvío de correo electrónico es el caso contrario, cuando el correo electrónico va desde el propio dominio al exterior. Se puede llegar a conocer el emisor si este se identifica en el servidor, pero no el receptor del mensaje. Si dejamos abierta esta salida sin solicitar la identificación del emisor permitimos que cualquiera utilice nuestro servidor para reenviar correos electrónicos donde quiera. En Internet es habitual buscar este tipo de malas configuraciones para poder utilizar los servidores de terceros para envíos masivos de correos, también conocidos como spammers. Por suerte, cada vez más, los administradores de sistemas están concienciados de la problemática y es lo primero que se configura correctamente, evitando el acceso indebido.

No siempre se puede configurar un dispositivo para que se identifique frente a un servidor SMTP, y ahora vienen los problemas. ¿Que pasa cuando tengo una impresora que no sabe que es esto de autenticarse en el servidor SMTP? ¿Como lo hacemos? La solución pasa por crear un conector de recepción de correo electrónico específico y establecer los permisos en las direcciones IP y/o usuarios correspondientes para que puedan reenviar correos electrónicos.

 

Conector para reenvío de correo por IP

Desde el Centro de administración de Exchange, en el menú de la izquierda, hacer clic en Flujo de correo.

relay-exchange-001

En el menú superior, hacer clic en conectores de recepción.

relay-exchange-002

Microsoft Exchange 2013 ya crea por defecto un conector para poder recibir correo electrónico de los dominios del Exchange por SMTP desde cualquier dirección, ya sea de Internet o interna. Es el conector Default Frontend y el nombre del servidor. Para comprobar su configuración, seleccionar el conector y hacer clic en el botón Modificar.

relay-exchange-003

Hacer clic en Ámbito.

relay-exchange-004

En la parte superior figuran las redes remotas que se pueden comunicar por SMTP con este conector: todas las direcciones IPv6 (:: a FFF…) y todas las direcciones IPv4 (0.0.0.0 a 255.255.255.255). En la parte inferior, por qué adaptador de red y puerto está escuchando: todas las direcciones IPv6 y IPv4 del servidor por el puerto 25.

relay-exchange-005

Sabemos donde actúa el conector, pero hay que saber como actúa. Hacer clic en Seguridad. Desde donde se configura quién puede enviar y cómo por este conector. Al ser el receptor de Internet se pueden dejar las opciones marcadas por defecto. Hacer clic en el botón Guardar o Cancelar para cerrar las propiedades del conector.

relay-exchange-006

Si se comprueba como está funcionando este conector utilizando una conexión directa al protocolo SMTP, como no, con nuestro buen amigo PUTTY. Desde el propio servidor de correo, realizar la conexión al localhost por el puerto 25 en formato RAW. Hacer clic en el botón Open para establecer esta conexión. Si todo está correcto nos contesta el servidor de correo local. (Alerta si tenéis instalados sistemas anti-x que bloqueen procesos por el puerto SMTP que no os dejarán utilizar el Putty).

relay-exchange-007

relay-exchange-008

Introducir la secuencia para crear y enviar un correo electrónico a una dirección interna, desde el correo electrónico jmsolanes@unaadreca.com (naturalmente no existe, sólo es para ver que se puede enviar desde cualquier dirección) a secretaria@jmsolanes.cat:

helo
mail from:jmsolanes@unaadreca.com
rcpt to:secretaria@jmsolanes.cat

Al introducir el último comando, valida el destinatario contestando Recipient OK. Continuar con el correo:

data

Escribir el contenido del mensaje. Terminar introduciendo un INTRO, un PUNTO y un INTRO. (<CRLF>.<CRLF>). El sistema pone a la cola el correo electrónico para entregar a su destinatario.

relay-exchange-010

Si se comprueba la bandeja de entrada del usuario, este ha recibido el correo electrónico que se le acaba de enviar por comandos.

relay-exchange-011

¿Pero que pasa cuando se intenta enviar fuera de los dominios de correo que controla el propio servidor Microsoft Exchange? Haciendo la misma prueba pero enviando a la dirección de correo electrónico de otro dominio, secretaria@outlook.com:

helo
mail from:jmsolanes@unaadreca.com
rcpt to:secretaria@outlook.com

Al introducir la dirección de destino, el sistema contesta con un Unable to relay, evitando poder continuar. Eso quiere decir que tenemos el reenvío de correo electrónico bloqueado, que es lo correcto. En caso contrario, se puede utilizar el servidor para enviar spam.

Para la mayoría de sistemas con esta configuración ya tendríamos suficiente. Cualquiera puede enviar a direcciones que gestiona el propio servidor de correo, pero no lo puede hacer hacia el exterior. Es el caso de sistemas de Fax, escáneres, sistemas de monitorización, etc… que reenvían las notificaciones a una dirección interna.

¿Que pasa cuando también hay que enviar a una direccón externa? Por ejemplo si se quiere enviar el documento escaneado directamente al cliente, las alertas a la empresa de monitorización o los informes del ERP a los clientes, etc… Con esta configuración no lo podemos hacer, pero bajo ningún concepto tenemos que modificar este conector para hacerlo.

La solución pasa por crear un nuevo conector acotando su configuración.

 

Creación del conector

Desde el centro de administración de Exchange, apartado de Flujo de correo, opción Conectores de Recepción. Hacer clic en el botón Añadir para crear un nuevo conector de recepción.

relay-exchange-012

Introducir un nombre identificativo para el conector, por ejemplo, Relay de correu. Indicar el rol del conector como Transporte Front-End y el tipo de configuración, como no, en personalizada. Hacer clic en el botón Siguiente.

relay-exchange-013

¿En qué dirección IP se tiene que instalar el nuevo conector? Borrar la de defecto que incluye Todas las direcciones IPv4 disponibles, seleccionarla y hacer clic en el botón Borrar.

relay-exchange-014

Hacer clic en el botón Añadir para agregar una nueva dirección IP. En el cuadro de diálogo, seleccionar Especificar una dirección IPv4 o IPv6 y introducir la dirección IP del servidor de correo. Hacer clic en el botón Guardar y Siguiente para continuar.

relay-exchange-015

relay-exchange-016

¿Cuál será la IP que enviará el correo electrónico? Volver a borrar la línea por defecto, que incluye todas las direcciones IP, para poder agregar las IPs en concreto que tendrán este permiso: el escáner, el servidor de base de datos, el servidor de monitorización, etc… Hacer clic en el botón Guardar y Finalizar para crear el nuevo conector.

relay-exchange-017

Seleccionar el nuevo conector y hacer clic en el botón Modificar para editar sus propiedades.

relay-exchange-018

El apartado Ámbito es lo que se ha definido durante la creación del conector, en todo caso, en el apartado red remota hay que ir añadiendo las diferentes IPs desde las que se enviarán los correos electrónicos.

relay-exchange-019

En el apartado Seguridad, por defecto, falta hacer algo más ya que, según esto, nadie puede enviar.

relay-exchange-020

 

Pausa para una prueba de funcionamiento del conector para una mejor comprensión.

Se utiliza un cliente de correo sencillo POP3-SMTP como puede ser el Becky! para hacer las diferentes pruebas. Básicamente para facilitar las diferentes configuraciones. Se configura una cuenta SMTP-POP3 y como servidor SMTP se indica la misma dirección IP donde se ha instalado el conector de recepción para «Relay de correo».

relay-exchange-021

Asegurar que el cliente utiliza el puerto SMTP 25 (donde está el conector) y que NO se autenticará el usuario en el protocolo SMTP.

relay-exchange-025

Si se hace la prueba de enviar un nuevo correo electrónico a una dirección interna (secretaria@jmsolanes.cat) desde otra dirección interna inventada (escaner@jmsolanes.cat), el cliente protesta al enviar el correo electrónico porque no se ha autenticado el usuario. Es lo esperado.

relay-exchange-022

relay-exchange-023

En las propiedades del conector de correo «Relay de correo», en las opciones de seguridad, marcar el checkbox Usuarios anónimos. Hacer clic en el botón Guardar.

relay-exchange-024

Repetir la prueba de enviar el correo electrónico, esta vez si que se entrega al destinatario interno.

relay-exchange-026

¿Y en el exterior qué lo puede hacer? Recordar que es el objetivo de la configuración. Hasta Microsoft Exchange 2010, con esta configuración en el conector hay suficiente para que esto funcione, pero si habéis hecho la prueba con Microsoft Exchange 2013 habréis comprobado que sigue saliendo el mensaje de Unable to relay.

relay-exchange-027

Esto es porque a partir de esta versión se tienen que especificar explícitamente los permisos al usuario en el conector por PowerShell.

 

Permisos reenvío de correo por usuario

Abrir la consola de PowerShell de Exchange, desde el servidor de Exchange, en el menú de aplicaciones (símbolo Windows y hacer clic en el botón con una flecha hacia abajo de más aplicaciones), seleccionar Exchange Management Shell.

relay-exchange-028

Comprobar los conectores de los que dispone la organización de Exchange

Get-receiveconnector

O bien, ver las propiedades del que se ha creado específicamente:

Get-receiveconnector "Relay de correu"

relay-exchange-029

Para poder modificar los permisos del usuario anónimo a fin de permitir recibir peticiones SMTP en el conector específico:

Get-ReceiveConnector "Relay de correu" | Add-ADPermission -User 'NT AUTHORITY\Anonymous Logon' -ExtendedRights MS-Exch-SMTP-Accept-Any-Recipient

relay-exchange-030

Volver a hacer la prueba de enviar sin autenticar. Esta vez ¡no hay ningún problema para enviarlo!

 

¿Y si no se quiere dar acceso para todos los usuarios, sino sólo para uno en concreto?

Se tiene que autenticar el usuario en el conector SMTP, pero también se le tienen que otorgar los permisos para reenviar con la instrucción anterior, susrituyendo el NT AUTHORITY\Anonymous Logon por el nombre del dominio y usuario en cuestión:

Get-ReceiveConnector "Relay de correu" | Add-ADPermission -User 'DOMINI\secre' -ExtendedRights MS-Exch-SMTP-Accept-Any-Recipient

Para comprobar los permisos de un usuario en concreto por el conector:

Get-ReceiveConnector "Relay de correu" | Get-AdPermissions -User 'DOMINI\secre"

En caso que el usuario no tuviera permisos explícitos no aparece como tal.

relay-exchange-031

 

¿Te ha gustado el artículo? Lo puedes compartir en las redes sociales. También puedes dejar tu opinión, comentario o sugerencia. ¡Gracias!

Similar Posts by The Author:

 

35 comentaris per a
“Relay correo con Exchange”

  1. Estoy intentando configurar una aplicacion para enviar correos a diferentes direcciones a la vez a traves de un Exchange 2016, pero me encuentro que no funciona. He intentado crear el conector para la recepcion como indicas pero tengo un problema cuando intento elegir el rol que indicas (frontend) no me deja elegirlo. Porque puede ser? Me puedes ayudar.
    Gracias.

     
    1. Hola Victor,

      Cuando comentas configurar la aplicación, ¿a qué te refieres?, SMTP, IMAP, MAPI? Entiendo que SMTP. Si es así, configuras la aplicación para utilizar autenticación o tiene que ser anónimo? Si es anónimo, debes dar de alta la IP del equipo que contiene la aplicación en el relay de correo.

      Porqué no puedes crear otro? Porqué ya lo tienes creado? Piensa que los relays de correo no se pueden sobreescribir entre ellos. Si tienes uno con la IP del servidor i el puerto X, no puedes tener otro con la misma IP y el mismo puerto. Revisa la configuración de los conectores que tienes dado de alta.

      Saludos,

       
  2. Hola
    Ante todo, feliciitarte por este y por el resto de artículos.
    En cuanto a este artículo, me surge una duda: a la hora de crear un nuevo conector para poder enviar correos al exterior, ¿por qué no se usa un conector de envío en lugar de uno de recepción?
    Gracias y un saludo

     
    1. Hola Vicente, se utiliza el conector de recepción para que los equipos externos al servidor de correo electrónico puedan enviar este al propio servidor de Exchange. Una vez el correo está en el servidor de Exchange, el servidor, utiliza el conector de envío para enviar el correo electrónico al exterior si así corresponde.

      Saludos,

       
  3. Hola Excelente post.
    Una duda es posible limitar a solo ciertos usuarios de exchange en la seguridad del send connector?

     
    1. En Exchange Server si. Puedes bloquear los usuarios para que no puedan utilizar el envio de correos al exterior. Me lo apunto para una próxima entrada.

      Saludos,

       
  4. Buen dia,

    Hice la prueba de enviar un correo a un servidor externo y si se envio :'(
    En este caso creo que tengo el relay abierto para que pueden enviar mensaje u. u. Me podrias aconsejar que puedo hacer parar deshabilitar ese relay? O de pronto tienes una entrada en la cual hables es esto….Me seria de mucha ayuda, gracias. Saludos!

     
    1. Esta es la entrada correcta. Por defecto el connector de Exchange pide autenticación y no permite el relay de correo electrónico. Lo que haces creando este relay es permitir el reenvío de correos desde las IPs que tu especificas y no de todo Internet.

       
  5. Gracias por el apoyo. tengo un problema. He configurado un servidor CAS nuevo y ahora no envian correos por relay ni mis impresoras ni ni bd de alertas. He intentado crear un conector pero tengo las siguientes dudas: el conector relay se crea dentro de una mailbox o un cas? y tambien si el comando desde power shell para dar premisos al relay se ejecuta desde un mailbox o un cas; porque desde un servidor cas me sale que no encuentra mi conector creado y me arroja la ruta de mi controlador de dominio.

     
    1. Correcto, debes crear el connector en TODOS los servidores que deban enviar correo electrónico a los que apunten las impresoras y otros dispositivos. No es un rol único a la organización sinó a cada servidor individual.

      Saludos,

       
  6. Hola,

    En primer lugar, muy buen post. La pregunta que tengo es que si dejamos los conectores de recepción por defecto para aceptar correos de cualquier dirección marcados los usuarios anónimos, desde dentro de la red se podría suplantar el From del correo que se envie por telnet.

    Entiendo que con esa configuración sería posible hacer Phishing desde la red interna a usuarios del mismo dominio.

    Saludos

     
    1. El relay abierto (con usuario anónimo) lo debes limitar siempre a las IPs controladas del dominio y substituir en la medida de lo posible per conexiones con autenticación (cosa que no siempre es posible debido a los dispositivos: impresoras, PLCs, centralitas etc….). Tener este relay abierto, permite enviar a direcciones externas a la organización. En caso que sólo se deba enviar a direcciones internas no hace falta crear este relay.

      Sobre el Phishing interno lo puedes hacer siempre a los usuarios internos, ya que siempre se permite el acceso a usuarios internos. En ese caso la pregunta seria, ¿cómo se ha colado un generador de phishing en la red interna?

       
  7. Configuré un conector Frontend para un exchange 2013 para poder aceptar relay de ciertos dispositivos, se especificaron las IPs que permitan envío de Anonymous, se le dio derecho a dicho conector desde el Shell, sin embargo al tratar de enviar Telnet y verificar el acceso vía connector me dice lo siguiente:
    mail from:xxxxxxx@xxxx.xx
    530 5.7.1 Client was not authenticated
    Gracias de antemano por la ayuda. Saludos

     
    1. Hola Zahyra,

      debes asegurar la dirección IP del connector y que el equipo que hace la prueba de TELNET esté en la lista de equipos con relay permitido, sinó salta el conector por defecto que pide autenticación.

       
  8. Hola josep muchas gracias por tu articulo, como lo puedo hacer para conectarme con otros clientes que no son outlook me lanza un mensaje de pop3 y smtp que no se puede conectar con el servidor, mi idea es antes funcionaba con GLPI y podia enviar correos de forma automatica, lo mismo con el scaner de la empresa, esto es todo interno, la idea es no salir hacia otras redes externas.

     
    1. Hola Sebastian, el relay de correo electrónico es para reenviar correo electrónico a cuentas de la organización o externas.

      Dicho esto, por lo que comentas de utilizar otros clientes, esos otros clientes utilizan los protocolos de entrada de correo electrónico (POP3 o IMAP4), para que te funcionen debes crear un buzón y habilitar al menos uno de dichos protocolos (POP3 o IMAP) en el Exchange para poder conectar el cliente. Por defecto estos protocolos acostumbran a venir desactivados.

      Saludos.

       
  9. Muchas gracias don josep en el servidor he hecho lo siguiente en caracteristica de buzon al usuario correspondiente:
    IMAP HABILITADO
    POP3 HABILITADO
    o acaso se debe habilitar el servicio de otra forma?

    gracias

     
    1. Es correcto en el usuario, pero también debes configurar el PROTOCOLO y publicar los puertos a traves de los firewalls.

      Le puedes echar un vistazo a este doc:

       
  10. Hola nuevamente, por acá, ya me dejó conectarme, active en el servidor el pop3 y los servicios m. exchange pop3 y backend automaticos, pero el problema es que solo puedo recibir y no enviar al tener un problema de contraseña kerberos.

     
  11. hola josep, parece que se borraron mis comentarios, le iba a preguntar que hice todo lo que me aconsejo, pero por ejemplo cuando configuro thunderbird me rebusca automaticamente la contraseña kerberos en smtp, puedo conectarme recibir mensajes, pero no puedo transmitir por smtp, me dice error de kerberos.

     
    1. Hola, prueba de configurar el cliente SMTP por el puerto SSL sin certificado. Revisa la configuración del conector SMTP (que en este caso no te sirve el que muestra esta entrada al ser sin autenticación). Debes configurar el otro conector de cliente por defecto que esté escuchando por el puerto 25 del servidor de correo.

       
  12. te refieres a los conectores de recepciòn del servidor? cual de todos es el que debo cambiar? es el puerto 587 el que me aparece

     
  13. si me aparece el puerto 25, configure el puerto de thunderbird smtp, con ese puerto, pero no me deja enviar de todos modos.

     
    1. Con el cliente Thunderbird, tendrias que autenticarte en el protocolo SMTP con el usuario y contraseña. El relay de correo está pensado para equipos que no permiten la autenticación en el protocolo como impresoras antiguas o sistemas de monitorización. Si pones todos los clientes sin autenticación estás permitiendo que cualquiera pueda hacer spam desde su equipo. Alerta con este tipo de configuraciones, tenlo todo muy controlado.

       
  14. Hola don josep. efectivamente es el puerto 25, me puedo conectar pero aun no puedo enviar msgs. la contraseña es NTML. En realidad se me agotaron las esperanzas, gracias.

     
  15. Excelente amigo. Tenía meses intentando esto. Muchísimas gracias. En verdad.
    Una pregunta, para el caso contrario, no de permitir los conectores de envío y Recepción, sino limitar que un usuario no pueda enviar ni recibir correos fuera del ámbito del dominio de Exchange 2013 (nada de gmail, ni de hotmail, sino sólo interno), cómo queda la sintaxis de la shell?.
    De antemano gracias!.

     
    1. Hola, esto que comentas no te afectaría al relay de correo, si no a las propias características del buzón de usuario o regla del conector. En ellos puedes limitar de forma específica o en grupos de donde pueden recibir o mandar correos.

       
  16. Hola Josep, necesito que me autoricen que mi servidor de control-M sea relay, para enviar notificaciones externnas e internas de finalización de procesos batch etc, pero tengo el inconveniente que no hacen la configuración ya que el administrador de correo insiste que es necesario una autentificación básica con SPa, NTLM o TLS y estos parámetros no los admite Control-M, que conector se debería ocupar y a nivel de seguridad que opciones se deben habilitar.

     
  17. Hola Buenos días,
    He creado un conector para el envío de mensajes desde una aplicación. El mismo esta configurado para que se autentique y usa el puerto 587.
    El problema que estoy teniendo es que cada tanto los correos no salen y la aplicación recibe el mensaje «Connection reset».
    El servidor de Exchange 2013 esta detrás de un servidor de Antispam Symantec al cual entrega los correos para su envío hacia internet.

     
  18. Buenas Josep.
    Cuando intento crear el nuevo conector con el puerto 25 me dice que ya existe uno y entra en conflicto, evidentemente ya hay un Default Frontend que lleva el puerto 25 asignado que es el que te configura por defecto.
    Como puedo crear dos conectores bajo el mismo puerto?
    Saludos.

     
  19. Hola, necesito tu ayuda, tengo un problema con un servidor de exchange, puedo recibir correos externos pero no puedo enviarlos, no se qu eme hace falta

     
  20. Buenas tardes,
    Quisiera saber si es posible, que Exchange 2010 pueda enviar correos sin para por la autenticación SMTP. Es decir, una aplicación como Siesa que tiene solo los campos de usuario (correo) y contraseña se pueda hacer algo con Exchange para que no pase por la autenticación SMTP y que solo pida el usuario de correo y contraseña. O en el caso de una aplicación como Siesa, podría usar un SMTP independiente o no es posible?

    Muchas gracias.

     
Els comentaris estan tancats.