Dentro del mundo Open/Free existen varios paquetes de Software para brindar servicios de Correo Electrónico, todos con sus defensores y detractores, pero lo cierto es que más del 60% de todo el correo de Internet, es transportado por MTAs (Mail Transport Agent) Open/Free, entre ellos, los más conocidos y populares son:
Sendmail
qmail
postfix
Exim
Zmailer
smail
Es raro encontrar reportes de benchmark comparativos entre los servidores, lo cual hace más difícil las Comparaciónes de performance, utilización de recursos, estabilidad, etc. Cada uno de dichos MTAs tienen características funcionales similares, todos pueden manejar cantidades grandes de tráfico de e-mail, pueden interactuar con sistemas de Bases de Datos en varios formatos, manejan las variantes de SMTP1 que existen actualmente, no son trivialmente hackeables, etc.
Cabe destacar que un MTA en sí, no es comparable con alternativas comerciales como Microsoft Exchange o Lotus Notes, ya que estos productos aspiran a abarcar muchas más funcionalidades que solamente la distribución de e-mails.
Los criterios de selección más comúnmente utilizados para decidir la implantación de un MTA son:
Facilidad de administración
Seguridad
Performance
Confiabilidad
Las características de diseño de cada MTA son las que definen que tan bueno es el producto en cada uno de los criterios antes enunciados, pero también se debe de tomar en cuenta que dada la gran cantidad de opiniones diferentes. Algunas características del diseño no se pueden tomar en cuenta a la hora de comparación entre un producto y otro, ya que dichas características pueden favorecer o perjudicar la elección del producto de forma subjetiva, ejemplos de dichas características son:
Tiene un solo archivo de configuración, entonces todo esta en un único lugar
Tiene muchos archivos de configuración, cada uno con un propósito
Sintaxis de comandos mínima y específica
Tiene un poderoso lenguaje de scripting embebido
Existe una gran variedad de software Open/Free para distribución de e-mails, se realizará un breve análisis de los 4 productos más utilizados, para ver el uso de los MTA's nos basamos en resultados de escaneo de servidores SMTP que se corren periódicamente en varios sitios de Internet, el resultado más reciente que encontramos fue de Octubre de 2004:
El escaneo comenzó a principios de octubre [140], se escanearon aproximadamente 18 millones de direcciones IP, de las cuales 275000 aceptaban conexiones en el puerto 25 (SMTP) (no todas correspondían a servidores de mail), luego de filtrar direcciones gubernamentales, del ejercito, etc quedaron 122000 servidores para la identificación.
Para identificar los servidores de correo se utilizaron expresiones regulares de SMTP. Se pudieron identificar cerca de 58000 servidores:
MTA |
Porcentaje |
Cantidad |
sendmail |
35,30% |
20492 |
microsoft |
21,00% |
12172 |
exim |
11,80% |
6836 |
imail |
6,90% |
4008 |
qmail |
6,30% |
3669 |
postfix |
5,50% |
3172 |
Los resultados completos se pueden ver en apéndice 7.8
Como paso previo al relevamiento de los servidores presentaremos los dos formatos de almacenamiento de correo más utilizados por servidores de correo para sistemas tipo Unix, mbox y maildir:
Mbox - Es la forma tradicional de almacenar e-mail en servidores de correo para sistemas tipo UNIX, cada mensaje simplemente es concatenado al final del último y todo es almacenado en un archivo único. Un marcador especial es colocado entre los mensajes y sólo un proceso a la vez puede acceder al archivo mbox en modo lectura/escritura. Cuando alguien necesita actualizar el archivo mbox, el resto debe esperar a que se haga efectivo dicho cambio.
Maildir - El formato Maildir originalmente fue implementado en el servidor de mail Qmail, supuestamente para mejorar los problemas del formato mbox. Los mensajes pueden almacenarse en archivos separados, un mensaje por archivo. No se requiere bloqueo de acceso y varios procesos pueden utilizar los archivos maildirs a la misma vez.
Mbx - Versión modificada del formato del original mbox. La diferencia principal es que cada mensaje en el archivo mbx es precedido por un registro que contiene alguna metadata específica del mensaje. El beneficio que aporta es que en ciertas operaciones que antiguamente requerían que el archivo entero en formato mbox fuera reescrito, ahora pueden ser implementadas actualizando solo la parte del nuevo registro en los archivos mbx.
Es probablemente el servidor SMTP más conocido y de más renombre. En sus orígenes, en los años '80, era encargado de transportar prácticamente el 100% de mensajes de toda la Internet, hacia mediados de los años '90, las encuestas arrojaban un 80% de utilización entre los servidores de SMTP, más del 50% por el año 2000 y actualmente sigue en primer lugar con un estimativo de 35%.
Sendmail [130] es un software que obtuvo su posición de "más utilizado" gracias a que muchas empresas de sistemas tipo UNIX, lo incluían junto con el sistema operativo, incluso empresas como IBM incluían el producto con otros sistemas operativos como ser OS/2 Warp. Dichas empresas tomaban sendmail, lo compilaban, empaquetaban, lo pre-configuraban y lo distribuían con su sistema operativo.
El problema que padece sendmail, y es por ello que su uso esta en constante decrecimiento, es un largo historial de problemas de seguridad ("uno de los puntos de ataque del famoso gusano de Internet de 1984 era una backdoor en el servicio SMTP de Sendmail que habilitaba a ejecutar programas como superusuario"). Muchos alegan que gracias a su diseño monolítico, Sendmail aún tiene problemas graves de seguridad, y que actualmente las mejoras más significativas en la seguridad distribuciones son pre-configuradas con algunos servicios deshabilitados que antes lo estaban. Si bien existen métodos para asegurar a sendmail de ataques foráneos, es una tarea bastante costosa que otros servidores lo implementan en su diseño, facilitando la tarea del administrador.
Otro problema es que es común ver sistemas operativos que vienen con sendmail de una forma muy enganchada con el sistema operativo y con una versión desactualizada, y gracias al primer factor, se hace muy difícil la actualización del producto. Y en general, encontramos en varios reviews que es imprescindible realizar el upgrade de sendmail a la última versión ya que la mayoría de vulnerabilidades se solucionan simplemente con ello.
Otro problema que es asociado con sendmail es que su configuración (mediante archivo de configuración) es extremadamente oscura y requiere conocimientos avanzados del tema. Con este problema de sintaxis no clara y confusa, se pueden obtener resultados no deseados en la configuración con facilidad. La documentación resulta también difícil de entender.
Sin embargo, más allá de todo lo dicho y criticado tenemos que sendmail
Ha sido mejorado de buena forma en la parte de seguridad, performance y capacidades en los años 1999-2001.
La mayoría de las vulnerabilidades son solucionadas vía upgrades.
En instalaciones simples, la configuración por defecto alcanza (o muy poca modificación de la misma) .
Tiene muchos más expertos en el mercado que cualquier otro MTA dada su antigüedad.
Soporta
Dominios Virtuales
Soporte para sesiones encriptadas vía TLS
IPv6
Formato de almacenamiento Mbox
Soporte para LDAP
Nota: Históricamente, Sendmail se distribuía bajo los términos de la licencia BSD, a partir de la versión 8.9 liberada en 1998 (la versión actual a Febrero de 2005 es la 8.13.3), algunos cambios fueron introducidos. Eric Allman, autor de Sendmail, formó la empresa Sendmail Inc. y la liberación de la versión 8.9 del producto bajo dicha nueva empresa trajo cambios en la forma de licenciamiento (Sendmail Licence). Si se utiliza Sendmail o se redistribuye sin cargo (solo se pueden cobrar los costos de la distribución), o si se distribuye en forma de código, el único cambio relevante es el que se debe de dar noticia que "sendmail" es marca registrada de Sendmail, Inc. y se debe incluir copia de la licencia en la distribución del software.
En caso de distribuir sendmail como parte de un producto Comercial o no distribuyendo su código de forma total (incluyendo modificaciones y mejoras propias de quien lo redistribuye), la nueva licencia Sendmail Licence requiere que el proveedor se ponga en contacto con Sendmail, Inc. para conseguir la licencia de redistribución comercial, la cual se le otorga sin costo al distribuidor pero incluye otros términos para proteger entidades comerciales de que se estén redistribuyendo sus productos por otras entidades comerciales.
La empresa Sendmail, Inc. también requerirá la información de cuantas copias de distribuyen (lo cual para Eric Allman es crucial para "ganar la batalla al software propietario ya que lo considera una amenaza para Internet").
Postfix [133] (licenciado bajo la IBM Public License) fue escrito por un especialista en seguridad, Wietse Venema, y comenzó como una alternativa a Sendmail. Los objetivos de Postix fueron el ser rápido, de fácil administración y seguro, pero a la vez ser lo suficientemente compatible con Sendmail pensando en los administradores y usuarios de este último. Postfix es distribuido como servidor de correo predeterminado en las distribuciones de Mandrake, SuSE, RedHat y Fedora Core.
Postfix consiste de varios programas aunque esta modularidad no se ve en la configuración, ya que consta de 2 archivos grandes (master.cf y main.cf) y si bien dicho software fue diseñado para ser más fácil de configurar que Sendmail, el ser más fácil es un término relativo ya que el comportamiento de un MTA robusto es intrínsecamente complejo. Postfix consta de muchas opciones de configuración, sin embargo los valores por defecto son en general una buena opción y solamente algunas pocas opciones deben ser modificadas para un sistema dado. También las opciones son más claras que aquellas encontradas en Sendmail.
A diferencia de Sendmail, los procesos de Postfix corren en el servidor con privilegios restringidos, solo los necesarios para realizar su tarea, y dichos procesos son aislados unos de otros haciendo que el trabajo de Postfix se divida en rutinas pequeñas y desconectadas.
En cuanto a performance y confiabilidad, hay reportes que hablan de pruebas hechas a Postfix y concluyendo que es capaz de entregar cerca de un millón de mensajes por día en un equipo con características de Desktop sin mayores problemas.
Para facilitar la migración de Sendmail a Postfix, Venema intencionalmente diseñó su producto como un reemplazo directo de sendmail. Esto es, Postfix puede utilizar la misma infraestructura (colas de mail, localización de directorios) que una instalación estándar de sendmail.
Soporta :
Entrega a casillas de mail con formato Maildir y mbox.
Enmascaramiento de usuario y host
Dominios virtuales
SMTP AUTH (utiliza biblioteca Cyrus SASL)
Soporte para LDAP, MySQL, Berkley DB, PostrgeSQL
IPv6
Cuota de usuario
Soporte para sesiones encriptadas vía TLS
Consultas a Base de Datos de listas negras y blancas de clientes SMTP.
Control por host de SMTP Relay4
ExIM (Experimental Internet Mailer) [131] deriva de otro MTA Open/Free llamado smail 3, el cual había sido también creado originalmente como una alternativa mejor a Sendmail. Exim también es un reemplazo directo (drop-in) de Endilgamos. Exim está licenciado bajo los términos de la GPL.
ExIM se comporta y es similar a cualquier otro programa daemon de UNIX, con un componente monolítico, un solo archivo de configuración y un número pequeño de archivos de log. Si bien en la configuración por defecto esto es así, la flexibilidad del producto permite muchas más alternativas, por ejemplo: en vez de que un demonio exim atienda las conexiones en el puerto SMTP, se puede configurar para que inetd escuche en el puerto SMTP y ejecute un proceso exim por cada una de las conexiones que le llegan.
A diferencia de sendmail no tiene un mal historial de problemas de seguridad, se encontraron tanto reportes de que soporta sin problemas grandes volúmenes de correo como reportes que dicen que no escala de manera adecuada frente a ese tipo de situaciones.
La configuración de ExIM apunta a ser sencilla y entendible (sobreponiendo uno de los problemas más famosos de Sendmail). Está diseñado para evitar pérdida de mensajes aún si el hardware servidor falla. Soporta integración con servidores de LDAP y DBMS.
La documentación de ExIM es la más completa y abundante de todos los Servidores de correo Open/Free. La “ExIM Specification” del sitio oficial (exim.org) es altamente detallada, bien presentada y extensiva. Cubre tanto el diseño del sistema a alto-nivel como las opciones y configuraciones de forma individual. Las F.A.Q. de ExIM también cubren un amplio espectro de temas. En ciertos aspectos la documentación tiende a ser muy técnica y de difícil entendimiento.
Soporta :
Formatos Mbox, Maildir y Mbx
Enmascaramiento de usuario y host
Dominios virtuales
SMTP AUTH (métodos Login/Plain/CRAM-MD5 nativos)
Sesiones encriptadas vía TLS
LDAP y MySQL
Ipv6
Cuota de usuario
Control por host de SMTP Relay
Desarrollado por Dan Bernstein, un profesor de matemáticas ahora en la University of Illinois en Chicago y experto en seguridad. Los objetivos de Qmail [132] fueron los mismos que los de Postfix, ser un sustituto seguro, performante, y confiable de Sendmail. Otro dato interesante acerca de Qmail es que se le atribuye el formato de almacenamiento Maildir. Si bien Qmail resulta una alternativa viable y está contemplado en nuestro estudio, nos encontramos con dos grandes factores en contra:
Estrictamente no es Software Libre de Código Abierto - Dan Bernstein prohíbe la distribución de versiones modificadas de Qmail, y pide que cualquier cambio que se realice se le debe de enviar para escrutarlo para ser incorporado en futuras versiones de qmail.
Continuidad del proyecto - El primer lanzamiento público de Qmail, versión beta 0.70, tuvo lugar el 24 de enero de 1996. La primera versión gamma, 0.90, se lanzó el 1 de agosto de 1996. La versión 1.0, el primer lanzamiento general, se anunció el 20 de febrero de 1997. La versión actual, 1.03, se lanzó el 15 de Junio de 1998. El creador de Qmail no ha anunciado el lanzamiento de una nueva versión y gracias a la restricción impuesta por el mismo, se han creado versiones más recientes pero en forma de anexos a la versión 1.03 en la cual se deja inmodificado dicho paquete y le agregan funcionalidades como add-ons.
De todas formas Qqmail puede utilizarse sin restricciones y cuenta con características interesantes a tener en cuenta:
Es modular - así como Postfix, qmail está compuesto de un set de programas, cada uno con un trabajo específico y las interfaces entre cada una de las partes son simples y bien documentadas. Esto hace a qmail flexible, permitiendo realizar substituciones propias de cada una de los componentes si así se requiere.
A diferencia de Postfix, la configuración también es modular y cada archivo de configuración tiene un único trabajo (ej: el nombre de los dominios locales están en un solo archivo llamado 'locals').
Muchas tareas de configuración pueden automatizarse fácilmente utilizando scripts (que manipulen el archivo simplemente con los comandos echo y cat)
Es seguro - fue diseñado para ser seguro, no solo el servidor no confía del mundo exterior sino que los distintos módulos del mismo servidor no confían entre ellos. Partes diferentes del sistema corren con diferentes usuarios no privilegiados (“qmaild”, “qmailr”, “qmailq”, etc.).
Provee mecanismos para correr en sistemas de pocos recursos - qmail puede configurarse como “mini-qmail”, dicho mecanismo elimina procesos propios del qmail para consumir menos recursos, dicha configuración de mini-qmail utiliza un protocolo llamado QMTP (Quick Mail Transfer Protocol), en lugar de utilizar el estándar SMTP, dicho protocolo fue diseñado para servidores de conexiones intermitentes o discadas. Otra característica para ahorro de recursos es que minimiza el uso de un DNS. El autor de Qmail asegura que en tests realizados en un PC Pentium con BSD/OS, Qmail puede distribuir 200000 mensajes por día y en el envío qmail puede enviar simultáneamente hasta 20 mensajes.
Provee los métodos para remplazar de forma fácil a Sendmail - si bien el reemplazo de Sendmail no es tan directo como en Postfix o Exim, Qmail provee un componente para que sea linkeado como el comando sendmail y también provee de instrucciones paso a paso para realizar el upgrade desde sendmail y describe las mejoras visibles.
Soporta
Entrega en casillas de formato Maildir y Mbox
Enmascaramiento de usuarios y hostnames
Usuarios virtuales
Dominios virtuales
SMTP AUTH ( métodos Login/Plain/CRAM-MD5)
Sesiones encriptadas vía TLS
LDAP y MySQL
Ipv6
Cuota de usuario
Consultas a Base de Datos de listas negras y blancas de clientes SMTP.
Control por host de SMTP Relay
Mucho de las características de qmail (SMTP AUTH, TLS, Ipv6, cuota de usuario, LDAP y MySQL) son parches o addons de usuarios no están en la implementación original de Qmail.
Actualmente los servicios de correo electrónico se ven constantemente expuestos a problemas como virus, gusanos o troyanos en forma de archivos adjuntos dentro de los mensajes de correo electrónica o SPAM. Si bien cada uno los servidores de correo electrónico relevados cuentan con mecanismos propios de filtrado de contenido existen varias alternativas de implementación más seguras y paquetes específicos de filtrado de contenido en el mundo Open/Free. Algunos de ellos son: Blackmail (Filtro antiSpam), SpamAssassin (Filtro antiSpam), QmailScanner (interfaz de escaneo de contenido de mail mediante algún tipo de antivirus que puede ser Comercial o Open/Free), JunkMail (filtro AntiSpam), AMaViS (probablemente el paquete Open/Free que realiza de interfaz entre servidores de correo y programas de chequeo de contenido más popular y completo).
Amavisd-new [134] es una interfaz de alta confiabilidad y performance entre un servidor de correo y uno o más programas de chequeo de contenido: escaneo de Virus o filtros de Spam. Está escrito en Perl, lo que lo hace altamente portable y mantenible. Se comunica con los servidores de correo vía ESMTP5, SMTP o LMTP6. La implementación es del lado del servidor central de correo y aunque se puede implementar a nivel de los clientes, existen soluciones más apropiadas para ese fin.
Amavisd-new se origina de amavisd (-snapshot) (que es la versión de Amavis-perl que trabaja como daemon) y a través de tres años de desarrollo se volvió un producto separado que difícilmente tenga que ver con su original. Comparado con sus predecesores, Amavisd-new es más performante, contiene más características, es compatible con estándares, incluye soporte opcional de detección de spam así como escaneo de virus opcional haciéndolo más flexible.
Características más destacables
Soporta interfaces con Sendmail, Postfix, ExIM y Qmail tanto en una implementación de único servidor de correo como implementaciones de servidores duales (la implementación de dual server en servidores de correo es muy popular y segura; en la misma uno de los servidores se encarga de recibir los mensajes del exterior y los encola, luego AmaViS los decola y escanea para luego, dependiendo del resultado del escaneo, encolarlos en el servidor interno, al cual le llegan los mensajes ya escaneados)
El filtrado puede especificarse por usuarios o por grupo de usuarios así como para todo el sistema
Opcionalmente puede decodificar/descomprimir los siguientes formatos: MIME, uuencode, xxencode, BinHex, compress, gzip, bzip, bzip2, zip, freeze, lzop, tar, cpio, rpm, rar, arc, arj, zoo, lha(lzh), tnef, cab.
Incluye soporte para 38 escáneres de Virus comerciales
Soporte para más de un AntiVirus a la vez
Soporte para antivirus de línea de comando, antivirus en formato daemon(e.j. clamd, Sophie, Trophie, DrWebD, FRISK F-Prot) y AntiVirus accesibles vía módulos Perl (SAVI-Perl, Mail::ClamAV)
Se pueden especificar recipientes para no realizar chequeo de virus
Se pueden especificar recipientes que desean recibir correo con Virus (con alertas dentro del mail)
Manejo flexible de opciones AntiSpam se pueden definir reglas por recipiente,por usuario, por grupo de usuarios, opciones de no chequeo de spam, dejar pasar correo Spam con avisos de alerta, rechazar, eliminar directamente o redirigir correo spam, contiene capacidad estadísticas para poder organizar listas (blacklists y whitelists) de acuerdo a las especificaciones de cada usuario, etc.
Contiene incorporado el módulo Perl Mail::SpamAssasin
Tenemos una cantidad importante de soluciones Open/Free para servicios de correo electrónico existentes a la fecha (año 2005), cada una de ellas cuenta con un grado de madurez, seguridad, estabilidad y performance más que suficientes para implementarse en un entorno empresarial y de hecho más del 60 % del correo de Internet viaja a través de Software Open/Free.
Como vimos no solo contamos con la existencia de servidores de correo sino también con paquetes Open/Free complementarios para realizar filtrado de contenido entre otros.
Gracias a la variedad de paquetes de software relacionado a los servicios de Correo Electrónico, tenemos una gran flexibilidad de implementación de soluciones dependiendo los requerimientos y la infraestructura de la empresa, desde soluciones simples y de bajos requerimientos de hardware hasta soluciones de alta seguridad de sistemas duales con sistemas de escaneo de contenido.
1SMTP (Simple Mail Transport Protocol RFC 2821) Estándar definido en 1982 (RFC 821) y redefinido en 2001 para envío de correo electrónico
2SMTP AUTH es una extensión de SMTP donde un cliente puede indicar un mecanismo de autenticación, realizar un intercambio en algún protocolo de autenticación y opcionalmente negociar una capa de seguridad para futuras interacciones con el protocolo,
3Biblioteca licenciada BSD, implementa Simple Authentication and Security Layer (RFC2222) y varios mecanismos de autenticación como ser ANONYMOUS, CRAM-MD5, DIGEST-MD5, EXTERNAL, GSSAPI (MIT Kerberos 5, Heimdal Kerberos 5 or CyberSafe), KERBEROS_V4, LOGIN, NTLM (requiere OpenSSL libcrypto), PLAIN, etc.
4Relaying o retransmición: sucede cuando un MTA acepta un mensaje por SMTP que aparentemente no es para una dirección local, ni proviene de un remitente local. En los días anteriores al envío masivo de correo no solicitado (SPAM), era común que los MTA se configuraran para el reenvío abierto (open relay). Eran servidores promiscuos, que aceptaban correo de cualquiera, hacia cualquiera. La mayor parte de los MTA de hoy día están configurados para desactivar completamente el relay, o para permitir que sólo ciertos usuarios de confianza, o sistemas de confianza, utilicen el MTA como medio de reenvio.
5ESMTP (Enhanced Simple Mail Transfer Protocol) extensión de SMTP que incluye mejoras de seguridad, autenticación, ahorro de ancho de banda, etc.
6LMTP (Local Mail Transfer Protocol) Alternativa a SMTP para ciertas circunstancias donde se requiera que el servidor no administre las colas de entrega de mensajes (en SMTP está especificado que el servidor debe administrar la cola de entrega)
Estudio del Open/Free (GNU/Linux) como plataforma de servicios de red en entornos empresariales
Daniel Caraballo - Mario Madera - Marcelo Odin
Tutor: Ariel Sabiguero Yawelak
2004 - 2005.