Ir a contenido principal

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

La primera vez que se registra en developerWorks, se crea un perfil para usted. Información sobre su perfil (nombre, país/región y compañia) estará disponible al público y acompañará cualquiera de sus publicaciones. Puede actualizar su cuenta IBM en cualquier momento.

Toda la información enviada es segura.

  • Cerrar [x]

La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

Toda la información enviada es segura.

  • Cerrar [x]

Preparación para el examen de LPI: Correo y noticias

Tema 206 de Intermediate Level Administration (LPIC-2); tema 206

David Mertz, Developer, Gnosis Software
David Mertz
David Mertz es Turing completo, pero probablemente no apruebe la Prueba de Turing. Para conocer más acerca de su vida, consulte su página Web personal. David escribe las columnas developerWorks Charming Python y XML Matters desde el año 2000. Consulte su libro Text Processing in Python [Procesamiento de texto en Python].

Resumen:  Éste es el segundo de siete tutoriales que se ocupan de la administración de redes de nivel intermedio en Linux®. En este tutorial, David Mertz discute cómo usar Linux como un servidor de correo y como un servidor de noticias. En términos generales, el envío y la recepción de correo electrónico son las principales funciones de Internet. Además, Linux probablemente sea la mejor plataforma para ejecutar servicios de correo electrónico. Este tutorial se ocupa del transporte de correo, el filtrado de correo local y el software de actualización de listas de correo. Además, también se discute el software de servidor para el protocolo NNTP.

Ver más contenido de esta serie

Fecha:  29-07-2011
Nivel:  Intermediaria

Actividad:  7299 vistas

Uso de Sendmail

¿Qué hace Sendmail?

Sendmail es un Agente de Transporte de Correo (MTA, por sus siglas en inglés). Se encarga de rutear, modificar y entregar mensajes de correo entre sistemas de correo heterogéneos. Con una historia relativamente paralela a la del software de listas de correo, Sendmail tiene una versión "beta permanente" denominada Sendmail X, que tiene la función de actualizar / reemplazar la versión 8.x estable de Sendmail. Sin embargo, de la misma forma en la que Mailman ha reemplazado a Majordomo, varios MTAs han eclipsado parcialmente a Sendmail. Este MTA nuevo usa Postfix principalmente, aunque Qmail y Exim también se usan bastante. Sin embargo, Sendmail sigue siendo, al menos por un margen delgado, el MTA que más se usa en los sistemas Linux. Desde el 16 de septiembre de 2005, la última versión estable de Sendmail es 8.13.5.

Hasta ahora, ya se escribieron varios libros sobre Sendmail. Vea la sección Recursos para acceder a una lista de todos los libros disponibles. El más abarcativo de ellos es Sendmail, Third Edition [Sendmail - Tercera edición] (O'Reilly; 2002) de Bryan Costales y Eric Allman. En sus 1.232 páginas, este libro se ocupa de muchos más temas que los que este tutorial puede llegar a mencionar.

Si bien Sendmail soporta en principio varios protocolos de transporte de correo, como por ejemplo UUCP, el que más se usa es el Protocolo de Transporte de Correo Simple (SMTP, por su sigla en inglés), que aquí incluye el SMTP Extendido (ESMTP) para cuerpos de mensaje codificados MIME mejorados. En realidad, el correo que no se reenvía a otros hosts SMTP se entrega al sistema local mediante la colocación de mensajes en archivos locales. Los Agentes de Usuario de Correo (MUA, por sus siglas en inglés) locales leen los mensajes que Sendmail (u otro MTA) coloca en archivos locales (y, generalmente, también busca correo usando POP3 o IMAP), pero suele solicitarle a Sendmail que se encargue de entregar los mensajes salientes. Algunos MUAs, sin embargo, se comunican directamente con los servidores SMTP, como por ejemplo las instancias de Sendmail locales o remotas, en vez de colocar los mensajes en la cola de Sendmail para su posterior procesamiento. Por lo general, la cola de Sendmail se encuentra en /var/spool/mqueue/.


Instalación de Sendmail

Lo primero que debe hacer es obtener una copia del software actual de Sendmail desde sendmail.org (vea la sección Recursos, donde encontrará el vínculo correspondiente), por ejemplo: sendmail.8.13.5.tar.gz. Descomprima el archivo como lo suele hacer. A diferencia de lo que ocurre con muchas aplicaciones que usan el patrón make; make install, la creación de Sendmail se realiza con sh Build. Luego de la creación inicial, agregue cd al subdirectorio cf/cf/, copie un archivo *.mc adecuado (como sendmail.mc), personalice sendmail.mc y ejecute lo siguiente para generar un archivo sendmail.cf:

$ m4 ../m4/cf.m4 sendmail.mc > sendmail.cf

Es probable que también deba usar el atajo sh Build sendmail.cf. Probablemente, esto le resulte misterioso. Pero ambos comandos generan una configuración real de Sendmail desde un formato más legible usando el procesador de macros M4. Los archivos reales sendmail.cf, aunque son ASCII editables, son bastante crípticos y sólo se deberían modificar mínimamente y a mano.

Por último, copie el archivo binario de sendmail desde una ubicación parecida a obj.Linux.2.6.10-5-386.i686/sendmail/sendmail hasta su ubicación final (realice una copia de seguridad del archivo antiguo, si es que existe uno), que casi siempre es /usr/sbin/, y copie su archivo sendmail.cf en /etc/mail/sendmail.cf. Usted también puede hacer esto último en el subdirectorio cf/cf/ con sh Build install-cf. Probablemente, usted deba ingresar su o sudo para obtener permisos de archivo para los directorios relevantes.

Sendmail incluye varias utilidades (makemap, mailstats, etc.). Cada directorio correspondiente cuenta con un archivo README (LÉEME) y se puede instalar mediante la ejecución de sh Build install desde el subdirectorio.


El archivo sendmail.cf

La principal complejidad, y la principal función, de Sendmail se encuentra en su archivo sendmail.cf. Este archivo de configuración incluye algunas configuraciones para el entorno de Sendmail. Pero principalmente, incluye patrones para que las direcciones se reescriban y / o entreguen por medio de ciertos mecanismos.

Dos mecanismos de reescritura que se pueden configurar son genericstable y virtusertable, que le permiten mapear usuarios locales desde y hasta direcciones externas. Para cualquiera de estos mapeos, usted primero debe crear un archivo de alias como texto plano. Por ejemplo:


Listado 2. Mapeos salientes
david david.mertz@gmail.com root root@gnosis.cx
dqm@gnosis.lan david.mertz@gmail.com

O en el caso de correo entrante mapeado hacia cuentas locales:


Listado 3. Mapeos entrantes
david@mail.gnosis.cx david david@smtp.gnosis.cx david
david@otherdomain.net david @mail.gnosis.cx %1@external-host.com
owner@list.gnosis.cx owner%3 jax@bar.com error:5.7.0:550 Address invalid

Para compilar estos alias, use makemap utility:

$ makemap dbm /etc/mail/virtuserTabla < inbound
$ makemap hash /etc/mail/genericsTabla < outbound

La activación del uso de estos mapeos se puede configurar usando los macros M4 en sendmail.cf (o en el archivo de configuración que usted use).


Listado 4. Activación de mapeos en sendmail.cf
DOMAIN(gnosis.cx)dnl
FEATURE(`virtuserTabla', `dbm /etc/mail/virtuserTabla')dnl
FEATURE(`genericsTabla', `hash /etc/mail/genericsTabla')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Varias cosas ocurren aquí. Las macros DOMAIN le indican que un archivo (como, por ejemplo, cf/domain/gnosis.cx.m4) se usa para macros adicionales. Las macros FEATURE le permiten usar virtusertable y genericstable. Las macros GENERICS_DOMAIN_FILE definen los dominios que califican para volver a mapear los nombres en genericstable.

La reescritura cumplirá con todas las reglas indicadas. En modo de prueba (sendmail -bt), usted puede examinar la reescritura que se lleva a cabo para direcciones específicas. Por ejemplo, al usar genericstable, se enviará un correo al usuario local "david" de manera externa usando la siguiente dirección de correo electrónico: david.mertz@gmail.com. Asumiendo que localhost ya está definido en /etc/mail/generics-domains, el mensaje de correo que se envía a david@localhost se dirigirá al mismo lugar.

En cambio, el correo entrante para david@mail.gnosis.cx se reescribirá y entregará al usuario local "david". Sendmail puede manipular múltiples dominios al mismo tiempo. Por lo tanto, david@otherdomain.net también se podrá entregar localmente.

El poder total de esto aparece en algunos de los símbolos de comodines. Todo mensaje de correo enviado a mail.gnosis.cx que no esté específicamente direccionado hacia un usuario local se reenviará al mismo nombre de usuario en external-host.com. Pero eso es un patrón simple. Algo más interesante es que %3 se puede usar para expandir la información sobre los múltiples nombres adicionales. Por lo tanto, owner-foo@list.gnosis.cx y owner-bar@list.gnosis.cx se entregarán a los usuarios locales "owner-foo" y "owner-bar" respectivamente (a menos que se los reescriba todavía más). Estos usuarios locales pueden llegar a ser sistemas de procesamiento de listas de correo u otros administradores automatizados de mensajes. Como un caso especial, usted puede crear un error para una dirección específica en vez de reescribirla todavía más.

Todo lo que hemos visto hasta ahora sólo son unos pocos aspectos relativos a las reglas de reescritura que usted puede agregar a Sendmail, pero sirven como una buena introducción para que usted sepa de qué estamos hablando. Compre uno de los grandes bloques sobre este tema para obtener más información detallada al respecto.


Ejecución de Sendmail

Sendmail se puede ejecutar en varios modos. El modo más común es como un daemon que permanece en segundo plano y, periódicamente, procesa su cola. Por ejemplo, la ejecución de

$ /usr/sbin/sendmail -bd -q10m

le indica a Sendmail que debe ejecutarse como un daemon y verificar su cola cada diez minutos. Usted también puede ejecutar Sendmail una sola vez para que procese la cola una vez, pero no se puede transforma esto en un daemon:

$ /usr/sbin/sendmail -q

Como lo mencionamos con anterioridad, Sendmail tiene un modo de prueba para examinar las reglas de reescritura de direcciones. Por ejemplo (tomado de la Linux Network Administrators Guide [Guía para administradores de redes Linux]), vea la sección Recursos, donde tendrá acceso al vínculo correspondiente:


Listado 5. Modo de prueba de Sendmail
$ /usr/sbin/sendmail -bt ADDRESS TEST MODE
(ruleset 3 NOT automatically invoked) Enter <ruleset>
<address> > 3,0 isaac@vstout.vbrew.com rewrite: ruleset 3
input: isaac @ vstout . vbrew . com rewrite: ruleset 96 input: isaac < @
vstout . vbrew . com > rewrite: ruleset 96 returns: isaac < @
vstout . vbrew . com . > rewrite: ruleset 3 returns: isaac < @
vstout . vbrew . com . > rewrite: ruleset 0 input: isaac < @
vstout . vbrew . com . > rewrite: ruleset 199 input: isaac < @
vstout . vbrew . com . > rewrite: ruleset 199 returns: isaac < @
vstout . vbrew . com . > rewrite: ruleset 98 input: isaac < @
vstout . vbrew . com . > rewrite: ruleset 98 returns: isaac < @
vstout . vbrew . com . > rewrite: ruleset 198 input: isaac < @
vstout . vbrew . com . > rewrite: ruleset 198 returns: $# local $: isaac
rewrite: ruleset 0 returns: $# local $: isaac

4 de 8 | Anterior | Siguiente

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=502363
TutorialTitle=Preparación para el examen de LPI: Correo y noticias
publish-date=07292011
author1-email=mertz@gnosis.cx
author1-email-cc=