Configuración del servidor de correo en Debian

Inicio
Última actualización: 16 de febrero, 2011

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 (DNSBL) 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 y configuración básica de exim4

Instala el paquete exim4,

# apt-get install exim4

Si exim4 ya está instalado, reconfigura con,

# dpkg-reconfigure -plow exim4-config

Configura un sitio Internet,

    Internet site; el correo se envía y recibe directamente usando SMTP

Da el nombre completo del servidor, incluyendo el dominio. Por ejemplo,

    Nombre del sistema de correo: mi.servidor.debian

Deja en blanco las direcciones IP que escuchan conexiones SMTP entrantes. Esto hace que todas la interfases sean usadas.

    Direcciones IP en las que recibir conexiones SMTP entrantes:

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,

    Otros destinos para los que se acepta el correo: 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.

    Dominios para los que se reenvía correo:

Es seguro actuar de relay para una red local, por ejemplo,

    Máquinas para los cuales reeinviar correo: 192.168.1.0/24

solo si se bloquea el rango en la interfase externa con un cortafuego.

En método de entrega para el correo local escoge formato mbox,

    formato mbox en /var/mail/

Separa la configuración en archivos pequeños,

    ¿Dividir la configuración en pequeños ficheros? <Sí>

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 el servidor de autenticación SASL,

# /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, por ejemplo,

# /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) []:Mi organizacion
Organizational Unit Name (eg, section) []:Mi unidad
Server name (eg. ssl.domain.tld; required!!!) []:smtp.servidor.debian
Email Address []:postmaster@servidor.debian

Los archivos exim.crt y exim.key son guardados en /etc/exim4. El certificados es válido por tres años. Si deseas cambiar el tiempo de validez, edita /usr/share/doc/exim4-base/examples/exim-gencert y modifica la variable DAYS, por ejemplo,

  DAYS=3652

(diez años). Genera nuevamente el certificado.

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 debian.ciencias.uchile.cl ESMTP Exim 4.63 Tue, 01 May 2007 14:51:23 -0400

Escribe "EHLO debian.ciencias.uchile.cl",

EHLO debian.ciencias.uchile.cl
250-debian.ciencias.uchile.cl 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.

También puedes configurar el servidor SASL para que ejecute la autenticación con SSL por el puerto 465 (SSMTP). Cómo hacer esta modificación puedes encontrarla en,

  http://wiki.debianchile.org/EximSMTPAuth#ssmtp

Clam Anti-virus

Clamav es un antivirus libre muy popular. Si bien sistemas Unix no sufren de virus y parecidos, el correo recibido puede ser leido por sistemas que si sufren de este mal. Por eso, es reconedable instalar este 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. Es recomendable usar los paquetes distribuidos por Debian Volatile. Configura APT para usar el déposito, luego instala los paquetes,

# 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/02_exim4-config_options y modifica el instructivo av_scanner,

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 atributos 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

Lista negra DNS (DNSBL)

Una lista negra DNS es un servicio prestado generalmente por una organización anti-spam sin fines de lucro. El MTA consulta un servidor dedicado, quien responde positivamente si el IP enviante se encuentra en su lista. Una consulta positiva niega el recibo del mensaje, generando una respuesta al emisior en que se le comunica que su IP se encuentra en la lista consultada.

Edita /etc/exim4/conf.d/main/02_exim4-config_options y al final del archivo agrega,

CHECK_RCPT_IP_DNSBLS = zen.spamhaus.org

Edita /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt y modifica,

  # Check against classic DNS "black" lists (DNSBLs) which list
  # sender IP addresses
  .ifdef CHECK_RCPT_IP_DNSBLS
  warning
    message = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    dnslists = CHECK_RCPT_IP_DNSBLS
  .endif

por

  # Check against classic DNS "black" lists (DNSBLs) which list
  # sender IP addresses
  .ifdef CHECK_RCPT_IP_DNSBLS
  drop
    message = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
    dnslists = CHECK_RCPT_IP_DNSBLS
  .endif

dnslists define las listas DNSBL a usar, separadas por un dos puntos (:), cuyo valor se traspasa con la variable CHECK_RCPT_IP_DNSBLS.

La lista DNSLB del ejemplo es la de SpamHaus 2. Existen otras listas DNSBL que son complementarias, por ejemplo, la lista de BarracudaCentral 3,

CHECK_RCPT_IP_DNSBLS = zen.spamhaus.org : b.barracudacentral.org

Actualiza la configuración de Exim,

# update-exim4.conf

y reinicia exim4,

# /etc/init.d/exim4 restart

Información adicional sobre otras listas DNSBL puedes encontrar en,

  http://wiki.debianchile.org/EximDNSBL

Lista blanca DNS (DNSWL)

Una lista blanca DNS actua en forma reversa a una lista negra, retornando en vez una respuesta positiva si el número IP del emisor no se dedica sistemáticamente a enviar spam, de acuerdo a cuatro niveles de confianza; alto (nunca envía spam), mediano (ocurrencias de spam muy raras y se corrigen rápidamente), bajo (ocurrencia de spam ocasional, pero se corrige menos diligentemente) y ninguno (servidor de correo legítimo, que puede enviar spam).

Edita /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt y agrega,

  # DNS Whitelist
  accept domains = +local_domains
  # whitelist only medium and high trust levels
  dnslists = list.dnswl.org&0.0.0.2
  logwrite = $sender_host_address is whitelisted

justo antes de definir las listas negras DNS. La respuesta es positiva si el emisor se encuentra en uno de los dos niveles superiores de confianza (alto y mediano), siendo aceptado y evitando que adicionalmente sea escrutinado por una lista negra DNS.

Actualiza la configuración de Exim,

# update-exim4.conf

y reinicia exim4,

# /etc/init.d/exim4 restart

SpamAssassin

Instala los paquetes spamassassin y spamc,

# apt-get install spamassassin spamc

Edita /etc/default/spamassassin y modifica la variable ENABLED a,

  ENABLED=1

Inicia spamd con,

# /etc/init.d/spamassassin start

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

Información adicional sobre el uso de SpamAssassin y como filtrar spam con marcadores bayesianos puedes encontrar en,

  http://wiki.debianchile.org/EximSpamAssassin#bayes
Copyright © 2002-2011 Ricardo Yanez

  [1] - http://www.exim.org
  [2] - http://www.spamhaus.org
  [3] - http://www.barracudacentral.org

This document was generated using AFT v5.097