# Exim

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 (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

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

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

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

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

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

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

A lo largo de su historia el software ha presentado una serie de incidencias, de las cuales las más importantes han sido las siguientes:
* El 6 de marzo de 2018 se descubrió una vulnerabilidad basada en error por un paso que colocó en riesgo a más de medio millón de servidores web.