roessler@guug.de
davefx@bigfoot.com
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 una dirección.
Asumiré también que ya ha instalado una versión bastante reciente de
sendmail
, realizado por Eric Allman (la versión más reciente, al
escribir estas líneas, era la 8.8.8
Nota del editor: a día
de la revisión, la última versión disponible es la 8.9.3
; debería
actualizarse. De hecho, si hay un programa que tendría que mantener
actualizado, es éste...
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:
La configuración que planeamos tiene dos metas principales:
Para alcanzar esto, haremos uso del la opción genericstable
de
sendmail
.
Colocaremos todos los ficheros de configuración de sendmail
en un
directorio aparte bajo /etc
: /etc/mail
. Normalmente,
sendmail
esperará que esos ficheros residan directamente bajo
etc
. Para evitar problemas, /etc/sendmail.cf
debería ser un
enlace simbólico a /etc/mail/sendmail.cf
.
Los siguientes ficheros poblarán /etc/mail
:
aliases
- contiene direcciones locales adicionales.genericsdomain
- contiene alguna información acerca de la
configuración de su máquina local.genericstable
- contiene las reglas reales de reescritura.sendmail.cf
- fichero de configuración de sendmail.sendmail.mc
- la fuente de sendmail.cf
.Algunos de estos ficheros serán acompañados por ficheros .db
, que
contienen bases de datos configuradas para el uso directo de
sendmail
.
Asumimos que la parte cf
del árbol de código fuente de sendmail
reside bajo un directorio llamado /usr/lib/sendmail.cf
. 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.
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 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 Bat Book de la
editorial O'Reilly.
En lugar de crear a mano estas reglas, confiaremos en el procesador de
macros 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 sendmail.mc
:
include(/usr/lib/sendmail.cf/m4/cf.m4)
VERSIONID(`sendmail.mc - roessler@guug.de')
OSTYPE(debian)
define(`ALIAS_FILE',`/etc/mail/aliases')
Al comienzo, se incluye 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 OSTYPE
se
utiliza para dar algunas configuraciones por defecto muy útiles. Si no
utiliza un sistema Debian, reemplace la palabra debian
por
linux
. 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
genericstable
, y dónde encontrar los ficheros de configuración
necesarios para usarla:
FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
La característica masquerade_envelope
le dice a sendmail que aplique
la cabecera reescribiendo el 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 generics*
se explicarán más abajo.
Ahora, debemos definir un, llamémosle así, servidor «inteligente»
(smart-host)
, 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:
define(`SMART_HOST',`mensajes-salientes.su.proveedor')
Reemplace 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 cartero que son requeridas por sendmail para averiguar cómo manejar varios tipos de correo:
MAILER(local)
MAILER(smtp)
Para generar el fichero sendmail.cf
a partir de este
sendmail.mc
, teclee los siguientes comandos (como root):
# m4 sendmail.mc > _sendmail.cf
# mv -f _sendmail.cf sendmail.cf
Fíjese en que la técnica de escribir las salidas 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.
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 /etc/mail/genericsdomain
Para conseguir
el nombre completo de su máquina, teclee el siguiente comando:
$ hostname -f
Ahora, vayamos con la tabla de reescritura propiamente dicha:
/etc/mail/genericstable
. 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:
harry harryx@su.proveedor
maude maudey@el.proovedor.de.ella
root fredx@su.proovedor
news fredx@su.proovedor
Note que debe haber una entrada para 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:
# makemap -r hash genericstable.db < genericstable
Fíjese en que las reglas de reescritura incluidas en genericstable
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 inteligente de su proovedor de Internet.
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 root
que recibe los mensajes generados
automáticamente por el sistema.
Un comienzo razonable para /etc/mail/aliases
podría ser el
siguiente fichero:
root: fred
news: root
postmaster: root
mail: root
www: root
nobody: /dev/null
MAILER-DAEMON: nobody
Este ejemplo reenviará el correo local para los usuarios root
,
news
, postmaster
, mail
, y www
a fred
, mientras
que los mensajes para nobody
y para MAILER-DAEMON
se redirigirán
a /dev/null
.
Al igual que el fichero genericstable
, aliases
puede contener
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 genericstable
se utiliza para aliases
: se genera
una tabla preformateada. En lugar de utilizar makemap
directamente,
puede utilizar el comando newaliases
esta vez. Se encargará
automáticamente de lo que sea necesario para que los cambios tomen efecto.
La distribución del código fuente de sendmail incluye bastante más
documentación. Léala, especialmente el fichero cf/README
.
Si está interesado en profundizar más en las opciones de configuración de
sendmail, puede desear conseguir el Bat Book de la editorial
O'Reilly: Bryan Costales, Eric Allman, and Neil Rickert:
sendmail
. O'Reilly, 1993.
El INSFLUG forma parte del grupo internacional Linux Documentation
Project, 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 COMOs y PUFs (Preguntas de Uso
Frecuente, las FAQs. :)
), etc.
Diríjase a la sede del Insflug para más información al respecto.
En élla encontrará siempre las últimas versiones de las traducciones
«oficiales»:
www.insflug.org
. 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 (mirror) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano.
En
http://www.insflug.org/insflug/creditos.php3
cuenta con una
detallada relación de las personas que hacen posible tanto esto como las
traducciones.
ˇDiríjase a
http://www.insflug.org/colaboracion/index.php3
si desea
unirse a nosotros!.
«Cartel» Insflug,
cartel@insflug.org
.