Un Mail Transfer Agent (MTA) maneja la trasferencia de correo electrónico de un servidor a otro. Aquí vamos a configurar el MTA Exim4 1, integrándolo con protocolos de autenticación SMTP, protocolos de seguridad (SSL, TSL), anti-virus (Clam Antivirus), bloqueo de DNS con listas negras (SBL/XBL) y filtro de SPAM (SpamAssassin).
La configuración avanzada de Exim4 aquí presentada es apta para un servidor Debian, conectado a Internet permanentemente, con número IP estático y FQDN (Fully Qualified Domain Name).
Instala el paquete exim4,
# apt-get install exim4
Si exim4 está instalado, reconfigura con,
# dpkg-reconfigure -plow exim4-config
Separa la configuración en archivos pequeños,
Split configuration into small files? <Yes>
Configura un sitio Internet,
internet site; mail is sent and received directly using SMTP
Da el nombre completo del servidor, incluyendo el dominio. Por ejemplo,
System mail name: debian.ciencias.uchile.cl
Deja en blanco las direcciones IP que escuchan conexiones SMTP entrantes. Esto hace que todas la interfases sean usadas.
En otros destinos a los cuales se acepta correo puedes agregar dominios adicionales, separados con un colon, que apuntan al número IP del servidor de correo, por ejemplo, aquellos definidos con BIND,
Other destinations for which mail is accepted: ficticio.cl
Es preferible usar SMTP-AUTH para envíos de correo que actuar como relay. Un relay mal configurado podría usarse para envío de SPAM. Deja esta opción en blanco a no ser que sepas bien lo que haces. Es seguro actuar de relay para una red privada, por ejemplo,
Machines to relay mail for: 192.168.1.0/24
solo si se bloquea el rango en la interfase externa con un cortafuego.
En método de entrega de correo local escoge formato mbox,
mbox format in /var/mail/
Define un usuario normal (tu) como recipiente del correo de root y postmaster.
Si tienes un cortafuego, habilita el puerto 25 TCP hacia requerimientos por la interfase que va a servir correo electrónico.
Instala los paquetes sasl2-bin y libsasl2-modules,
# apt-get install sasl2-bin libsasl2-modules
Edita /etc/default/saslauthd y modifica la variable START a,
START=yes
Reinicia SASL con,
# /etc/init.d/saslauthd restart
Edita /etc/exim4/conf.d/main/03_exim4-config_tlsoptions y agrega la línea,
MAIN_TLS_ENABLE = 1
al inicio del archivo,
### main/03_exim4-config_tlsoptions ################################# # TLS/SSL configuration. # See /usr/share/doc/exim4-base/README.Debian.gz for explanations. MAIN_TLS_ENABLE = 1
Edita /etc/exim4/conf.d/auth/30_exim4-config_examples y descomenta la sección login_saslauthd_server,
login_saslauthd_server: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" # don't send system passwords over unencrypted connections server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}} server_set_id = $auth1 # .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS # server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} # .endif
Genera un certificado de seguridad,
# /usr/share/doc/exim4-base/examples/exim-gencert Country Code (2 letters) [US]:CL State or Province Name (full name) []:. Locality Name (eg, city) []:Santiago Organization Name (eg, company; recommended) []:Universidad de Chile Organizational Unit Name (eg, section) []:Departamento de Fisica Server name (eg. ssl.domain.tld; required!!!) []:debian.ciencias.uchile.cl Email Address []:postmaster@debian.ciencias.uchile.cl
Ingresa los valores pertinentes.
El script genera los certificados /etc/exim4/exim.crt y /etc/exim4/exim.key. Son válidos por tres años. Si deseas cambiar la validez, edita /usr/share/doc/exim4-base/examples/exim-gencert y modifica la variable DAYS. Por ejemplo,
DAYS=3652
creará certificados validos por diez años.
Agrega el usuario Debian-exim al grupo sasl,
# addgroup Debian-exim sasl
Actualiza la configuración de Exim,
# update-exim4.conf
y reinicia exim4,
# /etc/init.d/exim4 restart
Prueba una conexión SMTP (puerto 25),
$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ftp.cl.debian.org ESMTP Exim 4.63 Tue, 01 May 2007 14:51:23 -0400
Escribe "EHLO debian.ciencias.uchile.cl",
EHLO debian.ciencias.uchile.cl 250-ftp.cl.debian.org Hello root at localhost [127.0.0.1] 250-SIZE 52428800 250-PIPELINING 250-AUTH LOGIN 250-STARTTLS 250 HELP
Las líneas,
250-AUTH LOGIN 250-STARTTLS
indican que la autenticación SMTP con TLS está funcionando.
Define el envío de correo en el programa de correo electrónico tal que el tipo de servidor sea SMTP, el servidor requiera autenticación, conexión con encriptación TLS y autenticación tipo
Instala el paquete exim4-daemon-heavy,
# apt-get install exim4-daemon-heavy
El paquete exim4-daemon-light será removido.
Instala los paquetes clamav-freshclam y clamav-daemon,
# apt-get install clamav-freshclam clamav-daemon
El primer paquete es el daemon que descarga la base de datos de virus de Internet y la actualiza regularmente. El segundo paquete es el scanner.
Edita /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs y al final agrega,
# set clamd path av_scanner = clamd:/var/run/clamav/clamd.ctl
Edita /etc/exim4/conf.d/acl/40_exim4-config_check_data y agrega casi al final, justo antes de accept,
# Reject messages that have serious MIME errors. # This calls the demime condition again, but it # will return cached results. deny message = Serious MIME defect detected ($demime_reason) demime = * condition = ${if >{$demime_errorlevel}{2}{1}{0}} # Reject file extensions used by worms. # Note that the extension list may be incomplete. deny message = This domain has a policy of not accepting certain \ types of attachments in mail as they may contain a \ virus. This mail has a file with a .$found_extension \ attachment and is not accepted. If you have a \ legitimate need to send this particular attachment, \ send it in a compressed archive, and it will then be \ forwarded to the recipient. demime = exe:com:vbs:bat:pif:scr # Reject messages containing malware. deny message = This message contains a virus ($malware_name) and \ has been rejected. malware = * # accept otherwise accept
Crea el directorio /var/spool/exim4/scan con permisos de escritura,
# mkdir -p -m 777 /var/spool/exim4/scan
Agrega el usuario clamav al grupo Debian-exim,
# addgroup clamav Debian-exim
Actualiza la configuración de Exim,
# update-exim4.conf
y reinicia exim4,
# /etc/init.d/exim4 restart
Reinicia clamav-daemon,
# /etc/init.d/clamav-daemon restart
Edita /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt y agrega,
# DNS blacklist drop log_message = listed by $dnslist_domain dnslists = zen.spamhaus.org : bl.spamcop.net : dnsbl.sorbs.net
justo después de aceptar mensajes autenticados,
# Accept if the message arrived over an authenticated connection, from # any host. Again, these messages are usually from MUAs, so recipient # verification is omitted, and submission mode is set. And again, we do this # check before any black list tests. accept authenticated = * control = submission/sender_retain # DNS blacklist drop log_message = listed by $dnslist_domain dnslists = zen.spamhaus.org : bl.spamcop.net : dnsbl.sorbs.net
Las listas negras aquí usadas son las de SpamHaus 2 (SBL, XBL y PBL), SpamCop 3 y SORBS 4.
Actualiza la configuración de Exim,
# update-exim4.conf
y reinicia exim4,
# /etc/init.d/exim4 restart
El correo electrónico rechazado por una lista negra queda registrado en /var/log/exim/mainlog.
Instala los paquetes spamassassin y spamc,
# apt-get install spamassassin spamc
Edita /etc/default/spamassassin y modifica la variable ENABLED a,
ENABLED=1
Crea el directorio /var/spool/spamassassin/bayes con permisos de escritura,
# mkdir -p -m 777 /var/spool/spamassassin/bayes
Edita /etc/spamassassin/local.cf y agrega al final,
bayes_path /var/spool/spamassassin/bayes/bayes bayes_file_mode 0666
Inicia spamd con,
# /etc/init.d/spamassassin start
Crea y edita el archivo /etc/procmailrc. Agrega,
:0: * ^X-Spam-Status: Yes mail/probably-spam
El correo marcado como SPAM será redirigido a $HOME/mail/probably-spam del receptor.
En el encabezado del mensaje puedes ver el estado y las pruebas que fueron positivas. Por ejemplo,
X-SA-Exim-Connect-IP: 220.168.166.39 X-SA-Exim-Mail-From: extronix@gnosticweb.com Subject: FDA approved on-line pharmacies X-Spam-Flag: YES X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on debian.ciencias.uchile.cl X-Spam-Level: **** X-Spam-Status: Yes, score=5.1 required=5.0 tests=BODY_ENHANCEMENT2,DRUGS_DIET, DRUGS_ERECTILE,DRUGS_MANYKINDS,DRUGS_MUSCLE,DRUGS_PAIN, DRUG_ED_GENERIC,HG_HORMONE,HTML_MESSAGE,UNPARSEABLE_RELAY autolearn=no version=3.1.7-deb X-SA-Exim-Version: 4.2.1 (built Tue, 09 Jan 2007 17:23:22 +0000) X-SA-Exim-Scanned: Yes (on ftp.cl.debian.org)
Cada prueba tiene asignado un score. Si la suma total supera 5.0, el correo es catalogado como SPAM y marcado con,
X-Spam-Status: Yes
procmail se encarga de reconocer este encabezado y redirigir el mensaje a $HOME/mail/probably-spam.
Instala el paquete sa-exim,
# apt-get install sa-exim
Edita /etc/exim4/sa-exim.conf y comenta la línea,
#SAEximRunCond: 0
Actualiza la configuración de Exim,
# update-exim4.conf
y reinicia exim4,
# /etc/init.d/exim4 restart
Para enseñar a SpamAssassin a clasificar nuevo SPAM corre,
$ sa-learn --spam --mbox ~/mail/spam
en donde el SPAM no detectado está guardado en formato mbox en el archivo $HOME/mail/spam. Todo usuario puede enseñar SPAM. La tabla con los clasificadores Bayesianos está en /var/spool/spamassassin/bayes.
Para que los clasificadores Bayesianos entren en acción en el momento que el correo es recibido, se requiere que SpamAssassin haya aprendido una buena cantidad de SPAM, unos 100-200. La prueba BAYES_99 reconoce con 99% de seguridad los clasificadores Bayesianos. El score de BAYES_99 es 3.5. Este score lo puedes modificar en /etc/spamassassin/local.cf,
score BAYES_99 4.5
Reinicia spamd con,
# /etc/init.d/spamassassin restart
 
[1] - http://www.exim.org
 
[2] - http://www.spamhaus.org
 
[3] - http://www.spamcop.net
 
[4] - http://www.au.sorbs.net
This document was generated using AFT v5.096