Reescritura de direcciones con sendmail mini-COMO <author>Thomas Roessler, <tt><htmlurl url="mailto:roessler@guug.de" name="roessler@guug.de"></tt> &nl; Traducción: David Marín Carreño, <tt><htmlurl url="mailto:davefx@bigfoot.com" name="davefx@bigfoot.com"></tt> <date>v0.1, 6 de Mayo de 1998 <abstract> Este documento es una breve descripción de cómo modificar el fichero de configuración de sendmail para un acceso telefónico doméstico. </abstract> <sect>Introducción <p> Daré por sentado que tiene el tipo de acceso a Internet que parece ser común en las universidades y en los proveedores de servicios de Internet hoy en día: usted se conecta con la red de su proveedor utilizando PPP sobre una conexión serie. Su correo entrante se almacena temporalmente en el servidor POP o IMAP de su proveedor, mientras que el correo saliente se envía mediante SMTP. No tiene un nombre de dominio propio, por lo que todo debe usar <it/una/ dirección. Asumiré también que ya ha instalado una versión bastante reciente de <tt/sendmail/, realizado por Eric Allman (la versión más reciente, al escribir estas líneas, era la <tt/8.8.8/ <footnote>Nota del editor: a día de la revisión, la última versión disponible es la <tt/8.9.3/; debería actualizarse. De hecho, si hay un programa que tendría que mantener actualizado, es éste... </footnote> y con ella debería funcionar bien). Este documento se refiere particularmente a propiedades específicas de los sistemas Debian GNU/Linux; los usuarios de otras distribuciones deberían tener algo de cuidado. Asegúrese de tener esta información a mano: <itemize> <item>El servidor de correo de su proveedor de servicios Internet. <item>Su dirección de correo electrónico. </itemize> La configuración que planeamos tiene dos metas principales: <enum> <item>Debe ser posible enviar correo entre los usuarios locales. <item>El resto del planeta debe ver las direcciones de los usuarios del proveedor de servicios Internet, no las direcciones locales. </enum> Para alcanzar esto, haremos uso del la opción <tt/genericstable/ de <tt/sendmail/. <sect>Mapa de ficheros <p> Colocaremos todos los ficheros de configuración de <tt/sendmail/ en un directorio aparte bajo <tt>/etc</tt>: <tt>/etc/mail</tt>. Normalmente, <tt/sendmail/ esperará que esos ficheros residan directamente bajo <tt/etc/. Para evitar problemas, <tt>/etc/sendmail.cf</tt> debería ser un enlace simbólico a <tt>/etc/mail/sendmail.cf</tt>. Los siguientes ficheros poblarán <tt>/etc/mail</tt>: <itemize> <item><tt/aliases/ - contiene direcciones locales adicionales. <item><tt/genericsdomain/ - contiene alguna información acerca de la configuración de su máquina local. <item><tt/genericstable/ - contiene las reglas reales de reescritura. <item><tt/sendmail.cf/ - fichero de configuración de sendmail. <item><tt/sendmail.mc/ - la fuente de <tt/sendmail.cf/. </itemize> Algunos de estos ficheros serán acompañados por ficheros <tt/.db/, que contienen bases de datos configuradas para el uso directo de <tt/sendmail/. Asumimos que la parte <tt/cf/ del árbol de código fuente de <tt/sendmail/ reside bajo un directorio llamado <tt>/usr/lib/sendmail.cf</tt>. Este es el caso de los sistemas Debian GNU/Linux. En otras distribuciones este directorio posiblemente esté en un sitio diferente. Lea la documentación de su distribución para más detalles. <sect>Configuración de sendmail <p> <sect1>El fichero principal de configuración <p> Sendmail utiliza un sistema de reglas muy complejo para su configuración. Debido a que se pueden hacer millares de cosas con ellas, escribir un fichero <tt/sendmail.cf/ desde cero es bastante inusual y lleva mucho tiempo. Si está interesado en hacer eso, debería dejar de leer este documento ahora mismo y leer, en su lugar, el <it/Bat Book/ de la editorial <it/O'Reilly/. En lugar de crear a mano estas reglas, confiaremos en el procesador de macros <tt/m4/ para crear nuestro fichero de configuración a partir de fragmentos escritos anteriormente que se distribuyen junto con sendmail. Echemos un vistazo a las primeras líneas del fichero <tt/sendmail.mc/: <tscreen><verb> include(/usr/lib/sendmail.cf/m4/cf.m4) VERSIONID(`sendmail.mc - roessler@guug.de') OSTYPE(debian) define(`ALIAS_FILE',`/etc/mail/aliases') </verb></tscreen> Al comienzo, se incluye <tt/cf.m4/. Este fichero de macros m4 contiene muchas definiciones de macro para el resto del fichero. Asegúrese de que la ruta de archivo que proporciona aquí es correcta (la que aquí se representa es la típica de Debian GNU/Linux). La macro <tt/OSTYPE/ se utiliza para dar algunas configuraciones por defecto muy útiles. Si no utiliza un sistema Debian, reemplace la palabra <tt/debian/ por <tt/linux/. <tt/ALIAS_FILE/ indica a sendmail dónde buscar la lista de alias. Las siguientes líneas dirán a sendmail que utilice la característica <tt/genericstable/, y dónde encontrar los ficheros de configuración necesarios para usarla: <tscreen><verb> FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') </verb></tscreen> La característica <tt/masquerade_envelope/ le dice a sendmail que aplique la cabecera reescribiendo el <it/sobre/ del remitente de un mensaje. Esta es la dirección de correo a la que los subsistemas de reparto dirigirán los informes de fallo en el reparto y mensajes de advertencia. Los ficheros <tt/generics*/ se explicarán más abajo. Ahora, debemos definir un, llamémosle así, servidor «inteligente» <tt>(smart-host)</tt>, esto es, una máquina que manejará el correo saliente de nuestro sistema. Dése cuenta de que esta máquina puede ser distinta de los servidores POP e IMAP de su proveedor. En caso de duda, llame al servicio técnico. El código en el fichero de configuración maestra es: <tscreen><verb> define(`SMART_HOST',`mensajes-salientes.su.proveedor') </verb></tscreen> Reemplace <tt/mensajes-salientes.su.proveedor/ por la dirección completa de de la máquina de su proveedor de servicios Internet que gestionará el correo saliente. Las dos líneas finales incluyen las definiciones del <it/cartero/ que son requeridas por sendmail para averiguar cómo manejar varios tipos de correo: <tscreen><verb> MAILER(local) MAILER(smtp) </verb></tscreen> Para generar el fichero <tt/sendmail.cf/ a partir de este <tt/sendmail.mc/, teclee los siguientes comandos (como root): <tscreen><verb> # m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cf </verb></tscreen> Fíjese en que la técnica de escribir las salidas <tt/m4/ a un fichero temporal que será movido a su lugar correcto. Esto ayuda a prevenir que sendmail lea ficheros de configuración parcialmente escritos. <sect1>Reescritura de direcciones <p> Primero, le debemos comunicar a sendmail qué direcciones van a considerarse como locales (y de esta manera deberían estar sujetas a la reescritura). Esto es bastante simple: sólo coloque el nombre completo de su máquina en el fichero <tt>/etc/mail/genericsdomain</tt> Para conseguir el nombre completo de su máquina, teclee el siguiente comando: <tscreen><verb> $ hostname -f </verb></tscreen> Ahora, vayamos con la tabla de reescritura propiamente dicha: <tt>/etc/mail/genericstable</tt>. Este fichero consiste en dos columnas separadas por espacios en blanco. La primera columna contiene la dirección local, la segunda columna contiene la dirección de correo electrónico que debería utilizarse en su lugar. El fichero podría tener este aspecto: <tscreen><verb> harry harryx@su.proveedor maude maudey@el.proovedor.de.ella root fredx@su.proovedor news fredx@su.proovedor </verb></tscreen> Note que debe haber una entrada para <it/cada/ cuenta de la máquina local, de manera que el correo generado que salga del sistema local lleve, automáticamente, información de cabecera correcta. Por razones de prestaciones, sendmail no utiliza este fichero directamente, utiliza una versión procesada en su lugar. Para generarla utilice el siguiente comando: <tscreen><verb> # makemap -r hash genericstable.db < genericstable </verb></tscreen> Fíjese en que las reglas de reescritura incluidas en <tt/genericstable/ <it/no/ se aplican al correo local ni a los mensajes que recibe desde fuera; el mapeo sólo se utiliza si un mensaje abandona su sistema local a través del servidor <it/inteligente/ de su proovedor de Internet. <sect1>Alias <p> El fichero de alias contiene información adicional de los nombres locales que sólo son válidos para mensajes locales. Esto es útil para cuentas administrativas como <tt/root/ que recibe los mensajes generados automáticamente por el sistema. Un comienzo razonable para <tt>/etc/mail/aliases</tt> podría ser el siguiente fichero: <tscreen><verb> root: fred news: root postmaster: root mail: root www: root nobody: /dev/null MAILER-DAEMON: nobody </verb></tscreen> Este ejemplo reenviará el correo local para los usuarios <tt/root/, <tt/news/, <tt/postmaster/, <tt/mail/, y <tt/www/ a <tt/fred/, mientras que los mensajes para <tt/nobody/ y para <tt/MAILER-DAEMON/ se redirigirán a <tt>/dev/null</tt>. Al igual que el fichero <tt/genericstable/, <tt/aliases/ puede contener <it/cientos/ de entradas. Esto es, podría ser ineficiente que sendmail utilizara el fichero de texto tal y como se describe. El mismo mecanismo utilizado para <tt/genericstable/ se utiliza para <tt/aliases/: se genera una tabla preformateada. En lugar de utilizar <tt/makemap/ directamente, puede utilizar el comando <tt/newaliases/ esta vez. Se encargará automáticamente de lo que sea necesario para que los cambios tomen efecto. <sect>Lectura más profunda <p> La distribución del código fuente de sendmail incluye bastante más documentación. Léala, especialmente el fichero <tt>cf/README</tt>. Si está interesado en profundizar más en las opciones de configuración de sendmail, puede desear conseguir el <it/Bat Book/ de la editorial <it/O'Reilly/: Bryan Costales, Eric Allman, and Neil Rickert: <tt/sendmail/. <it/O'Reilly/, 1993. <sect>Anexo: El INSFLUG <label id="Insflug"> <p> El <it/INSFLUG/ forma parte del grupo internacional <it>Linux Documentation Project</it>, encargándose de las traducciones al castellano de los Howtos, así como de la producción de documentos originales en aquellos casos en los que no existe análogo en inglés, centrándose, preferentemente, en documentos breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de <bf/U/so <bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc. Diríjase a la sede del Insflug para más información al respecto. En élla encontrará siempre las <bf/últimas/ versiones de las traducciones «oficiales»: <tt><htmlurl url="http://www.insflug.org" name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica. Además, cuenta con un sistema interactivo de gestión de fe de erratas y sugerencias en línea, motor de búsqueda específico, y más servicios en los que estamos trabajando incesantemente. Se proporciona también una lista de los servidores réplica (<it/mirror/) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano. En <tt><htmlurl url="http://www.insflug.org/insflug/creditos.php3" name="http://www.insflug.org/insflug/creditos.php3"></tt> cuenta con una detallada relación de las personas que hacen posible tanto esto como las traducciones. ¡Diríjase a <tt><htmlurl url="http://www.insflug.org/colaboracion/index.php3" name="http://www.insflug.org/colaboracion/index.php3"></tt> si desea unirse a nosotros!. «Cartel» Insflug, <tt><htmlurl url="mailto:cartel@insflug.org" name="cartel@insflug.org"></tt>. </article>