Actualizado el 21 de Marzo del 2018 (Publicado el 12 de Enero del 2018)
838 visualizaciones desde el 12 de Enero del 2018
1,1 MB
34 paginas
Capítulo 7
El agente de transferencia de
correo qmail
Introducción a los MTA
Características
Funcionamiento
Instalación y configuración
Webmail
Capítulo 7 El agente de transferencia de correo qmail
Capítulo 7 El agente de transferencia de correo qmail
"La resistencia de una cadena la determina el eslabón más débil".
Un sistema seguro, como el que se está configurando en este proyecto, no
puede flaquear por ningún lado. Por ello vamos a usar en él qmail como
MTA.
Su facilidad de instalación y configuración harán que, en muy poco
tiempo, podamos tener funcionando el correo de un gran número de
personas.
Vamos a ayudar a su administración, junto a la del sistema en general,
introduciendo las cuentas de los usuarios en el directorio OpenLDAP,
además de que se autentiquen contra él.
207
Integración de los servicios de autenticación en un directorio OpenLDAP
7.1 Introducción a qmail
El correo electrónico se ha convertido en una forma de comunicación
muy usada y a la vez muy necesaria para la empresa. Hoy en día es raro
encontrar una organización que no ofrezca una cuenta de correo a sus
empleados.
Para gestionar este correo existe un software específico conocido como
MTA (agente de transferencia de correo). Entre los MTA más conocidos
figuran Sendmail, Postfix o qmail.
Hasta hace relativamente pocos años Sendmail era el MTA de Unix, sin
discusión. Fue el primero y por ello se había usado desde siempre. Debido a
que fue creado en una época en la que la memoria era un bien escaso, no
dispone de una fácil configuración y gestión.
Al principio (y cuando hablamos de principio nos referimos a la década
de los 80) primaba el espacio. No importaba demasiado la claridad ni la
facilidad de la sintaxis. Sendmail debía funcionar con las reducidas
prestaciones de las máquinas de entonces. Además tantos años en
máquinas en producción han hecho que Sendmail esté muy parcheado.
Cada agujero de seguridad que surgía se solucionaba mediante un parche.
Cuando Sendmail fue diseñado, Internet era un lugar mucho menos
hostil de lo que es ahora. No existía la necesidad de una seguridad alta. No
se tuvo en cuenta, por tanto, en el diseño ni en la codificación.
Como afirman muchos autores, no se puede conseguir una seguridad
verdadera sino se rediseña el sistema, algo que no se ha hecho (y
probablemente no se haga) con Sendmail.
208
Capítulo 7 El agente de transferencia de correo qmail
Como alternativa a Sendmail surgen distintos MTAs: Postfix, exim o
qmail. La oferta es variada. Cada cual tiene sus pros y sus contras, aunque
en uno de los aspectos más importantes, la seguridad, hay uno que
sobresale. Ningún fallo, en cuanto a seguridad se refiere, desde 1998 (fecha
de creación). Como anécdota podemos señalar que el creador de qmail, Dan
Bernstein, ofreció en su día una recompensa para todo aquel que encontrara
un agujero de seguridad. El premio sigue estando desierto.
209
Integración de los servicios de autenticación en un directorio OpenLDAP
7.2 Características de qmail
qmail como agente de transferencia de correo que es, proporciona entrega
y retransmisión de correo local y remoto. Podemos enumerar algunas de sus
principales características.
7.2.1 Características principales
– Rendimiento. qmail puede realizar entrega de correo en paralelo. De hecho
es capaz de entregar hasta 20 mensajes simultáneamente. Este es además
su valor por defecto.
– Fiabilidad. Una vez que qmail acepta un mensaje garantiza que no se
perderá. Además soporta un nuevo formato de buzón de correo que
funciona bien incluso sobre NFS sin bloqueo.
– Simplicidad. qmail es más pequeño que cualquier otro MTA de
características equivalentes. Es fácil y rápido de instalar ya que no
necesita que se tomen muchas decisiones al principio.
– Seguridad. Ya hemos hablado de ella en qmail. Es un factor primordial y
como tal se le confiere tanta importancia como merece. Se consigue
básicamente mediante una separación muy clara entre dirección, ficheros
y programas. Se minimiza el código que debe ejecutarse bajo permiso de
root y se controla minuciosamente.
7.2.2 Otras características
– Construcción de mensajes. Se adecua a las RFC 822 y RFC 1123.
Compatibilidad por tanto con los agentes de usuario actuales.
210
Capítulo 7 El agente de transferencia de correo qmail
– Soporte completo para grupos de direcciones. Presenta comandos de tipo
Sendmail que permite mantener la compatibilidad con los agentes de
usuario actuales.
– Servicio SMTP y POP3 de acuerdo con la RFC 821 y RFC 1939,
respectivamente.
– Gestión de cola
– Enrutamiento por dominio
– Entrega locales
– Retransmisión y listas de correo
211
Integración de los servicios de autenticación en un directorio OpenLDAP
7.3 Funcionamiento y uso de qmail
No hace falta entender cómo funciona qmail para instalarlo o usarlo. Sin
embargo, el conocimiento de su funcionamiento va a permitirnos llegar a
dominar qmail y poder sacarle el mayor partido.
Afortunadamente, el diseño simple y modular de qmail va a convertir en
fácil la dura tarea de comprender un sistema tan complejo como un MTA.
Una división posible de los módulos de qmail consiste en separarlos en
dos grupos. Aquellos que aceptan nuevos mensajes y los colocan en la cola,
y los que toman los mensajes de la cola y los entregan. Esto es, estamos
separando en dos partes: recepción y entrega.
La separación es completa. Cualquiera de estas dos funciones puede
trabajar con la otra apagada. Veamos a continuación la organización a un
alto nivel conceptual de qmail.
Figura 7.1 Esquema general qmail
7.3.1 Conceptos de recepción y entrega
7.3.1.1 Recepción
Los mensajes llegan a la cola por dos rutas principalmente.
Inyección local: usando qmailinject o sendmail
212
Inyección desde red: usando qmailsmtpd, qmailqmqpd o qmailqmtpd.
Capítulo 7 El agente de transferencia de correo qmail
Ambas rutas usan el módulo qmailqueue para inyectar los mensajes en
la cola propiamente dicha. La siguiente figura muestra la organización de la
función de recepción.
Figura 7.2 Recepción de mensajes.
7.3.1.2 Entrega
Los mensajes se entregan desde la cola siguiendo dos rutas:
entrega local: usando para ello qmaillocal, y,
entrega remota: usando qmailremote.
Ambas entregas se gestionan por qmailsend a través de qmaillspawn y
qmailrspawn, respectivamente.
Figura 7.3 Entrega de mensajes
213
Integración de los servicios de autenticación en un directorio OpenLDAP
7.3.2 Módulos
7.3.2.1 Módulos de recepción
Sendmail
El comando Sendmail prácticamente no es más que un intermediario de
qmailinject. Acepta muchos de los argumentos y opciones de Sendmail, los
traduce a los equivalentes en qmailinject, ignora las opciones irrelevantes y
finalmente ejecuta qmailinject.
qmail-inject
La principal tarea de qmailinject es la de asegurar que las cabeceras de
los mensajes cumplen con la RFC 2822, antes de pasar a dichos mensajes
hacia qmailqueue. Parte de su trabajo comprende:
Comprobar direcciones. Para todas las direcciones que aparecen en los
campos From, To, Cc y demás, qmailinject asegura que están en formato
usuario@FQDN.
– Si una dirección consiste en sólo la parte de usuario, añade
@defaulthost. Con defaulthost nos referimos al fichero del mismo
nombre que se encuentra en /var/qmail/control.
– Si una dirección consiste en sólo usuario@"nombre de máquina", añade
a esta cadena .defaultdomain. Defaultdomain es otro de los ficheros de
configuración que se encuentran en el directorio control.
– Si una dirección aparece como usuario@"nombre de máquina"+, qmail
inject reemplazaría el signo + por .plusdomain, otro de los ficheros del
directorio control.
comprobar destinatarios. Si no se especifican destinatarios por línea de
comandos, qmailinject los busca en los campos To, Cc, Bcc, ApparentlyTo,
ResentTo, ResentCc y ResentBcc. Por supuesto, todos los cambos Bcc y
ResentBcc se eliminan de las cabeceras.
214
Capítulo 7 El agente de transferencia de correo qmail
El cumplimiento de la RFC 2822 requiere que todos los mensajes tengan
un campo To o Cc. qmailinject añade, si es necesario, un campo que
contiene lo siguiente: Cc: recipient list not shown:; que es un grupo de
direcciones vacío.
campos requeridos. qmailinject añade los siguientes campos, sino los
encuentra.
– From: nombre del usuario que llamó a qmailinject.
– Date: hora actual GMT.
– Messageid. En realidad este campo no debe aparecer necesariamente,
pero es muy útil para seguirle el rastro a los mensajes. El valor de este
campo es <timestamp.pid.qmail@FQDN>. El FQDN se suele construir en
este caso mediante los archivos de configuración defaulthost y
defaultdomain.
otras características. qmailinject también realiza lo siguiente:
– Las direcciones que aparecen listadas en los campos de la cabecera
deben estar separadas por comas. Si qmailinject encuentra que están
separadas por espacios, inserta automáticamente comas entre ellas. Por
ejemplo To: jose esperanza, será reescrito como To: jose, esperanza.
– Los campos Returnpath y Contentlength se eliminan.
qmail-smtpd
Los mensajes recibidos remotamente llegan a través de tres posibles
módulos
Comentarios de: Capítulo 7 - El agente de transferencia de correo qmail (0)
No hay comentarios