Exim

De Wikipedia, la enciclopedia libre
Exim
Parte de servidor de correo electrónico
Información general
Tipo de programa Agente de Transporte de Correo (MTA)
Desarrollador Universidad de Cambridge y otros
Lanzamiento inicial 1995
Licencia GNU GPL
Información técnica
Programado en C
Versiones
Última versión estable 4.96.2 (info) ( 15 de octubre de 2023 (5 meses y 13 días))
Archivos legibles
Maildir
Enlaces

Exim (EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent, usualmente MTA) desarrollado por la Universidad de Cambridge y puede ser utilizado en la mayoría de los sistemas Unix[1]​ (entre ellos GNU/Linux). Si bien puede compilarse en sistemas operativos Windows, se recomienda que sea utilizado en producción sobre sistemas operativos de la familia Unix.

Se distribuye sin costo bajo la licencia GNU GPL por lo que es, además, software libre.

Tiene una gran flexibilidad en los caminos que pueden seguir los mensajes según su origen y por presentar funcionalidades para control de correo basura, listas de bloqueo basados en DNS (DNSBL), virus, control de relay, usuarios y dominios virtuales y otros, que se configuran y mantienen en forma más o menos sencilla. El proyecto cuenta con buena documentación, ejemplos y recetas claras de “cómo hacer” determinadas tareas.

En términos generales se destaca que no existen situaciones para las que Exim sea una opción incorrecta y en muchas situaciones se desempeña como la mejor opción.

Exim es el MTA por defecto en las distribuciones Debian GNU/Linux.

Historia[editar]

El proyecto comenzó en el año 1995 y su objetivo principal era crear un MTA para ser usado en la universidad. Fue creado con base en el código fuente de Smail 3 (de Ron Karr). Sin embargo desde el comienzo, el sistema fue utilizado por otros organismos e instituciones que fueron accediendo al producto por distribución personal (boca en boca, mano en mano) ya que las primeras versiones nunca fueron anunciadas.

La versión 4 fue lanzada el 4 de febrero de 2002 y trajo cambios importantes respecto a la versión 3, destacándose las políticas de control de correo entrante denominadas listas de control de acceso o ACL (Access Control Lists en inglés).

Desarrollo[editar]

El modelo de desarrollo es bastante particular y presenta diferencias notables con otros proyectos del mundo de software libre (pero no se diferencia demasiado de la historia de creación de otros MTA). Su desarrollador principal es Philip Hazel, que ha contado con ayuda de otros desarrolladores pero se ha encargado personalmente de implementar los cambios aportados por otros.

Desde hace algún tiempo se está tratando de cambiar el modelo de desarrollo tendiendo hacia la descentralización. De esta manera, se implementó a partir de la versión 4.50 un repositorio CVS (todavía sin acceso anónimo o con autenticación). Se prevé que se implemente a corto plazo el pasaje de CVS a Subversion. El proyecto no contaba con un sistema de seguimiento de fallos pero su implementación fue necesaria con la conversión del modelo de desarrollo (varios desarrolladores modificando el código fuente). Se cuenta con historias de seguimiento de fallo desde marzo del 2005.

El sistema de testeo de nuevas versiones es complejo y sofisticado pero no es portable, por lo que se está trabajando para que sea replicable y más genérico.

Estructuras organizativas/asociativas o de decisión[editar]

En términos generales la mayoría de los proyectos importantes de software libre poseen estructuras organizativas complejas para la toma de decisiones (véase por ejemplo el Proyecto Debian GNU/Linux). En este caso particular se trata de un proyecto con una fuerte centralización por parte del creador del software, el cual sigue y colabora de cerca con la elaboración del producto, siendo el responsable de cambios y pruebas. De esta manera se estima, con base en la información disponible en las listas públicas y al funcionamiento de otros proyectos de similares características (no se cuenta con más detalles), que las decisiones se discuten por un grupo reducido de personas en las listas de correo disponibles para ser luego implementadas.

Industria relacionada[editar]

Existen otros programas que son utilizados en forma más o menos frecuente y cumplen funciones similares a Exim como: qmail, postfix, sendmail, etc..

El correo electrónico es un elemento vital para la comunicación de usuarios en Internet. Sin embargo en los últimos años se han generado problemas de seguridad con ingreso de virus y otros programas, así como la proliferación de correo basura. De esta manera, en la actualidad, no basta con la selección y funcionamiento correcto de un MTA. Resultan indispensables además, las posibilidades que presentan (varios de los MTA disponibles) para el trabajo conjunto con programas de detección (y limpieza) de virus y correo basura, sobre el mismo servicio, previo a la liberación del correo al usuario.

Exim es utilizado usualmente en conjunto con Clamav (antivirus liberado bajo la licencia GPL) SpamAssassin (proyecto de la Apache Software Foundation para el control de correo basura, liberado bajo licencia Apache versión 2) y control de bloqueo mediante listas dinámicas basadas en DNS.

Estado actual[editar]

Se indica por parte de miembros del proyecto que se está tratando de pasar de un proyecto de la universidad a un proyecto de la comunidad. Ese proceso involucra la construcción de estructuras y herramientas adecuadas (repositorio, seguimiento de fallos, listas de discusión y demás).

Radiografía[editar]

En cuanto al estado del proyecto, las cifras que se muestran a continuación corresponden a la última versión disponible a la fecha. Los conteos y estimaciones fueron realizados con el software SLOCCount y resulta conveniente verlo como una aproximación (recordar que se está estimando). La versión 4.63 de Exim cuenta con 88.179 líneas de código fuente. Más del 98% del código fuente de la distribución está escrito en lenguaje C. Según el modelo COCOMO se requeriría de un esfuerzo de 22 persona-años para producir ese software. Por otro lado, el modelo utilizado por SLOCCount indica que una empresa que quisiera desarrollar el software equivalente a Exim, tardaría alrededor de 1,74 años, con un grupo de casi 13 desarrolladores trabajando a tiempo completo.

Se puede deducir entonces, según el costo año de un desarrollador en Estados Unidos (56.286 U$S/año) y teniendo en cuenta los costos fijos de la empresa, que el desarrollo de Exim estaría próximo a los U$S 3.000.000.

Estado actual de Exim
Página web http://www.exim.org/
Inicio del proyecto 1995
Versión actual 4.67
Líneas de código fuente 88.179
Esfuerzo estimado de desarrollo
(persona-año o persona-mes)
22,06 o 264,76
Estimación de tiempo (años) 1,74
Estimación del n.º de desarrolladores en paralelo 12,74
Estimación de coste (U$S) 2.980.403

Incidencias[editar]

A lo largo de su historia el software ha presentado una serie de incidencias,[2]​ de las cuales las más importantes han sido las siguientes:

Referencias[editar]

  1. «Exim Internet Mailer». www.exim.org. Consultado el 19 de agosto de 2022. 
  2. Real Academia Española. «incidencia : Acontecimiento que sobreviene en el curso de un asunto o negocio y tiene con él alguna conexión.». Diccionario de la lengua española (23.ª edición). Consultado el 23 de julio de 2018. 
  3. Gurubaran (7 de marzo de 2018). «Exim Vulnerability Puts More than 500,000 Email Servers at High Risk» (html). GB Hackers (en inglés). Archivado desde el original el 26 de julio de 2018. Consultado el 26 de julio de 2018. «The Vulnerability resides with b64decode function in the SMTP listener. When the provided input is not a valid base64 string it consumes additional bytes while decoding which causes the one-byte heap overflow. » 
  4. «Exim Off-by-one RCE: Exploiting CVE-2018-6789 with Fully Mitigations Bypassing» (html). Devco (en inglés). 6 de marzo de 2018. Archivado desde el original el 23 de julio de 2018. Consultado el 26 de julio de 2018. «As shown above, exim allocates a buffer of 3*(len/4)+1 bytes to store decoded base64 data. However, when the input is not a valid base64 string and the length is 4n+3, exim allocates 3n+1 but consumes 3n+2 bytes while decoding. This causes one byte heap overflow (aka off-by-one). Generally, this bug is harmless because the memory overwritten is usually unused. However, this byte overwrites some critical data when the string fits some specific length. In addition, this byte is controllable, which makes exploitation more feasible. Base64 decoding is such a fundamental function and therefore this bug can be triggered easily, causing remote code execution. »