El programa procesador de macros m4 genera el fichero sendmail.df cuando procesa el fichero de configuración de macros proporcionado por el administrador del sistema local. A través de lo que resta de este capítulo, nos referiremos al fichero de configuración como el fichero sendmail.mc.
EL proceso de configuración es básicamente una forma de crear un fichero sendmail.mc apropiado que incluya macros que describan su configuración deseada. Las macros son expresiones que el procesador de macros m4 entiende y expande en la sintaxis compleja de sendmail.cf. Las expresiones macro se componen del nombre de la macro (el texto en letras mayúsculas al principio), que se asemejan a una función en un lenguaje de programación, y algunos parámetros (el texto entre corchetes) que se utilizan en la expansión. Los parámetros pueden ser pasados literalmente a la salida de sendmail.cf o pueden ser utilizados para controlar la manera en que se realiza el procesamiento de la macro.
El fichero sendmail.mc para una configuración mínima (UUCP o SMTP con todos los mensajes no locales retransmitidos a un anfitrión inteligente conectado directamente a Internet) puede ser tan corto como 10 o 15 líneas, excluyendo comentarios.
Si usted es un administrador de varios hospedajes de correo distintos, quizá no quiera nombrar su fichero de configuración sendmail.mc. En vez de ésto, es practica usual nombrarlo después del nombre del anfitrión, —vstout.m4 en nuestro caso. El nombre no importa realmente en tanto que la salida sea llamada sendmail.cf. Proporcionar un nombre único para el fichero de configuración de cada anfitrión le permite conservar todos los ficheros de configuración en el mismo directorio y es tan sólo una conveniencia administrativa. Echemos un vistazo a dos ejemplos de ficheros de configuración de macros para que sepamos dónde estamos apuntando.
La mayoría de las configuraciones de sendmail de la actualidad usan SMTP únicamente. Es muy sencillo configurar sendmail para SMTP. Ejemplo 18-1 espera que esté disponible un servidor de nombres DNS para resolver anfitriones e intentará aceptar y enviar todo el correo para los anfitriones usando únicamente SMTP.
Ejemplo 18-1. Ejemplo de Fichero de Configuración vstout.smtp.m4
divert(-1) # # Ejemplo de fichero de configuración para vstout - smtp exclusivamente # divert(0) VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96') OSTYPE(`linux') # # Incluye soporte para los protocolos de transporte locales y smtp MAILER(`local') MAILER(`smtp') # FEATURE(rbl) FEATURE(access_db) # fin |
Un fichero sendmail.mc para vstout en la Cervecera Virtual se muestra en Ejemplo 18-2. vstout usa SMTP para comunicarse con todos los anfitrións en la LAN de la cervecera, y verá la semejanza con la configuración genérica para SMTP exclusivamente que acaba de presentarse. En suma, la configuración de vstout envía todo el correo para otros destinatarios moria, su anfitrión de retransmisión a Internet por UUCP.
Ejemplo 18-2. Ejemplo de Fichero de Configuración para vstout.uucpsmtp.m4
divert(-1) # # Ejemplo de fichero de configuración para vstout # divert(0) VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96') OSTYPE(`linux') dnl # moria es nuestro anfitrión inteligente (smart anfitrión), usando el transporte "uucp-new". define(`SMART_ANFITRIÓN', `uucp-new:moria') dnl # Soportar los protocolos de transporte de correo local, smtp y uucp. MAILER(`local') MAILER(`smtp') MAILER(`uucp') LOCAL_NET_CONFIG # Esta regla asegura que todo correo local sea entregado usando # transporte smtp, todo lo demás irá por el anfitrión inteligente. R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 dnl # FEATURE(rbl) FEATURE(access_db) # fin |
Si se comparan y contrastan las dos configuraciones, quizá sea capaz de inferir qué hace cada uno de los parámetros de configuración. Los explicaremos todos ellos en detalle.
Unos pocos de los items en el fichero sendmail.mc se requieren todo el tiempo; otros pueden ignorarse si las configuraciones por omisión le sirven. La secuencia general de las definiciones en el fichero sendmail.mc son como lo que sigue:
VERSIONID
OSTYPE
DOMAIN
FEATURE
Local macro definitions
MAILER
LOCAL_* conjuntos de reglas (rulesets)
Hablaremos acerca de cada uno en las siguientes secciones y nos referiremos a nuestros ejemplos en Ejemplo 18-1 y Ejemplo 18-2, cuando sea apropiado, para explicarlos.
Las líneas en el fichero sendmail.mc que comiencen con el carácter literal # no son analizadas por m4, y por omisión serán sacadas directamente a la salida en el fichero sendmail.cf. Esto es útil si se desea comentar qué está haciendo su configuración en los ficheros de entrada y salida.
Para permitir comentarios en su sendmail.mc que no sean colocados en el fichero sendmail.cf, puede utilizar la orden m4 divert y las etiquetasdnl. divert(-1) hará que toda la salida se detenga. divert(0) hará que la salida sea restaurada al valor predeterminado. Cualquier salida generada por líneas entre éstos será descartada. En nuestro ejemplo, hemos usado este mecanismo para proporcionar un comentario que aparece sólamente en el fichero sendmail.mc. Para conseguir el mismo resultado para una línea sencilla, puede utilizar la etiqueta dnl que significa, literalmente, “[1] empezando al principo de la siguiente línea, borrar todos los caracteres hacia arriba incluyendo la nueva línea” Hemos usado esto en nuestro ejemplo también.
Éstas son características estándar de m4 y se puede obtener más información sobre ellas en su página de manual.
VERSIONID(`@(#)sendmail.mc 8.9 (Linux) 01/10/98') |
OSTYPE(`linux') |
La definición OSTYPE debería ser una de las primeras en aparecer en su fichero sendmail.mc, debido a que muchas otras definiciones dependen de ella.
La macro DOMAIN es útil cuando se desea configurar un gran número de máquinas en la misma red de una manera estandarizada. Si se está configurando un pequeño número de anfitrións, probablemente es mejor no preocparse de ésto. Típicamente se configuran items, como el nombre de los anfitrións de retransmisión [3] o concentradores [4] que todos los anfitrións de la red utilizarán.
La instalación estándar continene un directorio de plantillas de macros m4 utilizadas para dirigir el proceso de configuración. Este directorio se nombra normalmente como /usr/share/sendmail.cf o algo por el estilo. Aquí se encuentra un subdirectorio nombrado domain que contiene plantillas de configuración específicas para el dominio. Para hacer uso de una macro DOMAIN, se debe crear su propio fichero macro conteniendo las definiciones estándar que se requieran para el sitio, y escribirlas en el subdirectorio domain. Sólo se deberían incluir normalmente las definiciones de macro que sean únicas a su dominio aquí, como las definiciones de los anfitrión inteligentes o los anfitrión de retransmisión, pero no limitándose a éstos.
La distribución del código fuente de sendmail viene con algunos ficheros de ejemplo de definición de macros que puede usar para crear el suyo propio.
Si salvó su fichero de macros de dominio como /usr/share/sendmail.cf/domain/vbrew.m4, debería incluir las definiciones en su sendmail.mc usando:
DOMAIN(`vbrew') |
La macro FEATURE permite incluir características predefinidas de sendmail en su configuración. Estas características de sendmail hacen las configuraciones soportadas muy fáciles de usar. Hay un gran número, y a través de este capítulo hablaremos únicamente de unas pocas se pueden encontrar detalles completos de las características disponibles en el fichero CF incluido en el paquete de fuentes.
Para usar cualquiera de las características listadas, debería incluir una línea en su fichero sendmail.mc que se parezca a esto:
FEATURE(nombre) |
FEATURE(nombre, parámetro) |
Los ficheros estándar de configuración de sendmail proporcionan una buena cantidad de maneras y variables con las que se puede personalizar la configuración. Éstas se llaman definiciones de macros locales. Muchas de ellas se listan en el fichero CF en el paquete de fuentes de sendmail.
La definiciones de macros locales son normalmente invocadas mediante el suministro del nombre de la macro con un argumento representando el valor que se quiere asignar a la variable que gestiona la macro. Otra vez, exploraremos algunas de las definiciones de macro locales más comunes en los ejemplos que presentaremos más tarde en este capítulo.
Si desea que sendmail transporte correo de cualquier otra forma que por entrega local, debe indicarle qué transporte tiene que emplear. La macro MAILER hace esto muy fácil. La versión actual de sendmail soporta una variedad de protocolos de transporte de correo; algunos de éstos son experimentales, otros son probablemente usados raramente.
En nuestra red necesitamos transporte SMTP para enviar y recibir correo entre los anfitrións en nuestra red local, y el transporte UUCP para enviar y recibir correo desde nuestro anfitrión inteligente. Para lograr ésto, simplemente incluimos ambos transportes de correo, el smtp y el uucp. El transporte de correo local se incluye por omisión, pero puede ser definido por claridad, si o desea. Si se incluyen ambos smtp y el uucp en su configuración, debe asegurarse siempre de definir primero el agente de correo smtp.
Los transportes más comúnmente usados disponibles al usar la macro MAILER se describen en la siguiente lista:
Este transporte incluye tanto el agente de entrega local usado para enviar correo al buzón de los usuarios en esta máquina como el programa prog transporte de entrega usado para enviar mensajes a programas locales. Este transporte se incluye por omisión.
Este transporte implementa el Protocolo Simple de Transporte de Correo (SMTP), que es el medio más usual de transporte de correo en Internet. Cuando se incluye este transporte, se configuran cuatro transportes de correo: smtp (SMTP básico), esmtp (SMTP Extendido), smtp8 (SMTP binario plano de 8 bits), y relay (específicamente diseñado para hacer de transporte a modo de pararela entre anfitriones).
El transporte uucp proporciona soporte para dos transportes de correo: uucp-old, que es el UUCP tradicional, y uucp-new, que permite manipular múltiples buzones en una transferencia.
Este transporte de correo permite enviar mensajes directamente a redes de noticias del estilo Usenet. Cualquier mensaje local dirigido a una dirección de news.group.usenet será introducido en la red de noticias para el grupo de noticias news.group.
Si tiene el software Hylafax instalado, este transporte permitirá dirigir correo electrónico a él, para que así pueda construir una pasarela de correo-fax. Esta característica era experimental cuando se escribió este documento. Puede obtenerse más información en: http://www.vix.com/hylafax/.
Hay otros como pop, procmail, mail11, phquery, y cyrus que son útiles, pero menos comunes. Si le pica la cusiosidad, puede leer sobre éstos en el libro de sendmail o en la documentación suministrada en el paquete de fuentes.
La configuración de la Cervecera Virtual es probablemente más compleja que lo que muchos sitios requieren. La mayoría de los sitios de hoy usarían transporte SMTP únicamente y no tendrían que tratar con UUCP para nada. En nuestra configuración hemos configurado un “anfitrión inteligente” que es usado para tratar todo el correo saliente. Debido a que estamos usando un transporte SMTP en nuestra red local debemos indicarle a sendmail que no envíe correo local por el anfitrión inteligente. La macro LOCAL_NET_CONFIG permite introducir reglas sendmail directamente en el fichero de salida sendmail.cf para modificar la manera en que el correo local es manipulado. Hablaremos más sobre reglas de reescritura más tarde, pero por el momento se debería aceptar que la regla que hemos suministrado en nuestro ejemplo especifica que cualquier correo destinado a anfitriones dentro del dominio vbrew.com deberían entregarse directamente al anfitrión objetivo usando el transporte de correo SMTP.
[1] | starting at the beginning of the next line, delete all characters up to and including the next newline. |
[2] | N. del T. mailers en el original |
[3] | N. del T: relay anfitrións en inglés |
[4] | N. del T. hubs en inglés |