LinuxParty
Introducción.
La mayoría de las distribuciones de GNU/Linux incluyen de manera predeterminada Sendmail, un poderoso servidor de correo electrónico ampliamente utilizado alrededor del mundo. Este requiere de una correcta configuración para su mejor aprovechamiento y poder disponer de un nivel de seguridad aceptable.
Es muy común que los administradores inexpertos no se molesten siquiera en establecer un nivel de seguridad apropiado en sus redes locales, y mucho menos en el servidor de correo, el cual ven como un servicio más. Es un error común el configurar Sendmail para que permita enviar correo como sea a cualquier costo. Usualmente este costo significa convertirse en Open Relay, y por lo tanto en un paraíso para personas que se dedican al envío masivo de correo comercial (Spam).
Por Joel Barrios DueñasEsta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
http://www.linuxparatodos.com/
© Copyright 1999-2003 Joel Barrios Dueñas. Se otorga el permiso para copiar, distribuir y modificar este documento bajo los términos de la Licencia de Documentación Libre del GNU, versión 1.1 o cualquier otra posterior publicada por Free Software Foundation; este documento no consta de secciones invariantes ni con portadas o contraportadas. Una copia de la licencia se incluye en la documentación del sitio.
Linux® es una marca registrada de Linus Torvalds, LinuxPPP® es una marca registrada de José Neif Jury Fabre, RedHat® Linux, RPM y GLINT son marcas registradas de RedHat Software, Unix® es marca registrada de X/Open. Apache® es una marca registrada de The Apache Group. Otras marcas registradas son propiedad intelectual de sus autores o propietarios.
La información contenida en este documento se proporciona tal cual es y el autor no asumirá responsabilidad alguna por el mal uso que se haga de esta.
Linux® es una marca registrada de Linus Torvalds, LinuxPPP® es una marca registrada de José Neif Jury Fabre, Red Hat(TM) Linux, RPM y GLINT son marcas registradas de RedHat Software, Unix® es marca registrada de X/Open. Sendmail® es una marca registrada de Sendmail, Inc.
Introducción.
La mayoría de las distribuciones de GNU/Linux incluyen de manera predeterminada Sendmail, un poderoso servidor de correo electrónico ampliamente utilizado alrededor del mundo. Este requiere de una correcta configuración para su mejor aprovechamiento y poder disponer de un nivel de seguridad aceptable.
Es muy común que los administradores inexpertos no se molesten siquiera en establecer un nivel de seguridad apropiado en sus redes locales, y mucho menos en el servidor de correo, el cual ven como un servicio más. Es un error común el configurar Sendmail para que permita enviar correo como sea a cualquier costo. Usualmente este costo significa convertirse en Open Relay, y por lo tanto en un paraíso para personas que se dedican al envío masivo de correo comercial (Spam).
Este manual considera que:
- Usted tiene un dominio propio.
- Que tiene un IP permanente o estática, y no una dinámica, y que se trata de un enlace dedicado, como E1, DSL, T1 o T3, etc. Es decir, usted NO se conecta a Internet por medio de un modem.
- Tiene perfectamente configurada su red local y parámetros de red del servidor.
- Que usted LEERÁ y seguirá al pie de la letra este documento en su totalidad.
- Que usted utiliza Red Hat Linux 7.1 o 7.2 o al menos Sendmail-8.11.6 y xinetd-2.3.3.
Con este manual usted podrá:
- Enviar y recibir correo electrónico.
- Establecer un buen nivel de seguridad.
- Filtrar el molesto Spam, o correo masivo no solicitado, que a muchos nos aqueja a diario, para toda su red local.
Con este manual usted no podrá:
- Convertirse en gurú en GNU/Linux, pero le será de utilidad.
- Acabar con enfermedades, hambre, guerra, miseria, Microsoft® y otros miles de malestares de los que adolece el mundo.
Requerimientos y lista de materiales.
- Un servidor con al menos 32 MB RAM y alguna distribución de GNU/Linux® instalada.
- Deben de estar bien configurado los parámetros de red y un servidor de nombres -DNS-.
- Preferentemente, aunque no indispensablemente, deberá utilizar DOS tarjetas de red. Lo que si será obligatorio es disponer de al menos dos interfaces. Una para acceder a la red local y otra para acceder hacia Internet (una de estas puede ser virtual, o eth0:0, o bien una segunda interfaz real, o eth1).
- Tener instalados los paquetes sendmail, sendmail-cf, m4, make, xinet e imap que vienen incluidos en el CD de instalación o servidor FTP de actualizaciones para la versión de la distribución que usted utilice.
Tómese en consideración que, de ser posible, se debe utilizar la versión estable más reciente de todo el software que vaya a instalar al realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de sendmail anterior a la 8.11.6 se considera como apropiada debido a fallas de seguridad de gran importancia, y ningún administrador competente utilizaría una versión inferior a la 8.11.6. Por favor visite el sito web de su distribución predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad. Ejemplo: para Red Hat Linux 7.1 y 7.2 hay paquetería de actualización en los siguientes enlaces:
- ftp://updates.redhat.com/7.1/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.1
- ftp://updates.redhat.com/7.2/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.2
Procedimientos.
Preparativos.
Lo primero será establecer que es lo que tenemos en la red local y que es lo que haremos con esto. Determine que máquinas de su red local, específicamente las direcciones IP, necesitan poder enviar y recibir correo electrónico y cuales NO deben hacerlo.
Determine como desea recuperar los mensajes de correo electrónico que arriben al servidor. POP3 o IMAP.
POP3: Es el protocolo de recuperación de correo electrónico más utilizado en la actualidad. Permite recuperar el correo pero este se almacenará localmente en el disco duro de las máquinas de los usuarios IMAP: Este protocolo almacena el correo electrónico, y permite la creación de carpetas de usuario, en el servidor. De modo tal, los usuarios pueden acceder desde cualquier parte del mundo a su buzón de correo y carpetas personales. IMAP también facilita la utilización de webmails (servicios de correo basado sobre web). . |
Determine el nombre de todos los posibles nombres o aliases que tenga su servidor. Ejemplo: mi-dominio.org, mail.mi-dominio.org, servidor.mi-dominio.org, mi-red-local-org, mail.mi-red-local.org, etc.
Configure sus dos tarjetas de red, una para la red local con la IP inválida y otra para la dirección IP real. Puede hacerlo utilizando el procedimiento descrito en el manual "Cómo - configurar correctamente los parámetros de red".
Verificando parámetros de red.
Debe de definirse el nombre de la máquina que funcionará como servidor de correo. Normalmente utilizaremos el esquema nombre_maquina.nombre_dominio. Un ejemplo del nombre de la máquina servidor sería linux.linuxparatodos.com o servidor.mi-dominio.org.mx. Así que asegúrese de que esto se encuentra perfectamente definido en /etc/sysconfig/network y /etc/hosts:
Para /etc/sysconfig/network, es decir, el nombre que asignamos a la máquina, correspondería lo siguiente:
NETWORKING=yes |
Para /etc/hosts, es decir, la información de los hosts y las direcciones IP, correspondería lo siguiente:
# Primero, verificamos que las direcciones IP del |
Además de configurar correctamente un DNS que defina bien los DNS o servidores de nombres de dominios correspondientes. Esto debe hacerlo en el archivo /etc/resolv.conf, de un modo similar al siguiente:
search mi-dominio.org.mx |
Confirmando la instalación de Sendmail.
Es importante tener instalados los paquetes sendmail y sendmail-cf, ya que utilizaremos el servidor de correo Sendmail para el envío de nuestros mensajes y filtrado de correo masivo no solicitado -Spam-, y el paquete imap, mismo que nos permitirá utilizar el servicio de IMAP y POP3. Para asegurarse de esto, se puede utilizar la siguiente línea de comando:
rpm -q sendmail sendmail-cf imap |
Esto debe devolvernos las versiones de sendmail, sendmail-cf e imap que se tienen instaladas. Si no fuese así, debemos cambiar a root, si aún no lo hemos hecho, y proceder a instalar estos paquetes. Introduzca el CDROM de su distribución y siga el siguiente procedimiento:
mount /mnt/cdrom |
Debe instalar sendmail-cf o no le será posible compilar los archivos necesarios para configurar Sendmail. El paquete imap, el cual contiene el daemon para los protocolo POP3, es el que nos permitirá recuperar el correo desde el servidor en el resto de las máquinas que integren la red local con cualquier cliente de correo electrónico.
Configurando Sendmail.
Antes de continuar, debemos editar el fichero /etc/mail/local-host-names, en el cual deberemos de listar todos y cada uno de los aliases que tenga el servidor que estamos configurando, así como los posibles sub-dominios. Es decir, todos los dominios para los cuales estaremos recibiendo correo en un momento dado.
# Incluya aquí todos los dominios para los que |
Procederemos entonces a modificar el archivo /etc/mail/sendmail.mc, con previo respaldo del original, a fin de preparar la configuración del servidor de correo.
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.default |
Por defecto Sendmail solo permitirá enviar correo solo desde la interfaz loopback (127.0.0.1), es decir, desde el mismo servidor. Si queremos poder enviar correo desde las máquinas de la red local comente la línea o bien, si tiene varias, añada las interfaces desde las cuales se quiere que escuche peticiones sendmail y omita las que no deben, como sería una red loal secundaria con restricciones.
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') |
Si queremos filtrar Spam de manera eficiente, la mejor manera de empezar a hacerlo es rechazando correo proveniente de dominios NO RESUELTOS, es decir dominios que no están registrados en un DNS y que por lo tanto SON inválidos. Para tal fin, a menos que se requiera lo contrario, es necesario mantener comentada la siguiente línea:
dnl FEATURE(`accept_unresolvable_domains')dnl |
Es necesario establecer que mi-dominio.org.mx corresponderá a la máscara que utilizaremos para todo el correo que emitamos desde nuestro servidor. Debe, por tanto, añadirse una línea justo debajo de MAILER(procmail)dnl y que va del siguiente modo:
MASQUERADE_AS(mi-dominio.org.mx)dnl |
Todo en conjunto, ya modificado, debería de quedar del siguiente modo (NO modificar el orden de las líneas):
divert(-1) |
Luego se procesa con el siguiente comando para generar /etc/sendmail.cf:
m4 /etc/mail/sendmail.mc > /etc/sendmail.cf |
Abrimos ahora el archivo /etc/mail/access y agregamos algunas líneas para definir quienes podrán hacer uso de nuestro servidor de correo para poder enviar mensajes:
# Por defecto, solo se permite enviar correo desde localhost... |
En este archivo también puede agregar las direcciones de correo electrónico que desee bloquear, como son las de quienes envían correo masivo no solicitado -Spam-. Si le desea ahorrarse algo de tiempo ingresando direcciones y servidores a bloquear, descargue el siguiente archivo que ya incluye una buena colección de direcciones de correo electrónico y conocidos servidores que generan Spam:
http://www.linuxparatodos.com/linux/access.txtAl concluir, debemos también compilar este archivo para generar otro en formato de base de datos a fin de ser utilizado por Sendmail:
cd /etc/mail |
O bien puede ejecutar lo siguiente:
makemap hash /etc/mail/access.db < /etc/mail/access |
Será de utilidad designar un alias a la cuenta de correo de root a fin de recibir los mensajes generados por el sistema en una cuenta común de usuario. Abra el archivo /etc/aliases, en donde al final encontrará la siguientes líneas:
# Person who should get root's mail |
Esto corresponde a la cuenta de correo local hacia donde se redireccciona el correo de root. Descomente la última línea y asigne el nombre de la cuenta de usuario que utiliza normalmente:
# Person who should get root's mail |
A fin de que este nuevo alias surta efecto y pueda ser utilizado por Sendmail debe utilizar el comando newaliases:
/sbin/newaliases |
Terminados los detalles de la configuración, reinicie sendmail del siguiente modo y tendrá listo un servidor de correo que podrá utilizar para enviar mensajes para toda su red local utilizando el servidor SMTP de su proveedor de servicios:
/etc/rc.d/init.d/sendmail restart |
Generalmente Sendmail está incluido entre los servicios que de forma predeterminada se inician con el sistema. Si por alguna razón Sendmail no estuviese habilitado, ejecute lo siguiente a fin de habilitar sendmail en los niveles de corrida 3, 4 y 5:
/sbin/chkconfig --level 345 sendmail on |
Si está funcionando un contrafuegos o firewall, recuerde que debe de estar abierto el puerto 25, de otro modo el correo saldría pero no entraría. Añada o verifique que esté presente una línea en el guión de firewall similar a la siguiente:
#SMTP |
Habilitando los servicios POP3 e IMAP
Si usted utiliza Red Hat Linux 7.x o versiones posteriores o equivalentes, debe saber que inetd ha sido sustituido por xinetd, y utiliza métodos de configuración muy distintos.
Puede habilitar los servicios ipop3 (POP3 tradicional, autenticación en texto plano), pop3s (POP3 seguro, autenticación con criptografía), imap (IMAP tradicional, autenticación en texto plano) e imaps (IMAP seguro, autenticación con criptografía). Utilice aquellos que consideré como más apropiados para su red local de acuerdo a las capacidades de los clientes de correo electrónico utilizados. Tome en cuenta que la autenticación por medio de texto plano es definitivamente un método inseguro, y siempre serán mejor usar los servicios que permitan establecer conexiones seguras.
Puede habilitar los servicios de manera automática e inmediata ejecutando los siguientes comandos (solo habilite aquellos que realmente necesite):
/sbin/chkconfig ipop3 on |
También puede habilitarlos manualmente con un editor de texto, lo cual es sugerido a fin de habilitar opciones adicionales, como direcciones IP específicas a las cuales se les estaría permitido cierto servicio. Acceda a al directorio /etc/xinet.d/ y edite los fichero ipop3, pop3s, imap e imaps, según lo requiera. Estos requerirán edite una sola línea para habilitar el servicio:
service pop3 |
Lo mismo aplica para el protocolo IMAP e IMAPS.
Hecho lo anterior, es necesario reiniciar el daemon xinetd con la siguiente línea de comando:
/etc/rc.d/init.d/xinetd restart |
¿Que hacer con el Spam?
Sin duda alguna una de las cosas más molestas de Internet es el correo comercial no solicitado, comúnmente llamado Spam. Las empresas que incurren en esta forma de marketing no tienen el mínimo respeto por los demás, y saturan cientos de miles de buzones de correo a diario. Las empresas que incurren en este tipo de promoción deberían ser boicoteadas y los responsables de enviar el correo deberían ser apedreados públicamente. Veamos pues un método civilizado para combatirlos.
No importa cuanto se queje uno, o cuantos mensajes con insultos y llamada telefónicas reclamo se hagan a las oficinas de las empresas que incurren en esta poco ética forma de promoción, estas gentes no les interesa la opinión de a quienes ellos perjudican haciendo malgastar el ancho de banda o bloqueando servidores de correo. Ellos compran y hacen uso sin autorización de discos con cientos de miles de direcciones correo electrónico con un solo objetivo: promocionar como sea productos y servicios, en su mayoría, inútiles.
El combate al Spam requiere de al colaboración de los administradores de las redes, quienes deben atender y dar seguimiento a las quejas y tomar las acciones ejemplares pertinentes. Los usuarios deben participar reportando incidentes a los administradores de las redes involucradas.
Empresas que, por alguna razón, y gracias a lagunas legales, recurren al envío de Spam, pueden ser bloqueadas por completo añadiendo una entrada que rechace correo generado por los servidores de empresas que incurran en Spam. esto se hace editando /etc/mail/access y generando /etc/mail/access.db. Ejemplo:
part.com.mx REJECT |
Acto seguido se ejecuta el siguiente comando:
makemap hash /etc/mail/access.db < /etc/mail/access |
Y se reinicia Sendmail. También pueden utilizarse listas de este tipo, como la que mantenemos en Linux Para Todos. En adelante todo correo enviado desde los dominios anteriormente mencionados, será rechazado por completo para toda nuestra red.
Otra opción más del administrador es bloquear también el accesos a los dominios involucrados a través de IPChains o IPTables. Esto no impedirá que llegue correo, pero servirá para boicotear a las empresas que utilizan Spam para promocionarse, al no permitir el acceso a sus redes desde nuestras redes locales.
Para determinar la dirección IP de un dominio en particular, solo baste ejecutar el comando host, el cual devolverá la dirección IP y quizá algo de información adicional, como si se trata del alias de otro dominio.
host solopromos.com.mx |
Una vez determinadas las direcciones IP problemáticas, solo hay que añadir algunas líneas en el guión de Firewall que se este utilizando de modo tal que queden bloqueadas de manera permanente, por lo menos desde nuestra red local. Ejemplo:
/sbin/iptables -A INPUT -s 216.219.236.81 -d 0/0 -j DROP |
Mientras más usuarios y administradores participen reportando y castigando el Spam, correspondientemente, esta molestia desaparecerá eventualmente, o al menos haremos saber a quienes se promocionan de este modo que NO NOS AGRADA lo que hacen.
El Servidor de Nombres (DNS)
Si el servidor DNS se localiza en otro servidor y es administrado por otras personas, solo bastará con informar al administrador de dicho servidor de nombres la existencia del nuevo servidor de correo electrónico, a fin de que se de de alta la entrada correspondiente en el DNS y a su vez a fin de que el NIC lo tome en cuenta en el siguiente ciclo de refresco.
Si desea configurar DNS propio, y dar éste de alta con el NIC, se necesitará tener instalados los siguientes paquetes: bind, bind-utils y caching-nameserver. Todos, seguramente, vienen incluidos en alguno de los CD de instalación. Note por favor que no es conveniente utilizar versiones anteriores a bind-9.1.3, debido a serias fallas de seguridad. Consulte en el sitio web de su distribución para verificar si hay paquetes de actualización disponibles.
- ftp://updates.redhat.com/7.1/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.1
- ftp://updates.redhat.com/7.2/en/os/i386/, si posee alguna distribución basada sobre Red Hat(TM) Linux 7.2
Los siguientes corresponderían a los contenidos para los ficheros de zona requeridos para la red local y por el NIC con el que se haya registrado el dominio. Note por favor que en las zonas de reenvío siempre se especifica al menos un Mail Exchanger (MX). Solo necesitará sustituir nombres y direcciones IP, y quizá añadir nuevas entradas para complementar su red local.
# /var/named/mi-red-local.org.mx.zone |
# /var/named/1.168.192.in-addr.arpa.zone |
# /var/named/mi-dominio.org.mx.zone |
# /var/named/1.243.148.in-addr.arpa.zone |
Recuerde que cada vez que haga algún cambio en algún fichero de zona, deberá cambiar el número de serie (serial) a fin de que tomen efecto los cambios de inmediato cuando se reinicie el daemon named, ya que de otro modo tendría que reiniciar el equipo, algo poco conveniente.
options { |
Al terminar de editar todos los ficheros involucrados, solo bastará iniciar el servidor de nombres.
/etc/rc.d/init.d/named start |
Si queremos que el servidor de nombres quede añadido entre los servicios en el arranque del sistema, deberemos ejecutar lo siguiente a fin de habilitar named en los niveles de corrida 3, 4 y 5:
/sbin/chkconfig --level 345 named on |
Configuración de los clientes de correo.
Considerando que tiene bien configurada su red local y que ha seguido este manual al pie de la letra, sea la PC que sea en su red local, puede configurar mail.mi-red-local.org.mx o mail.mi-dominio.org.mx como servidor de correo saliente o SMTP y servidor de correo entrante, POP3 o imap, en el cliente de correo que utilice.
Una copia puede ver en:
http://www.linuxdata.com.ar/index.php?idmanual=sendmailconf.htm&manuale=1
Por si faltara algún {, /, etc...