Cómo configurar Sendmail y Fetchmail para intranets y redes
caseras.
V. 2.1.
Joel Barrios Dueñas
http://www.linuxparatodos.com/linux/formulario.html
http://www.linuxparatodos.com/
-
Copyright.
-
© 2001 Linux Para Todos. Se permite la libre distribución
y modificación de este documento por cualquier medio y formato mientras
esta leyenda permanezca intacta con el documento y la distribución
y modificación se hagan de de acuerdo con los términos de
la Licencia Pública General GNU
publicada por la Free Software Fundation; sea la versión 2 de la
licencia o (a su elección) cualquier otra posterior. La información
contenida en este documento y los derivados de éste se proporcionan
tal cual son y los autores no asumirán responsabilidad alguna si
el usuario o lector hace mal uso de éstos.
-
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. Fetchmail® es una marca registrada de Eric S.
Raymond. Sendmail® es una marca registrada de Sendmail, Inc.
Introducción.
Recuperar el correo electrónico desde Linux® no es problema
si se utilizan clientes de correo electrónico como el mismo Netscape®
u otros más. Sin embargo, cuando se tiene una o bien distintas PCs
conectadas en una pequeña red, con distintas cuentas de correo electrónico
y distintos usuarios, el siguiente procedimiento puede resultar de mucha
utilidad.
Este manual considera que:
-
Usted se conecta a Internet por medio de un modem con un proveedor de servicios.
-
Que no tiene un IP permanente, sino uno dinámico, o que no se trata
de un enalce dedicado, como DSL, T1 o T3. Es decir, se conecta a Internet
por medio de un ISP.
-
Que usted posee al menos una cuenta de correo electrónico POP3 con
al menos un proveedor de servicios.
-
Usted se encuentra en una pequeño o mediana oficina o negocio o
el hogar.
-
Tiene perfectamente configurada su red local, si esto aplica, y que esta
es clase C.
-
Que usted LEERÁ y seguirá al pie de la letra este
documento en su totalidad.
-
Que ha configurado correctametne su red de acuerdo a como se sugiere en
Guía
rápìda de IP Masquerading por Max de Mendizabal localizado
en http://www.acer.com.mx/~mmendiz/guia-rapida-ip-masquerading-en-redhat-linux.html.
Con este manual usted podrá:
-
Recuperar sus mensajes de múltiples cuentas POP2, POP3 o IMAP y
concentrarlos en su buzón de correo local en /var/spool/mail/su_login.
-
Enviar a la cola de envíos cuantos mensajes se generen en su PC
o bien en la red local para ser enviados automáticamente una vez
que se conecte a Internet.
-
Recuperar sus mensajes de correo electrónico desde una sola cuenta
acccediendo al servidor de correo de la red local.
-
Dejar que Linux®, a través de Sendmail y Fetchamail,
se encargue de administar, filtrar y organizar todo el correo de todas
la cuentas de correo electrónico tipo POP2, POP3 o IMAP que desee,
por mencionar solo algunos tipos. Es decir, dejar que su servidor con Linux®
haga todo el trabajo.
-
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á:
-
Recuperar el correo de cuentas como Hotmail y otros servicios basados sobre
página web, excepto Yahoo!
-
Acabar con enfermedades, hambre, guerra, miseria, Microsoft® y otros
miles de malestares de los que adolece el mundo.
Requerimientos y lista de materiales.
-
Una PC con al menos 16 MB RAM y alguna distribución de Linux®
instalada.
-
Si se trata de una PC solitaria, bastará con definir bien los parámetros
en /etc/HOSTNAME, /etc/hosts y /etc/resolv.conf. Si
se trata de una intranet en el hogar o pequeña oficina, Linux®
debe de estar bien configurado para redes clase C con IP Masquerading y
servidor de nombres -DNS-. Detalles mayores detalles, consultar
el manual Guía rápìda de IP Masquerading por
Max de Mendizabal localizado en http://www.acer.com.mx/~mmendiz/guia-rapida-ip-masquerading-en-redhat-linux.html
-
Accesos a Internet utilizando un buen modem por hardware (NO softmodems).
-
Un proveedor de servicio de correo electrónico tipo POP3 o IMAP
y una o más cuentas.
Tomese 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.9.3 se considera como apropiada debido a fallas
de seguridad de gran importancia. Por favor visítese el sito web
de su disitribución predilecta para estar al tanto de cualquier
aviso de actualizaciones de seguridad.
Debe de definirse el nombre de la máquina que funcionará
como servidor de correo. Normalmente utilzaremos el esquema nombre_maquina.nombre_dominio.
Un ejemplo del nombre de la máquina servidor sería linux.linuxparatodos.com
o linux.miredlocal.org.mx. Así que asegúrese de que
esto se encuentra perfectamente definido en /etc/HOSTNAME y /etc/hosts:
Para /etc/HOSTNAME, es decir, el nombre que asignamos a la máquina,
correspondería lo siguiente:
Para /etc/hosts, es decir, la información de los hosts y
los IPs, correspondería lo siguiente:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 linux.miredlocal.org.mx linux miredlocal.org.mx
#
# Opcionalmente aquí puede agregar también
# los nombres e IPs de la máquinas de la red local.
|
Además de configurar correctamente un DNS, si se tuviese red local,
que defina bien los DNS o servidores de nombres de dominios corespondientes.
Esto debe hacerlo en el archivo /etc/resolv.conf, de un modo similar
al siguiente:
search miredlocal.org.mx
#
# El IP de la máquina que tiene el DNS de la red local.
nameserver 192.168.1.1
#
# Los DNS del proveedor de servicios.
nameserver 200.33.213.66
nameserver 200.33.209.66
|
Procedimientos.
Preparativos.
Es imperativo crear las cuentas locales para cada usuario que recuperará
correo del servidor. Si además se tiene u proveedor de accesos a
Internet y se utilizan varias cuentas de correo de este, y se desea enviar
correo desde dichas cuentas a través de Sendmail, para efectos prácticos
y de organización, se deben utilizar también los mismos logins.
-
Ejemplo.
-
Se tiene como servidor de corrreo saliente -SMTP- a mail.proveedor.net,
y con este tenemos cuatro cuentas de correo electrónico: jperez@proveedor.net,
plopez@proveedor.net, psanchez@proveedor.net y pgonzalez@proveedor.net
que son utilizadas por 4 distintos usuarios en cuatro distiuntas máquinas
dentro de nuestra intranet. Deberemos de crear al menos estas cuentas en
el servidor Linux®: jperez, plopez, psanchez y pgonzalez.
|
Si solo tenemos una cuenta de correo electrónico con mail.proveedor.net,
solo necesitaremos crear una cuenta con este mismo login. El procedimiento
descrito en este manual hará que todo el correo electrónico,
sin importar que nombre de dominio tengamos, salga mascareado y llegue
a los destinatarios como @proveedor.net.
Considere que en adelante podrá enviar un mensaje de correo electrónico
incluso desde una ventana terminal o consola y este llegará al destinatario
presentando como remitente su_login@proveedor.net, así que
es importante defina bien los nombre de las cuentas en Linux. Si usted
envía un mensaje desde una cuenta de correo electrónico que
en realidad no existe en mail.proveedor.neto que le pertenece a
alguien fuera de su organización u hogar, técnicamente estaría
spammeando
al no porporcionar una cuenta de correo electrónico verdadera, o
bien nunca le llegarían las posibles contestaciones.
Configurando Sendmail.
Es importante tener instalados los paquetes sendmail y sendmail-cf,
ya que utilizaremos el servidor de correo Sendmail para el envio
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
cd /mnt/cdrom/RedHat/RPMS
rpm -Uvh sendmail-* imap-*
cd $home
eject /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.
Antes de continuar, debemos editar o generar el fichero /etc/sendmail.cw,
en el cual deberemos listar todos y acada uno de los aliases que tenga
el servidor que estamamos configurando, así como los posibles dominios.
# sendmail.cw - include all aliases for your machine here.
miredlocal.org.mx
linux.miredlocal.org.mx
mail.miredlocal.org.mx
|
Procederemos entonces a modificar el archvo /etc/sendmail.mc, con
previo respaldo del original, a fin de preparar la configuración
del servidor de correo del siguiente modo, donde smtp.proveedor.net
corresponde al servidor de correo saliente del provvedor de servicio que
utilicemos y proveedor.net corresponde a la máscara que utilizaremos
para todo el correo que emitamos desde nuestro servidor:
divert(-1)
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')dnl
define(`confDEF_USER_ID',``8:12'')
define(`SMART_HOST',`smtp.proveedor.net')dnl
define(`confTO_QUEUERETURN', `4d')dnl
define(`confTO_QUEUEWARN', `4h')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY') dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(local_procmail)dnl
FEATURE(nouucp)dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(`access_db',`hash -o /etc/mail/access')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable')dnl
MAILER(procmail)dnl
MAILER(smtp)dnl
MASQUERADE_AS(proveedor.net)dnl
|
Luego se compila en un formato de base de datos con el siguiente comando:
m4 /etc/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:
# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
miredlocal.org.mx RELAY
linux.miredlocal.org.mx RELAY
#
# Si aplica, también agregue los nombres de la máquinas que integran su red local.
m2.miredlocal.org.mx RELAY
m3.miredlocal.org.mx RELAY
m4.miredlocal.org.mx RELAY
# etc.
#
# Y también podemos agregar las direcciones de correo electrónico
# de aquellos a quienes consideremos "indeseables", o que queramos
# bloquear.
spam@algun_spamer.com REJECT
info@otro_spammer.com REJECT
# etc.
|
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.txt
Al concluir, debemos también compilar este archivo para generar
otro en formato de base de datos a fin de ser utilizado por Sendmail:
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
# root: sam
|
Esto corresponde a la cuenta de correo local hacia donde se redireccciona
el correo de root. Descomente la última línea y asígnele
el nombre de la cuenta de usuario que utiliza normalmente:
# Person who should get root's mail
root: jperez
|
A fin de que este nuevo alias surta efecto y pueda ser utilizado por Sendmail
debe utilizar el comando 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á incluído entre los servicios
que de forma predeterminada se inician con el sistema. Si por alguna razón
Sendmail
no estuviese habilitado, agréguelo del siguiente modo:
Si queremos poder recuperar el correo de cualquiera de las cuentas que
tengamos desde otras máquinas en la red local con cualquier cliente
de correo con soporte para el protocolo POP3, necesitaremos descomentar
o agregar la siguiente línea en /etc/inetd.conf:
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
|
Hecho lo anterior, es necesario reiniciar el daemon correspondiente
con la siguiente línea de comando:
/etc/rc.d/init.d/inet restart
|
Si usted utiliza RedHat 7.x o versiones posteriores, inetd ha sido
sustituido por xinetd, y utiliza otro fichero de configuración
muy distinto. Acceda a al directorio /etc/xinet.d/ y edite el fichero ipop3,
mismo que requerirá edite una sola línea para habilitar el
servicio POP3:
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
disable = no
only_from = 192.168.1.254 192.168.1.253 localhost
}
|
Hecho lo anterior, es necesario reiniciar el daemon correspondiente
con la siguiente línea de comando:
/etc/rc.d/init.d/xinet restart
|
Configurando Fetchmail.
Es importante tener instalado el paquete fetchmail, ya que este
será el que se encargue de recuperar el correo de cuantas cuentas
tengamos. Para asegurarse de esto, se puede utilizar la siguiente línea
de comando:
Esto debe devolvernos la versión de fetchmail que se tiene
instalada. Si no fuese así, debemos cambiar a root proceder
a instalarlo. Introduzca el CDROM de su distribución y siga el siguiente
procedimiento:
mount /mnt/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm -Uvh fetchmail-*
cd $home
eject /mnt/cdrom
|
Recuerde que las versiones más recientes de Fetchmail, 5.3.x
en adelante, requieren tener instalados algunos de los paquetes de kerberos5,
así que de ser necesario, instálelos del mismo modo. Después
de Instalar fetchmail, se debe crear manualmente un archivo que
se llame /root/.fetchamailrc y con algo como lo siguiente:
#/root/.fetchmailrc
set logfile "/var/log/fetchmail.log"
set postmaster "root"
set daemon 0
# Recuperamos el correo de jperez@proveedor.net y lo
# depositamos en el buzón de correo local de jperez.
#
poll mail.proveedor.net with protocol POP3, with options
user "jperez" there with password "contraseña" is jperez here
with options rewrite mimedecode pass8bits
# Si tenemos cuenta en Yahoo!, podemos recuperar esta y
# tambien depositarla en buzón de correo local de jperez
#
poll pop.mail.yahoo.com with protocol POP3, with options
user "login_yahoo" there with password "contraseña" is jperez here
with options rewrite mimedecode pass8bits
# Hacemos lo mismo con el usuario jlopez, y todos aquellos usuarios que
# queramos, a fin de recuperar su correo desde Internet y depositarlo
# en su corespondiente carpeta de correo local.
#
poll mail.otroproveedor.net with protocol POP3, with options
user "login_remoto" there with password "contraseña" is jlopez here
with options rewrite mimedecode pass8bits
# Opcionalmente limitamos la recepción de
# mensajes grandes a un máximo 1.5 Mb, por
# aquello de los imprudentes "amigos" que suelen
# enviarnos mensajes con attachments de 2 MB.
# Modifiquese el valor a su propia conveniencia.
#
limit 1500000
|
Ya que este archivo incluírá contraseñas importantes,
es imperativo que las proteja cambiando los permisos del archivo /root/.fetchamailrc
de modo que solo root pueda utilizarlo:
chmod 700 /root/.fetchamailrc
|
Luego, en ip-up.local agreguese las líneas correspondientes, esto
para que se inicie fetchmail inmediatametne después de levantarse
el enlace ppp del siguiente modo:
#!/bin/bash
# ip-up.local
# Primero nos aseguramos de que no exista
# un proceso de Fetchmail en el trasfondo.
fetchmail -q
#
# Recupera mensajes inmediatamente después de
# conectarnos a Internet cada 960 segundos.
# Elija entonces el intervalo de tiempo que mejor
# le convenga, recordando que algunos provedores
# de servicios suelen desconectarnos de Internet
# automáticamente si hay acciones repetitivas cada
# determinado tiempo, o bien si hay inactividad después
# de cierto tiempo. Por experiencia personal, le sugiero
# revisar correo cada 15-16 minutos, o bien cada 30
# minutos si su proveedor de servicio requiere
# autentificación previa cada 30 minutos para poder
# enviar mensajes.
# Considere que a veces puede tomar más de 15 minutos
# descargar todo el correo de sus cuentas. fetchmail se
# interrumpiría y volvería a empezar, por lo que tendríamos
# mensajes repetidos infinitamente y jamás terminaríasmos
# de descargarlos.
#
fetchmail -d 960
#
# Si acaso el servidor SMTP no requiere una autentificación
# previa via POP3, esto enviará nuestros mensajes
# pendientes.
/usr/sbin/sendmail -q &
##############################
# Si usted tiene una sola PC #
# conectada a Internet, #
# como sería en el hogar, #
# omita todo lo que sigue. #
##############################
#
#Iniciamos el guón de IP Masquerading.
# Primero retiramos cualquier regla anterior.
/sbin/ipchains -X
/sbin/ipchains -F
/sbin/ipchains -Z
# Habilitamos el fowarding
if [ -e /proc/sys/net/ipv4/ip_forward ]
then
echo 1 > /proc/sys/net/ipv4/ip_forward
fi
if [ -e /proc/sys/net/ipv4/ip_dynaddr ]
then
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
fi
# Incia mascareo
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0
/sbin/ipchains -A input -p tcp -d 0.0.0.0/0 80 -j REDIRECT 80
/sbin/ipchains -A forward -j DENY -p tcp -s 0.0.0.0/0 137:139
/sbin/ipchains -A forward -j DENY -p udp -s 0.0.0.0/0 137:139
# Si nos interesa, y los requerimos, podemos utilizar los módulos
# del kernel utilizando cualquiera de las siguientes líneas.
/sbin/insmod ip_masq_cuseeme
/sbin/insmod ip_masq_ftp
/sbin/insmod ip_masq_irc
/sbin/insmod ip_masq_quake
/sbin/insmod ip_masq_raudio
/sbin/insmod ip_masq_vdolive
|
Si /etc/ppp/ip-up.local no existiese, debe de crearse este utilizando
cualquier editor de texto y hacersele ejecutable aplicandole el comando
chmod
+x:
chmod +x /etc/ppp/ip-up.local
|
Y en /etc/ppp/ip-down.local debe de agregarse lo siguiente:
#!/bin/bash
# ip-down.local
# Nos aseguramos de que se termine Fetchmail al desconectarnos
# de Internet.
fetchmail -q
# Quitamos los módulos de IP Masquerade para liberar recursos.
/sbin/rmmod ip_masq_cuseeme
/sbin/rmmod ip_masq_ftp
/sbin/rmmod ip_masq_irc
/sbin/rmmod ip_masq_quake
/sbin/rmmod ip_masq_raudio
/sbin/rmmod ip_masq_vdolive
# Y borramos las reglas que habíamos establecido
/sbin/ipchains -X
/sbin/ipchains -F
/sbin/ipchains -Z
|
Si /etc/ppp/ip-down.local tampoco existiese, debe de crearse este
con cualquier editor de texto y hacersele ejecutable aplicandole el comando
chmod
+x:
chmod +x /etc/ppp/ip-down.local
|
Configuración de los clientes de correo.
Considerando que tiene bien configada su red local y que ha seguido este
manual al pie de la letra, sea la PC que sea en su red local, debe configurar
linux.miredloacal.org.mx
como servidor de correo saliente o SMTP y servidor de correo entrante
o POP3 en el cliente de coreo que utilice. El correo que enviemos
sin estar conectados a Internet se guardará en el spool de Sendmail
y será enviado una vez que se levante el enalce PPP. Los mensajes
de correo de nuestras cuentas serán recuperados desde Internet por
Fetchamail
y concentrados en los buzones de correo local y solo bastará recuperarlos
de el servidor local con cualquier cliente de correo.
Prerencias de Netscape para los servidores de correo.
Si acaso le resulta más cómodo, deje que Fetchmail
haga su trabajo y utilice directamente el servidor SMTP que elija para
enviar sus mensajes. Para tal caso, es aún más importante
recordar que debe definir en las máquinas clientes, o estaciones
de trabajo, el IP de la maquina que servira de servidor de correo y con
el modem que se conecta a Internet como el Gateway o puerto de enlace
para toda la red. |