Configuración del servidor de correo en Debian

Inicio
Última actualización: 16 de diciembre, 2008

Tabla de Contenido

Introducción

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).

Instalación de exim4

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.

Autenticación SMTP con SASL

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

Clam Anti-virus

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

Bloqueo de DNS con listas negras

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.

SpamAssassin y sa-exim

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
Copyright © 2002-2008 Ricardo Yanez

  [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