Envíos locales
Sendmail normalmente determina si un mensajes es local cuando la dirección de destino contiene sólo un nombre de usuario (por ejemplo, "diego".) Asimismo, cuando la dirección de destino contiene un host que coincide con el "hostname" del servidor. Por ejemplo, en la dirección "diego@correo.caligula.net" el host especificado (lo que sigue a la @) es "correo.caligula.net"; si este coincide con el hostname del computador, entonces el mensaje debe ser considerado local.
Una excepción (extremadamente común) a lo último consiste en forzar que ciertas direcciones sean tratadas como locales. Para esto, el usuario generalmente configurará el archivo /etc/mail/local-host-names con los nombres de host considerados "locales" o "sinónimos" del host local. Por ejemplo, para que el mensaje con destino "diego@neron.org" sea también considerado local, habría que incluir en el archivo /etc/mail/local-host-names:
|| neron.org ||
Esto es muy importante, puesto que típicamente las organizaciones deciden utilizar una dirección de email terminada en "@dominio", donde "dominio" casi nunca coincide exactamente con el hostname del servidor. De no configurarse el archivo local-host-names, todos los mensajes que lleguen al servidor con esta dirección serían considerados no locales, y por tanto serían rechazados.
En otros sistemas el nombre del archivo de configuración local-host-names puede variar. Para averiguar o verificar esto, debemos consultar la documentación o en último caso el archivo "cf":
|| # grep "^Fw" /etc/mail/sendmail.cf
Fw/etc/mail/local-host-names ||
En versiones anteriores de Sendmail, este archivo se denominaba /etc/sendmail.cw.
Si se dispone del archivo "M4" que dio origen al "cf", deberíamos buscar allí una línea tal como:
|| FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl ||
En algunos casos (no en RedHat), esta funcionalidad puede no estar definida y se debe activar.
Sin embargo, esta configuración también puede hacerse en el mismo archivo "cf" con el comando "class-macro-w" (clase w.) Por ejemplo, las siguientes líneas muestran que las direcciones terminadas en "@localhost" y "@localhost.localdomain" también son consideradas locales.
|| # grep "^Cw" /etc/mail/sendmail.cf
Cwlocalhost.localdomain
Cwlocalhost ||
En otras palabras, la "clase w" se puede considerar un "array" que contiene los nombres de las direcciones consideradas "locales". Esta clase se puede configurar en el archivo "cf" mediante el comando "C" (seguido por el nombre de la clase, o sea "Cw") o mediante un archivo externo (definido por el comando "F", en nuestro caso "Fw".)
Los envíos locales conllevan a que los mensajes sean almacenados en la "casilla de correo" del usuario destinatario. El usuario deberá extraer estos mensajes con su programa "cliente", posiblemente mediante los protocolos IMAP o POP como se verá después.
La casilla de correo (inbox) es simplemente un archivo cuyo nombre coincide con el del usuario y se ubica en el directorio /var/spool/mail (como siempre, esto puede variar en otros Unix.) Como veremos, Sendmail no escribe directamente en este archivo y por tanto no es parte de su configuración.
Definición del envío local
Como se indicó, el envío local conlleva a que el mensaje sea guardado en el archivo "inbox" o "casilla de correo". Sin embargo, Sendmail no realiza directamente este trabajo, sino que invoca a un programa auxiliar para esta tarea (aparentemente sencilla.)
Esto se configura en el archivo "cf" con la definición "Mlocal" (mailer local.) En el archivo "cf" de RedHat 8.0, esta sección luce así:
|| Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9,
S=EnvFromL/HdrFromL,
R=EnvToL/HdrToL,
T=DNS/RFC822/X-Unix,
A=procmail -t -Y -a $h -d $u ||
Las líneas que se inician con espacios o tabuladores se consideran la continuación de la anterior, por tanto, el extracto mostrado arriba debe considerarse una sola línea.
Como se aprecia, Sendmail utiliza un programa auxliar llamado /usr/bin/procmail para el delivery local. En muchos sistemas Unix el programa usado es /bin/mail. No profundizaremos más sobre esto por ahora, pero en general "procmail" es mucho más flexible y eficiente que las alternativas tradicionales.