6. Sistema de configuraci�n M4

6.1. Motivaci�n

Si el lector tuvo curiosidad de listar el archivo "cf", habr� notado seguramente que �ste tiene una sintaxis muy poco intuitiva. Este problema no ha pasado desapercibido para los desarrolladores de Sendmail (aunque la cura quiz� haya resultado peor que la enfermedad:)

A fin de facilitar la configuraci�n de Sendmail para los usuarios ocasionales y los administradores en general, existe un mecanismo complementario que evita la escritura y modificaci�n directa del archivo "cf". Este mecanismo consiste en escribir un archivo relativamente sencillo usando la sintaxis del lenguaje "M4", el cual se proporciona en pr�cticamente todos los sistemas Unix/Linux (a veces como software opcional.)

Mediante este sistema, el usuario crear� (o modificar�) un archivo relativamente breve, el cual se traducir� en muchas l�neas del archivo "cf".

Lo cierto es que es absolutamente impr�ctico escribir "desde cero" un archivo "cf" medianamente utilizable, as� que el m�todo M4 es una opci�n casi obligatoria.

6.2. Regenerando el archivo "cf"

Antes de hacer modificaciones, es recomendable conocer c�mo se gener� el archivo "cf" proporcionado por el sistema. Normalmente �ste proviene de un archivo tipo "M4". Lamentablemente esto no es v�lido en todos los casos, y las rutas de los archivos involucrados son muy variables.

En RedHat 8 el archivo "cf" distribuido (/etc/mail/sendmail.cf) se puede regenerar en cualquier momento a partir del archivo (/etc/mail/sendmail.mc) que usa la sintaxis "M4". Esto se puede hacer con el siguiente comando:

# cd /etc/mail
# m4 sendmail.mc > sendmail.cf
* NOTA: Aseg�rese de sacar una copia al archivo "cf" antes de hacer esto!

En RedHat 7 la secuencia es parecida, aunque los directorios difieren:

bash# cd /usr/share/sendmail-cf/cf
bash# m4 redhat.mc > /etc/sendmail.cf

En otros sistemas Unix/Linux (incluso RedHat en versiones anteriores) el archivo sendmail.mc puede tener un nombre distinto y una ubicaci�n distinta, y habr� que ver la documentaci�n respectiva. Por ejemplo, en RedHat 7 se llamaba redhat.mc y se ubicaba en /usr/share/sendmail-cf/cf.

Incluso puede ser que este archivo simplemente no exista y haya que generar uno nuevo. En ese caso Ud. deber� ubicar primero el directorio "cf" de Sendmail y crear un archivo (le llamaremos prueba.mc) tal como:

include(`../m4/cf.m4')
OSTYPE(hpux10)dnl
MAILER(local)dnl
MAILER(smtp)dnl
La directiva OSTYPE requiere que Ud. especifique su versi�n de sistema operativo (en el ejemplo, HP/UX V.10.) Para ver los sistemas disponibles, vea el directorio sendmail-cf/ostype o cf/ostype. En mi caso:
bash# ls ../ostype/
aix2.m4        bsdi2.0.m4   irix4.m4     powerux.m4
aix3.m4        bsdi.m4      irix5.m4     ptx2.m4 
aix4.m4        darwin.m4    irix6.m4     qnx.m4
aix5.m4        dgux.m4      isc4.1.m4    riscos4.5.m4 
altos.m4       domainos.m4  linux.m4     sco3.2.m4   
amdahl-uts.m4  dynix3.2.m4  maxion.m4    sco-uw-2.1.m4
aux.m4         gnu.m4       mklinux.m4   sinix.m4    
bsd4.3.m4      hpux10.m4    nextstep.m4  solaris2.m4 
bsd4.4.m4      hpux11.m4    openbsd.m4   solaris2.ml.m4
bsdi1.0.m4     hpux9.m4     osf1.m4      solaris2.pre5.m4
Todo esto requiere que se trabaje en el subdirectorio sendmail-cf/cf o cf/cf. A continuaci�n, ejecutar m4:
bash# m4 prueba.mc > /etc/sendmail.cf

Volviendo a Linux RedHat, los archivos "M4" usados por Sendmail se proporcionan en el paquete "sendmail-cf". Obviamente requerir� tambi�n el paquete "m4" para poder usarlo. En otros sistemas Unix/Linux el software "M4" puede ser opcional o parte de las herramientas de desarrollo.

En Linux RedHat 8.0 y superiores, es tambi�n posible regenerar el archivo "submit.cf" a partir de:

# cd /etc/mail
# m4 submit.mc > submit.cf

6.3. Configuraci�n con M4

El sistema M4 de Sendmail permite generar configuraciones para distintos prop�sitos as� como alterar opciones bastante puntuales. A modo de ejemplo, el par�metro que controla el "tiempo de alerta" de un mensaje en cola (no se preocupe si no entiende esto, es s�lo un ejemplo), se configura con M4 mediante una l�nea como la siguiente:

define(`confTO_QUEUEWARN',`2h')
Lo cual se traduce en exactamente la siguiente l�nea en el archivo "cf" generado:
O Timeout.queuewarn=2h
T�ngase cuidado dentro del archivo "M4" de emplear las comillas adecuadas para cada caso (obs�rve que se han usado ambos tipos:
 ` y '

En resumen, mediante la sintaxis (simple) de "M4", se puede regenerar un archivo en la sintaxis (compleja) del "cf". Recu�rdese que al final, el programa Sendmail s�lo utilizar� el archivo "cf".

En lo que sigue, presentaremos la configuraci�n de Sendmail empleando ambos m�todos cuando sea posible, pero se preferir� el m�todo M4. Como se indic�, algunas directivas del m�todo "M4" se traducen a una gran cantidad de complejas directivas del archivo "cf", el cual resulta impr�ctico.