9. El servicio SMTP
1. Conceptos generales
El servicio SMTP se incluye como componente en IIS por tres razones, fundamentalmente:
- Para permitir a los servidores con IIS actuar como puntos de reenvío de correo por parte de los proveedores de servicios en Internet, como alternativa a Sendmail, la aplicación SMTP estándar en el entorno UNIX/Linux.
- Para que un servidor IIS pueda actuar de búfer e intermediario entre un servidor de correo electrónico corporativo y el servidor de correo del Proveedor de Servicios de Internet. Además de la mayor capacidad de respuesta, se interpone un elemento entre el servidor de correo corporativo e Internet.
- Para permitir a los programadores de páginas ASP enviar correos electrónicos desde sus aplicaciones web.
Así pues, el servicio SMTP está concebido para enviar y redirigir correo electrónico, no para gestionar la recepción de mensajes, una tarea para la que está orientado por ejemplo Microsoft Exchange y en la que intervienen otros protocolos: POP3 e IMAP.
2. El servidor virtual SMTP predeterminado
- Al instalar el servicio SMTP se crea un servidor virtual SMTP predeterminado, con las siguientes características:
- No está restringido a ninguna IP en particular.
- Atiende al puerto TCP 25 (el puerto estándar para los servicios SMTP).
- Tiene asignado el dominio correspondiente al servidor.
- El directorio principal es %systemdrive%\Inetpub\mailroot
3. Configuración
- Puesto que el puerto estándar para el protocolo SMTP es el 25 y que cada servidor virtual SMTP debe tener una dirección IP o un puerto TCP único, no suele existir más de un servidor virtual SMTP a menos que el servidor con IIS tenga asignada más de una dirección IP.
- En el directorio principal de un servidor virtual SMTP se crean los siguientes subdirectorios automáticamente:
- Badmail: los mensajes que no han podido ser entregados ni devueltos con notificación de error en la entrega tras un número configurable de intentos son depositados en este directorio.
- Drop: directorio en el que se depositan todos los mensajes dirigidos a cualquiera de los dominios locales.
- Pickup: directorio en el que esperan los mensajes a ser enviados.
- Queue: si un mensaje en el directorio Pickup no puede ser entregado inmediatamente debido a alguna razón, como por ejemplo que el servidor destinatario está temporalmente inaccesible, el mensaje se traslada a este directorio, desde donde el servicio SMTP intentará enviarlo de nuevo a intervalos regulares.
Los directorios Mailbox, Route y SortTemp son obsoletos procedentes del Microsoft Commercial Internet System (MCIS). IIS 6 no los necesita y se pueden eliminar si se desea.
- General:
- Dirección IP: podemos restringir las peticiones que atiende el servidor por dirección IP.
- Configuración para conexiones entrantes:
- Limitar el número de conexiones: establece un límite para el número de conexiones entrantes simultáneas.
- Tiempo de espera de la conexión: define el número de minutos que el servidor mantiene abierta una conexión inactiva.
- Habilitar registro: Nos permite activar un formato de registro de actividad del servidor.
- Acceso:
- Control de acceso: método de validación para conexiones entrantes:
- Acceso anónimo: no se requiere autenticación. Esto es necesario si queremos recibir mensajes desde cualquier otro servidor SMTP.
- Autenticación básica: se envían usuario y contraseña en texto simple. Aunque por sí sola no es segura, es el método de validación más extendido y se puede dotar de mecanismos de encriptación mediante TSL.
- Autenticación de Windows integrada: permite validarse de forma segura con usuarios del sistema operativo.
- Comunicación segura: permite instalar un certificado para utilizar TSL en las conexiones.
- Control de conexión: permite restringir las conexiones entrantes según la dirección IP.
- Restricciones de retransmisión: establece los criterios para que el origen de una conexión entrante (otro servidor SMTP o un cliente de correo electrónico) pueda utilizar el servidor para enviar mensajes a dominios externos.
La mejor combinación de autenticación para las conexiones entrantes y restricciones de retransmisión de mensajes para un servidor con las funciones habituales es:
- Habilitar el acceso anónimo y la autenticación de Windows integrada para las conexiones entrantes.
- Denegar las retransmisiones de mensajes a todos los ordenadores excepto los autenticados correctamente en el servidor.
Cuando el servidor está configurado de esta manera, esto es lo que ocurre:
- Los usuarios en la red corporativa pueden utilizar Outlook o Outlook Express para conectarse al servidor SMTP y, puesto que pueden validarse utilizando la autenticación de Windows integrada, enviar mensajes a cualquier destinatario.
- Nuestro servidor SMTP admitirá mensajes de cualquier otro servidor SMTP de Internet siempre que él sea el destinatario.
- Los servidores SMTP de Internet no podrán enviar mensajes a otros destinatarios a través de nuestro servidor mientras no se validen adecuadamente, evitando que se utilice nuestro servidor para el envío de correo no deseado.
- Mensajes:
Conexiones entrantes:
- Limitar el tamaño del mensaje: podemos limitar el tamaño máximo permitido para mensajes entrantes (2 MB por defecto).
- Limitar el tamaño de sesión: determina la cantidad total de datos en los mensajes que se admite en una conexión entrante.
Conexiones salientes:
- Limitar el número de mensajes por conexión: si se supera este número para conexiones salientes, el servidor abre conexiones adicionales según sea necesario.
- Limitar el número de destinatarios por mensaje: el límite por defecto es 100, que corresponde al estándar de los servicios de correo electrónico. El servidor SMTP de IIS interpreta este límite como el de destinatarios por mensaje y conexión, de manera que cuando en una misma conexión se envía un mensaje al número límite de usuarios, se abren conexiones adicionales hasta abarcar todos los destinatarios.
Parámetros de administración:
- Enviar copia del informe de no entrega a: la dirección de correo electrónico indicada.
- Directorio de correo con errores: podemos redefinir el valor para este directorio , que por defecto es %systemdrive%\Inetpub\mailroot\Badmail
- Entrega:
- Intervalos: se definen los intervalos de reintento de envío de un mensaje cuyo primer intento ha sido fallido.
- Notificación de retraso: tiempo que se espera antes de enviar una notificación de retraso para tener en cuenta los problemas temporales en la red. Esta notificación sólo será enviada si, transcurrido el tiempo de espera, el mensaje aún no ha podido ser entregado.
- Tiempo de espera de caducidad: tiempo durante el que se continuará intentando enviar el mensaje según el intervalo especificado, tras los 3 primeros reintentos.
- Seguridad saliente: determina los criterios de autenticación del servidor cuando envía mensajes a otros servidores SMTP.
- Conexiones salientes: permite limitar el número de conexiones simultáneas totales y por dominio y determinar un tiempo de espera para las conexiones y un número de puerto TCP de envío.
- Avanzada:
- Número máximo de saltos: número máximo de servidores SMTP aceptados como retransmisores del mensaje antes de alcanzar su destino. Si se supera este número, el mensaje es devuelto con un informe de error de no entrega.
- Dominio de enmascaramiento: reemplaza el dominio en el campo From: con el valor indicado.
- Nombre de dominio completo: se obtiene inicialmente del nombre del servidor, pero puede ser reemplazado –por ejemplo en el caso de un servidor SMTP de apoyo- por el nombre completo en el dominio, que debe ser resoluble vía DNS, ya que es el que se utilizará para responder a los servidores SMTP remotos que tratan de identificar al servidor SMTP receptor de mensajes del dominio.
- Host inteligente: permite especificar la dirección de un servidor SMTP al que se enviará todo el correo saliente, (por ejemplo si consideramos que se tratar de una ruta rápida y fiable).Podemos indicar el nombre del servidor o bien su dirección IP entre corchetes: []. Si empleamos la dirección IP, el servidor no se verá obligado a resolver el nombre del dominio, por lo que obtendremos un mayor rendimiento.
- Realizar consulta de DNS inversa: el servidor verifica que el dominio o la dirección IP del remitente coinciden con la que debería ser. El resultado de la comparación se marca en la cabecera del mensaje. Dado que esta operación se realiza con cada mensaje recibido, repercute en el rendimiento del servidor.
- Enrutamiento LDAP: utilizando un servicio de directorio se puede consultar la dirección de correo de un usuario o un grupo a partir del nombre.
- Seguridad: lista de usuarios y grupos de Windows que pueden actuar como operadores y configurar el servicio SMTP.
- Dominios: se emplean para organizar y configurar la distribución de mensajes. Pueden ser de 3 tipos:
- Local predeterminado: este dominio debe existir.
- Se permite configurar el directorio en el que el servidor deposita el correo entrante
- Habilitar cuota de directorio de descarga: si se activa esta opción, el tamaño de los mensajes depositados en el directorio de correo entrante no podrá superar un tamaño igual a 10 veces el límite del tamaño de mensaje establecido. Si se alcanza este límite, se rechaza el correo entrante indicando un error de buzón de correo lleno.
- Local alias: indica dominios adicionales al predeterminado que el servidor también debe considerar propios a efectos de recepción de mensajes.
- Remoto: dominios gestionados por otros servidores SMTP. La creación de un dominio remoto nos permite establecer una configuración específica para el correo enviado a dicho dominio, prevaleciendo sobre los parámetros fijados a nivel de servidor SMTP.
3. Prueba del servicio SMTP
- Para probar si el servicio SMTP está funcionando correctamente, podemos crear un documento de texto en el directorio Pickup de recogida de mensajes con el contenido siguiente:
From: nombre@dominio.com
To: direccionDestinatario
Subject: prueba SMTP
línea en blanco
Hola, éste es un mensaje de prueba.
4. Cómo se procesan los mensajes
El servicio SMTP se ejecuta en el proceso inetinfo.exe, y monitoriza continuamente el puerto TCP 25 esperando mensajes o conexiones entrantes y el directorio Pickup buscando mensajes salientes.
- Cuando se recibe un mensaje destinado a un usuario en un dominio local del servidor, es depositado en el directorio Drop y la entrega concluye.
- El servidor sólo aceptará mensajes no destinados a un dominio local si tiene habilitada la función de retransmisión de mensajes.
Para enviar un mensaje saliente, se coloca el mensaje en el directorio Pickup –habitualmente mediante algún objeto, como CDOSYS en el caso de ASP-. Cuando el servidor SMTP lo detecta:
- Si el destinatario es local, traslada el mensaje al directorio Drop.
- Si se trata de un destinatario remoto:
- El servidor SMTP realiza una búsqueda DNS del registro MX por el puerto TCP 53 para averiguar la dirección IP del servidor SMTP del dominio remoto correspondiente.
- Establece una conexión por el puerto 25 con el servidor remoto para enviarle el mensaje
- Si la conexión es aceptada, el mensaje es entregado al servidor SMTP remoto.
- Si la conexión es rechazada, se intenta enviar el mensaje junto con un informe de error de no entrega al remitente. De no ser posible, el mensaje se traslada al directorio Badmail.
- Si no se puede establecer la conexión, el mensaje se traslada al directorio Queue y se reintentará el envío según la configuración del servidor. Si se alcanza el tiempo límite, se intenta devolver el mensaje con un informe de error de no entrega al remitente. De no ser posible, el mensaje se traslada al directorio Badmail.
También es posible enviar mensajes a través del servidor SMTP mediante clientes de correo electrónico como Outlook o Eudora, según la configuración del servidor.
Fichero pdf para descargar aquí.