Sendmail en FreeBSD
Autor: Julio Merino (aka Slink)
Sendmail es el programa de transporte de correo (MTA) más usual en todos los sistemas *BSD y muchas distribuciones Linux. Es por ello que voy a explicaros aquí como configurarlo correctamente en FreeBSD, un proceso bastante sencillo debido a las facilidades que nos proporciona este sistema operativo. Estructura de la configuraciónLos archivos de configuración de Sendmail que nosotros modificaremos se situan en el directorio /etc/mail. Estos archivos se complementan de muchos otros incluidos dentro de /usr/share/sendmail/cf, pero que no deberemos modificar nunca.
Sendmail se configura a partir de unos archivos con una sintáxis algo compleja: los que tienen extensión .cf en esos directorios. Con las últimas versiones de este MTA, el proceso se simplifica en gran medida ya que nosotros no deberemos tocar estos archivos. En su lugar, editaremos los ficheros con extensión .mc que, una vez procesados, nos darán los anteriores. De hecho, los archivos .mc se forman a partir de macros que se expanden en sus correspondientes archivos .cf, dando lugar a un archivo de configuración realmente completo. El archivo que realmente leerá Sendmail es el /etc/mail/sendmail.cf. Los otros archivos con extensiones parecidas en el directorio de configuración no serán usados directamente. Creación de nuestro .mcPara crear nuestro archivo de configuración nos basaremos en el que incluye FreeBSD por defecto. Lo más recomendable es que llamemos a nuestro archivo con el nombre de nuestra máquina, por si quisieramos mantener varios diferentes. Procederemos a hacer lo siguiente: # cd /etc/mail # cp freebsd.mc klamath.mc El siguiente paso es indicarle a FreeBSD cuál es nuestro archivo de configuración para que pueda automatizar algunos pasos más adelante. Para ello, editaremos nuestro /etc/make.conf y añadiremos lo siguiente: SENDMAIL_MC=/etc/mail/klamath.mc Manejo del archivo .mcAntes de proceder a la configuración en sí es necesario comentar cómo convertiremos nuestro archivo .mc en su correspondiente .cf y cómo indicaremos a Sendmail que lo use. El primer paso obvio es realizar la conversión por lo que haremos: /etc/mail# make Con esto, FreeBSD nos dejará un archivo klamath.cf listo para usar. Ahora es necesario hacer que Sendmail lo use, copiándolo sobre sendmail.cf. El proceso podemos automatizarlo así: /etc/mail# make install Por último, hay que reiniciar el MTA. Nada más fácil que hacer: /etc/mail# make restart Retoques básicosNo pretendo detallar en este artículo todas las posibles opciones de Sendmail, aunque si voy a daros un par de consejos útiles. Para más información, leeros el /usr/share/sendmail/cf/README. SmarthostMuchos de nosotros disponemos de un servidor de correo de salida por parte de nuestro ISP. Si queremos usarlo, en lugar de distribuir nosotros mismos el correo, bastará con añadir lo siguiente a nuestro archivo de configuración (klamath.mc), substituyendo el nombre del servidor: define(`SMART_HOST', `smtp.menta.net') ProcmailSi tenemos el programa procmail instalado, podemos indicarle a Sendmail que lo use por defecto para distribuir el correo local. Para ello, usaremos lo siguiente en nuestra configuración: FEATURE(local_procmail) GenericstableLa última función que quería comentaros es el genericstable. Ésta nos ayudará a reescribir el campo From: de los correos salientes para que sea válido. Lo más habitual es que cuando enviemos correo local dicho campo permaneza intacto, con el nombre de servidor de nuestra máquina; esto facilita la respuesta de correos locales. Por otro lado, también querremos que cuando enviemos correo saliente a una dirección de internet fuera de nuestra máquina, el campo From: se vea afectado y reescrito adecuadamente para que la gente pueda respondernos a nuestra dirección de correo de internet (normalmente la de nuestro ISP). Para conseguir esto, añadiremos lo siguiente al archivo de configuración: FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') Y crearemos los dos archivos aquí referidos. Empezaremos por el /etc/mail/genericsdomain, por ser el más simple. Este archivo indica qué dominio es considerado local y ayudará al MTA a distinguir entre correos locales y externos. Haremos lo siguiente: /etc/mail# hostname > genericsdomain Una vez hecho esto, tendremos que crear la tabla de conversiones de direcciones. Editaremos el /etc/mail/genericstable, y añadiremos las direcciones de correo del siguiente modo: # usuario local dirección de internet juli juli Podemos añadir tantas direcciones como queramos y el comentario podéis quitarlo si no os gusta. Es importante destacar que debemos convertir este archivo en una base de datos binaria cada vez que lo modifiquemos. Para ello haremos: /etc/mail# makemap hash genericstable.db < genericstable Una vez reiniciado Sendmail todo deberá funcionar correctamente y podremos enviar correo ¡hasta con el comando mail!. Configuración de ejemploHe decidido incluir aquí el archivo de configuración completo que uso yo en mi máquina para que os hagáis una idea de cómo funciona todo. Cabe destacar que el orden de los diferentes comandos es, en muchos casos, importante. dnl dnl Archivo de configuración para Sendmail dnl divert(0) OSTYPE(bsd4.4) DOMAIN(generic) FEATURE(access_db, `hash -o /etc/mail/access') FEATURE(local_lmtp) define(`PROCMAIL_MAILER_PATH', `/usr/local/bin/procmail') FEATURE(local_procmail) FEATURE(mailertable, `hash -o /etc/mail/mailertable') FEATURE(relay_based_on_MX) FEATURE(virtusertable, `hash -o /etc/mail/virtusertable') FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') define(`SMART_HOST', `smtp.menta.net') define(`confCW_FILE', `-o /etc/mail/local-host-names') define(`confMAX_MIME_HEADER_LENGTH', `256/128') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy') MAILER(local) MAILER(smtp) Para terminarEspero que no os haya resultado demasiado complejo. Si todo os funciona correctamete, tendréis uno de los MTAs más potentes y completos bajo vuestro control ;) Si encontráis alguna incorreción, ya sabéis, ¡comunicarmelo cuanto antes! |