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

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

É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.

David Mertz, Developer, Gnosis Software

David MertzDavid 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].



29-07-2011

Antes de comenzar

Aprenda todo lo que estos tutoriales le pueden enseñar y cómo sacar el mayor provecho posible de ellos.

Sobre esta serie

El Linux Professional Institute (LPI) certifica a todos los administradores de sistemas Linux en dos niveles: Nivel junior (también llamado "nivel de certificación 1") y Nivel intermedio (también llamado "nivel de certificación 2"). Para obtener el nivel de certificación 1, usted debe aprobar los exámenes 101 y 102. Para obtener el nivel de certificación 2, usted debe aprobar los exámenes 201 y 202.

developerWorks le ofrece diversos tutoriales para ayudarlo a prepararse para cada uno de estos exámenes. Cada examen se ocupa de varios temas y cada uno de estos temas tiene un tutorial de estudio personal en developerWorks. Para el examen 202 de LPI, los siete temas y tutoriales correspondientes de developerWorks son los siguientes:

Tabla 1. Examen 202 de LPI: Tutoriales y temas
Tema del examen 202 de LPITutorial de developerWorksResumen del tutorial
Tema 205Preparación para el examen 202 de LPI (tema 205):
Configuración de redes
Aprenda a configurar una red TCP/IP básica, desde el nivel del hardware (generalmente, la Ethernet, el modem, la ISDN u 802.11) a través del ruteo de direcciones de red.
Tema 206Preparación para el examen 202 de LPI (tema 206):
Correo y noticias
(Este tutorial) Aprenda a usar Linux como un servidor de correo y como un servidor de noticias. Aprenda sobre el transporte de correo, el filtrado de correo local, el software de actualización de listas de correo y el software de servidor para el protocolo NNTP. Vea los objetivos detallados que figuran a continuación.
Tema 207Preparación para el examen 202 de LPI (tema 207):
DNS
Próximamente
Tema 208Preparación para el examen 202 de LPI (tema 208):
servicios web
Próximamente
Tema 210Preparación para el examen 202 de LPI (tema 210):
Gestión de clientes de red
Próximamente
Tema 212Preparación para el examen 202 de LPI (tema 212):
Seguridad del sistema
Próximamente
Tema 214Preparación para el examen 202 de LPI (tema 214):
Solución de problemas de red
Próximamente

Para comenzar a prepararse para el examen de nivel de certificación 1, vea los tutoriales de developerWorks para el examen 101 de LPI. Para prepararse para el otro examen de nivel de certificación 2, vea los tutoriales de developerWorks para el examen 201 de LPI. Lea más sobre todo el conjunto de tutoriales de LPI de developerWorks.

Linux Professional Institute no respalda ningún material ni ninguna técnica de preparación para los exámenes de LPI creada por terceros. Para mayor información, por favor escriba a info@lpi.org.

Sobre este tutorial

Bienvenido a "Correo y noticias", el segundo de siete tutoriales que se ocupan de la administración de redes de nivel intermedio en Linux. En este tutorial, usted aprenderá a usar Linux como un servidor de correo y como un servidor de noticias. 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 brevemente el software de servidor para el protocolo NNTP.

Este tutorial está organizado de acuerdo con los objetivos de LPI correspondientes a este tema. En resumen, los exámenes que tienen un valor de ponderación más alto suelen incluir más preguntas.

Tabla 2. Correo y noticias: Objetivos del examen que se discuten en este tutorial
Objetivo del examen de LPIValor de ponderación del objetivoResumen del objetivo
2.206.1
Configuración de listas de correo
Valor de ponderación: 1Instale y actualice listas de correo usando Majordomo. Monitoree los problemas de Majordomo visualizando los registros de Majordomo.
2.206.2
Uso de Sendmail
Valor de ponderación: 4Gestione una configuración de Sendmail (incluyendo alias de correo, cupos de correo y dominios virtuales de correo). Este objetivo incluye la configuración de relés internos de correo y el monitoreo de servidores SMTP.
2.206.3
Gestión del tráfico de correo
Valor de ponderación: 3Implemente software de gestión de cliente de correo para filtrar, ordenar y monitorear el correo entrante de los usuarios. Este objetivo incluye el uso de software como Procmail, tanto por parte del cliente como por parte del servidor.
2.206.4
Despacho de noticias
Valor de ponderación: 1Instale y configure servidores de noticias usando INN. Este objetivo incluye la personalización y el monitoreo de los grupos de noticias despachados.

Requisitos previos

Para sacar el mayor provecho posible de este tutorial, usted ya debería contar con conocimientos básicos sobre Linux y con un sistema Linux en funcionamiento para practicar con todos los comandos que se describen en el presente.


Sobre el correo y las noticias

El amplio uso de Linux para los servidores de correo y noticias ha ocasionado el desarrollo de herramientas mejoradas con el paso del tiempo. Cuando se desarrollaron los exámenes de LPI, las herramientas más populares eran Sendmail (para el transporte de correo), Procmail (para la administración del correo local), Majordomo (para las listas de correo) y innd (InterNetNews daemon) para NNTP. La última de estas herramientas probablemente todavía sigue siendo la opción predeterminada para las noticias. Sin embargo, a pesar de sus ventajas técnicas, el protocolo NNTP ha quedado en segundo plano debido a la aparición de las listas de correo electrónico y los foros de discusión basados en Internet.

De las otras herramientas, Sendmail y Procmail todavía se siguen usando muy a menudo, aunque no tan exclusivamente como en el pasado. La actualización y el reemplazo más popular de Sendmail es postfix, que incluye facilidades para ofrecer una compatibilidad con Sendmail. El archivo de administración de correo local está bastante bien poblado de opciones, aunque Procmail sigue siendo la más popular. Por otra parte, Majordomo es un pequeño anacronismo hoy en día. De la misma forma en la que Majordomo reemplazó en gran medida al software listserv, mailman ha provocado que Majordomo quede en segundo lugar. Sin embargo, para que exista correspondencia con las áreas actuales del tema de LPI, este tutorial se ocupa de Majordomo.

Otros recursos

Como con la mayoría de las herramientas Linux, siempre resulta útil leer las páginas man para adentrarse en todas las utilidades que allí se discuten. Las versiones y los switches pueden llegar a cambiar entre las diferentes versiones de las utilidades y los kernel o según las diferentes distribuciones de Linux. Para mayor información detallada, el Linux Documentation Project [Proyecto de documentación de Linux] le ofrece una gran variedad de documentos útiles (en especial, sus instructivos). Vea la sección Recursos, donde encontrará un vínculo para acceder a dicho proyecto. Se han publicado varios libros sobre redes en Linux. El libro publicado por O'Reilly titulado TCP/IP Network Administration [Administración de redes TCP/IP] de Craig Hunt me resultó de gran utilidad. Busque la edición más actualizada al momento de leer esto. Vea la sección Recursos, donde encontrará un vínculo para acceder a dicho libro.


Configuración de listas de correo

¿Qué hace Majordomo?

Un programa de gestión de listas de correo es, básicamente, una extensión local para un programa de transporte de correo (MTA, por sus siglas en inglés), como Sendmail. Básicamente, el MTA que se ejecuta en un sistema envía un conjunto de direcciones al control del administrador de listas de correo. Por su parte, el administrador de listas de correo modifica, procesa y quizá hasta reenvía los mensajes que recibe. Algunos de los mensajes recibidos por un administrador de listas de correo son mensajes con fines de distribución entre los miembros de la lista de correo en cuestión (que quizá se deben verificar para obtener el permiso necesario para su distribución entre los miembros de dicha lista de correo). Otros mensajes son simplemente mensajes de control que modifican el estado de la lista de correo (como, por ejemplo, las opciones de suscripción de un suscriptor en particular). Ningún administrador de listas de correo se encarga de entregar los mensajes de correo electrónico, sino que delega esta función a su MTA de respaldo.

Como lo indicó la introducción a este tutorial, Majordomo dejó de ser la opción más moderna para las listas de correo. En cambio, la mejor opción para una nueva instalación de una lista de correo probablemente sea Mailman. Majordomo, sin embargo, todavía sigue funcionando perfectamente y está instalado en muchos sistemas antiguos que siguen funcionando sin ningún problema (a veces, se trata de listas de soporte que funcionan perfectamente desde hace ya varios años).

Sin embargo, existe un pequeño problema con las versiones de Majordomo. Algunos años atrás, se comenzó a rehacer la versión 1.x de Majordomo, a la que se denominó Majordomo2. Desafortunadamente, dicho proyecto quedó en la nada y nunca se llegó a publicar la versión final. Mientras que es posible que Majordomo2 (en su versión beta) se use en una reducida cantidad de sistemas, Majordomo 1.9.5 es la versión estable más reciente y la que discutimos en este tutorial.

Instalación de Majordomo

Usted puede conseguir un archivo con el software de Majordomo en la página de Internet de Majordomo (vea la sección Recursos, donde encontrará un vínculo para acceder a dicha página).

Luego de descomprimir el archivo, que tendrá un nombre similar a majordomo-1.94.5.tgz, asegúrese de leer el archivo INSTALL [INSTALACIÓN] atentamente. Usted debe seguir todos los pasos que dicho archivo describe para lograr instalar un sistema Majordomo que funcione bien. La creación del sistema hace uso de los pasos make; make install usuales en la mayoría de las instalaciones. También se hace uso de make install-wrapper. La instalación se puede y se debería verificar con un comando como el siguiente: cd /usr/local/majordomo-1.94.5; ./wrapper config-test (el make install le ofrece detalles en un mensaje).

Antes de crear el sistema, modifique Makefile y cree y / o modifique majordomo.cf. Como punto de partida, usted puede copiar el último archivo desde sample.cf en la distribución de la fuente. En Makefile, se configuran diversas variables de entorno (la más importante y sutil de éstas probablemente sea W_GROUP). Este es el gid numérico del grupo en el que se ejecutará Majordomo (casi siempre, éste será el grupo "daemon"). El gid correspondiente al daemon es 1 en la mayoría de los sistemas, pero asegúrese de verificar esto de la siguiente manera:

$ id daemon
uid=1(daemon) gid=1(daemon) groups=1(daemon)

Otras variables en Makefile incluyen PERL, para la ruta hacia el intérprete, y W_HOME, para la ubicación en la que se instalará Majordomo.

Su nuevo archivo majordomo.cf también se debe editar antes de make install. Las variables Perl que se deben modificar aparecen principalmente cerca de la parte superior del archivo. Definitivamente, ajuste $whereami y $homedir y examine las otras variables para asegurarse de que sean las correctas.

¿Cómo indicarle a Sendmail que use Majordomo?

El último paso de la instalación consiste en convencer a Sendmail de que se comunique con Majordomo. Dentro del archivo /etc/sendmail.cf, esto involucra una línea como la siguiente:

OA/path/to/majordomo/majordomo.aliases

Si usa el procesador M4 para generar archivos de configuración de Sendmail, usted podrá usar una línea como la siguiente:

define(`ALIAS_FILE',`/etc/aliases,/path/to/majordomo/majordomo.aliases')

La muestra majordomo.aliases incluye algunos valores de muestra:

Listado 1. majordomo.aliases de muestra
majordomo:
"|/usr/test/majordomo-1.94.5/wrapper majordomo" majordomo-owner: you
owner-majordomo: you test: "|/usr/test/majordomo-1.94.5/wrapper resend -l test
test-list" test-list: :include:/usr/test/majordomo-1.94.5/lists/test owner-test:
you test-owner: you test-request: you

Esto, por supuesto, se debe personalizar según su configuración particular. Específicamente, "you" significa el nombre del administrador de la lista (que no necesariamente es el administrador del sistema).

Creación de una nueva lista en Majordomo

La configuración de muestra que se incluye con anterioridad creó una lista denominada "test", que incluye direcciones "test-owner", "test-request", etc. con el objetivo de administrar la lista. En una situación real, usted probablemente querría que las listas tengan otros nombres. Para lograr esto, haga lo siguiente:

  1. Pase al directorio $listdir, como se lo define en majordomo.cf.
  2. Cree archivos denominados my-list-name y my-list-name.info (y ajústelos según sea necesario). Aplique chmod a ellos e ingrese 664. El último archivo incluye una introducción a la lista.
  3. Cree varios alias en su archivo majordomo.aliases según el patrón de los ejemplos denominados "test" (por ejemplo, "foo-owner", "foo", "foo-request", etc.).
  4. Envíe solicitudes a subscribe, unsubscribe, signoff, etc. para todos los miembros de la lista.
  5. Cree un directorio de archivos en la ubicación especificada por las variables $filedir y $filedir_suffix.
  6. Cree un subdirectorio digest en $digest_work_dir. Use el mismo nombre que el de la lista digest (por ejemplo, test-digest).
  7. Asegúrese de que todo sea propiedad del usuario majordomo y del grupo majordomo, y que tanto el propietario como el grupo tengan acceso de escritura (es decir, modo 664 para los archivos y modo 775 para los directorios).
  8. Envíe un comando config <listname> <listname>admin a Majordomo. Esto provocará la creación de un archivo de configuración predeterminado para la lista y se lo enviará a usted.

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

Gestión del tráfico de correo electrónico

¿Qué hace Procmail?

Procmail es un procesador de correo. Básicamente, luego de que Sendmail u otro MTA entrega un correo a una casilla de correo local, usted puede usar un MUA para procesar el correo en su casilla de correo. Usted guarda algunos mensajes en diversas carpetas, borra otros, reenvía otros mensajes hacia varias partes interesadas, responde otros, etc. La realización de estas tareas en un MUA es un proceso manual e interactivo y, posiblemente, le lleve mucho tiempo.

Procmail es un programa que puede hacer estas tareas por usted de manera automática siempre que el procesamiento requerido se pueda indicar por medio de una regla. Por supuesto que, cuando usted le escribe a su madre en respuesta al mensaje de correo electrónico que ella le envió, es necesario prestar algo de atención personal a la respuesta. Pero en el caso de la mayoría de los mensajes, resulta bastante útil especificar de antemano exactamente qué le gustaría que ocurra al momento de recibir un mensaje. Las reglas que pueden ocasionar la administración automatizada de mensajes pueden llegar a involucrar encabezados específicos basados en patrones y contenidos específicos en el cuerpo del mensaje o incluso pueden llegar a llamar a otros programas externos específicos y especializados (como, por ejemplo, los filtros estadísticos de spam).

Activación de Procmail

Probablemente, Procmail vino ya instalado en su distribución de Linux. De lo contrario, usted puede descargar el archivo fuente de procmail.org (vea la sección Recursos). Desde el momento en el que se redactó este documento, la última versión es la 3.22. Es posible que usted también pueda instalar Procmail como un sistema binario usando el sistema de instalación de su distribución de Linux (por ejemplo, en Debian: apt-get install procmail). La creación desde la fuente es bastante directa: make install. Todo lo que Procmail necesita para funcionar correctamente es el sistema binario de procmail y un archivo de configuración ~/.procmailrc (o, posiblemente, un archivo global /etc/procmailrc).

Además de instalar Procmail en primer lugar, usted debe hacer que su sistema de correo local utilice Procmail. Un mecanismo anticuado para procesar correo a través de Procmail consiste en usar un archivo .forward. Esto todavía sigue funcionando en un entorno por usuario. Generalmente, un usuario crea un archivo, ~/.forward, que incluye algo como lo siguiente:

|/usr/local/bin/procmail

Esto canalizará todos los mensajes entrantes hacia Procmail. Sin embargo, una mejor y más común forma de utilizar Procmail consiste en indicarle a su MTA que se comunique directamente con Procmail en primer lugar. En Sendmail, esto involucra la activación de la función local_procmail colocando lo siguiente en su archivo sendmail.mc:

FEATURE(`local_procmail', `/usr/bin/procmail', `procmail -Y -a $h -d $u')

Luego de que Procmail está activado, necesita un archivo, ~/.procmailrc, que incluya el conjunto de reglas que procesa al administrar un mensaje en particular. Procmail no es un daemon. En cambio, es una herramienta de procesamiento de texto que acepta exactamente un mensaje de correo electrónico a la vez por medio de STDIN.

Reglas en ~/.procmailrc

Básicamente, Procmail es sólo un conjunto de recetas de expresiones regulares. Usted también podría definir variables de entorno de la misma forma en la que un shell script. Las recetas se ejecutan en orden, pero sólo se pueden usar indicadores para ejecutar una condición en particular si se satisface la condición anterior (A) o si no se la satisface (E). Algunas recetas de Procmail son recetas de entrega, mientras que otras son recetas de no entrega. Estas últimas terminan el procesamiento de un mensaje determinado, a menos que se incluya el indicador c para continuar el procesamiento de manera explícita. Probablemente, la acción más común de una receta consiste en almacenar un mensaje en una casilla de correo nombrada. No obstante, usted también podrá canalizar un mensaje hacia otro programa o reenviar el mensaje hacia una lista de direcciones.

Por lo general, una receta comienza con un bloqueo (opcionalmente, con un archivo específico de bloqueo; de lo contrario, se hace de manera automática) y algunos indicadores, seguidos por algunas reglas. Luego de esto, aparece exactamente una acción. Por ejemplo:

:0 [flags] [ : [locallockfile] ]
<zero or more conditions (one per line)>
<exactly one action line>

Es importante tener en cuenta que el indicador implícito H se corresponda con el encabezado y que el indicador B se corresponda con el cuerpo. Generalmente, los patrones no distinguen mayúsculas de minúsculas. De todas formas, el indicador D puede imponer una correspondencia que distinga mayúsculas de minúsculas.

Si una condición comienza con *, todo lo que sigue después de este carácter es una expresión egrep. De lo contrario, si una línea comienza con < o >, se verifica el tamaño del mensaje como más grande o más pequeño que una cantidad determinada de bytes. El prefijo $ le permite sustituir shells.

Una acción que es simplemente un nombre de archivo guarda un mensaje en dicha casilla de correo. Use el pseudoarchivo especial /dev/null para borrar un mensaje. El carácter | transfiere el mensaje a otro programa, como por ejemplo la utilidad digest-splitting para el correo que se distribuye con Procmail. El prefijo de exclamación (!) reenvía un mensaje como una acción (pero niega una condición en una regla). A continuación, incluimos algunos ejemplos de esto:

Listado 6. Archivo ~/.procmailrc de muestra
:0: * ^Subject:.*Digest # split digests
and save parts * ^From:.*foo-digest |formail +1 -ds cat
>>mailing_lists_mailbox :0: * !(To|Cc).*mertz@gnosis.cx # my main
account here * !(To|Cc).*david.mertz@gmail.com # I get mail from here *
!From.*gnosis\.cx # I trust gnosis not to spam * !From.*list.*@ # don't trash
mailing lists * !From.*good-buddy # sometimes Bcc's me mail spam :0: *
^Subject.*[MY-LIST] # redistribute MY-LIST messages ! member@example.com,
member2@example.net, member3@example.edu :0: * ^Cc.*joe@somewhere.org # save to
both inbox and JOE mbox { :0 c $DEFAULT :0 JOE }

Despacho de noticias NNTP

¿Que hace InterNetNews?

NNTP es un buen protocolo para la distribución "de extracción" de mensajes entre usuarios interesados en un tema en particular. Usenet es una gran colección de "grupos de noticias" sobre miles de temas diferentes que distribuye mensajes a través de NNTP. Al ser un protocolo de extracción, un servidor NNTP reúne los mensajes actuales disponibles desde una red descentralizada de servidores y selecciona sólo aquellos grupos de noticias que el administrador del sitio decide incluir. Cuando se postea un mensaje nuevo en un grupo de noticias determinado, éste se propaga de manera no jerárquica desde el servidor hacia todos los otros servidores en Internet interesados en suscribirse a dicho grupo de noticias.

Desde la perspectiva de un consumidor final, una lista de correo puede parecer muy similar a un grupo de noticias. En cualquiera de estos casos, el usuario crea y postea mensajes y lee mensajes redactados por otras personas. En el pasado de Usenet e Internet, las listas de correo no tenían todas las capacidades que tienen en la actualidad para presentar temas de discusión por hilos, como hacen los grupos de noticias en la actualidad de manera automática. Pero durante varios años, los usuarios de correo electrónico han hecho un excelente trabajo en lo que se refiere a inferir los temas de discusión incluidos dentro de las listas de correo.

La principal diferencia entre los grupos de noticias y las listas de correo se encuentra en su protocolo de red subyacente. Las listas de correo todavía confían en un servidor de correo centralizado que acepta todos los mensajes destinados a una lista en particular y los distribuye por medio de correo electrónico entre todos los usuarios que indicaron su interés al respecto (y que fueron aprobados, tanto de manera automática como mediante mecanismos de suscripción moderados por personas). En cambio, NNTP conecta todos los nodos entre sí sin confiar en un servidor central. Cada servidor NNTP simplemente se comunica con los otros servidores que están "cerca" y los mensajes llegan a todo el mundo de manera relativamente rápida.

InterNetNews (INN) es un servidor NNTP que se escribió por primera vez en el año 1992 y que se lo actualiza activamente desde ese entonces. Desde dicha fecha, INN ya alcanzó la versión 2.4.1. La página principal de INN incluye diferentes versiones y documentación (vea la sección Recursos, donde encontrará el vínculo correspondiente).

Configuración de INN

Luego de obtener y descomprimir la versión más actualizada, la creación de INN es una secuencia bastante directa: ./configure; make; make install. Para crear INN, usted debe tener instalado Perl y yacc (o bison). Esto crea varios archivos, cuya mayor parte se encuentra en el directorio /usr/local/news/ (lo que usted probablemente no tiene si INN no se instaló con anterioridad).

Antes de ejecutar el daemon innd (como "noticias" de usuario), usted debería modificar varios archivos de configuración. Los detalles completos al respecto están fuera de nuestro alcance, pero un tutorial más largo titulado Instalación y ejecución de un Usenet News Server con INN y FreeBSD, sobre el conjunto completo de archivos a los que se debe prestar atención, está disponible de manera online (vea la sección Recursos, donde encontrará el vínculo correspondiente). El sistema make se encarga de administrar muchos de los permisos y los problemas de cupo, pero probablemente desee volver a verificar estas configuraciones.

Un archivo al que se le debe prestar especial atención es la configuración de cupos en /usr/local/news/etc/storage.conf. Éste controla qué grupos de noticias están suscriptos y qué tanto historial de cada grupo de noticias se debe conservar. Una vez que se cubre el cupo, se purgan los mensajes más antiguos desde un grupo de noticias determinado (en el servidor local y no desde Usenet como un todo). Por ejemplo, storage.conf puede llegar a incluir algo como lo siguiente:

Listado 7. Configuración de muestra de storage.conf
method cnfs { newsgroups:
alt.binaries.* class: 1 size: 0,1000000 options: BINARIES } method cnfs {
newsgroups: * class: 2 size: 0,100000 options: NOTBINRY }

El valor class especifica el orden en el que se evalúan las diferentes reglas.

Una vez que se ajustan todos los archivos de configuración, la simple ejecución de innd como un daemon (probablemente iniciado para un script de carga inicial) monitorea los servidores de flujo de información de retorno configurados por /usr/local/news/etc/innfeed.conf, /usr/local/news/etc/incoming.conf y /usr/local/news/etc/newsfeeds.

Recursos

Aprender

Obtener los productos y tecnologías

  • En el sitio de Majordomo, podrá encontrar archivos para descargar de Internet e información sobre Majordomo.
  • En procmail.org, usted puede descargar la última versión de Procmail.
  • En sendmail.org, usted puede descargar la última versión de Sendmail.
  • Ingrese a la página principal de INN para acceder a archivos que podrá descargar de Internet y a información sobre InterNetNews.
  • Cree su próximo proyecto de desarrollo en Linux con el software de prueba de IBM, que se puede descargar de manera completamente gratuita desde developerWorks.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

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

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



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.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

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

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=502363
ArticleTitle=Preparación para el examen de LPI: Correo y noticias
publish-date=07292011