…::: Guatewireless.org ::::..

Tecnologia, Software Libre, Guatemala, Open Source, Linux, Wireless, WiFi, Scripting, Debian, CentOS, Gentoo, Redhat, SuSE, Windows

Howto Install Courier-MTA sobre Linux Debian

Tabla de contenidos




Introduccion

Desde hace ya varios años que vengo instalando servidores de correo sobre alguna distribucion de Linux, pero siempre tengo que estar buscando por la red los tips para refrescar la memoria. Y ahora casualmente y por motivos de trabajo tengo que hacer un howto, entonces es hora de aprovechar la oportunidad.

Nota: Este documento asume que ya tenemos una maquina con Debian Etch instalado, de lo contrario vean aqui.


Requerimientos


Paquetes


Repositorios

Antes de echar manos a la obra, es buena idea verificar que la configuracion del APT de nuestro Debian contengan los repositorios contrib y non-free.

deathbian:~# vim /etc/apt/sources.list
deb http://ftp.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.debian.org/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free


Instalacion Courier base

Para poner nuestro servidor de correo en marcha es necesario instalar estos paquetes

  • Courier
  • Spamassassin
  • Clamcour

de la siguiente manera;

deathbian:~# apt-get install courier-mta
deathbian:~# apt-get install courier-imap
deathbian:~# apt-get install courier-imap-ssl
deathbian:~# apt-get install courier-maildrop
deathbian:~# apt-get install spamassassin
deathbian:~# apt-get install clamcour


Archivos de configuracion


ClamAV

Al instalar los paquetes del clam antivirus automaticamente nuestro Linux Debian los configura, (aca encontraran parametros para tunear la instalacion). Sin embargo, y ya que deseamos que nuestro servicio de correo pueda vacunar el contenido antes de llegar a las casillas de los usuarios, debemos crear el archivo /usr/bin/clamscan.sh, con el siguiente contenido

archivo: /usr/bin/clamscan.sh
#!/bin/bash
# Created by Tom Walsh, slim at ala.net
# slightly modified by Wolfgang Ziegler, nuppla at gmx.at

RUN=clamscan
# Enable this line, if you are using the clamav-daemon.
# RUN=clamdscan

#start
MSG=$(< /proc/self/fd/0) # stdin -> $MSG
SCAN=$(echo "$MSG" | $RUN - --stdout --disable-summary)
EXIT="$?"

VIRUS=$(echo "$SCAN" | awk '{print $2}')
SUBJECT=$(echo "$MSG" | reformail -x Subject:)

if [ "$EXIT" == "1" ]; then
 SUBJECT="**VIRUS** [$VIRUS] $SUBJECT"
 MSG=$(echo "$MSG" | reformail -i"X-Virus-Status: INFECTED")
 MSG=$(echo "$MSG" | reformail -i"Subject: $(echo "$SUBJECT")")
else
 MSG=$(echo "$MSG" | reformail -i"X-Virus-Status: CLEAN")
fi

echo "$MSG"

exit 0

No olviden volver el archivo ejecutable…

chmod +x /usr/bin/clamscan.sh


SpamAssassin

Para realizar la configuracion del SpamAssassin, corremos el shell de perl, con el siguiente comando:

perl -MCPAN -e shell

ya dentro del shell, tecleamos:

install Mail::SpamAssassin

y opcionalmente

install Mail::SPF::Query
install IP::Country::Fast

Si la interfaz de instalacion les pregunta si desean correr las pruebas de Razor2 o DCC, solo presionen enter para seleccionar NO. Al terminar tecleen q y presionen enter para terminar.

Ahora editemos el archivo /etc/mail/spamassassin/local.cf de la siguiente manera:

archivo: /etc/mail/spamassassin/local.cf

#
# Created by Luis Fernando Gramajo, fher98 at guatewireless.net
# v.1.0
report_safe             0

trusted_networks        10.0.1/24           #Las redes en las cuales confiamos

required_hits           6.0                 #Puntuacion requerida por un correo para ser catalogado como spam
whitelist_from          *@guatewireless.net #dominio en el cual confiamos y no esperamos spam
use_bayes 1
bayes_path              /var/lib/spamassassin/bayes   #El directorio /var/lib/spamassassin sera necesario crearlo
auto_whitelist_path     /var/lib/spamassassin/auto-whitelist
bayes_auto_learn_threshold_nonspam -0.1

skip_rbl_checks         0
use_razor2              1
razor_config            /etc/razor/razor-agent.conf

use_dcc                 1
use_pyzor               0
pyzor_options           --homedir /etc/pyzor   #Solo es necesario si cambian use_pyzor 1

dns_available           yes

header LOCAL_RCVD Received =~ /.*\(\S+\.domain\.com\s+\[.*\]\)/
describe LOCAL_RCVD Received from local machine
score LOCAL_RCVD -50

## Aumentos de puntuacion -- opcionales
score DCC_CHECK 2.500            #Un buen valor esta entre 2.500 y 4.000, pero depende del dominio
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_95 3.500
score BAYES_80 3.000
## Reduccion de puntuacion -- opcionales, pero muy utiles
score DK_SIGNED         -1.000
score DK_VERIFIED       -2.500
score SPF_PASS          -2.500

En esta version de spamassassin tenemos que editar el archivo /etc/mail/spamassassin/v310.pre, y eliminamos el # de las dos lineas a continuacion

# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source.  See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC
# Razor2 - perform Razor2 message checks.
#
# Razor2 is disabled here because it is not available for unlimited free
# use.  It is currently free for personal use, subject to capacity
# constraints.  See the Cloudmark SpamNet Service Policy for more details.
#
loadplugin Mail::SpamAssassin::Plugin::Razor2


Set de reglas

Vean el sitio de [Custom Rulesets page] para encontrar una serie de reglas especiales para instalar en tu sistema. Para instalar un rulset, simplemente se copia al directorio /etc/mail/spamassassin .


Verificacion de la configuracion

Es importante estar seguros que la configuracion del SpamAssassin esta correcta. Al terminar, tecleamos

spamassassin --debug --lint

Lo cual nos despliega una lista de la informacion de la configuracion que nos dice si hay algun tipo de error. Hay una gran cantidad de informacion en esta lista. Delen una revisada a cada linea de la lista para ver si todo esta en orden.


Maildrop

Maildrop es una herramienta nativa de Courier, diseñada para realizar avanzadas tareas de filtrado. Por el momento tan solo vamos a configurar Courier para que entrege los correos a traves de maildrop.

Nota: maildrop es minusioso cuando se trata de los permisos del mailbox – verifiquen dichos permisos .

Para poder filtrar los correos a traves de maildrop editamos el archivo /etc/courier/courierd, buscamos el DEFAULTDELIVERY y lo cambiamos por

archivo: /etc/courier/courierd

DEFAULTDELIVERY="| /usr/bin/maildrop"
Nota: No se olviden del ”


Filtrando con ClamAV y SpamAssassin

Este es el archivo general de maildrop para todo el sistema. Lo que escribamos aca afectara a todos los correos entrantes de los usuarios, y es por esta razon, que dentro de este archivo escribimos el script para poder filtrar los virus/spam con ClamAV y SpamAssassin.

archivo: /etc/courier/courierd
#/etc/courier/maildroprc
#Courier-ClamAV local scan
#Por Luis Fernando Gramajo P. 23/11/06
#fher98 at gmail DOT com

# Nuestro shell
SHELL="/bin/bash"

# El path por default
DEFAULT = "$HOME/Maildir"

#Tomando el nombre del usuario
#import USER

# El archivo de log
logfile "/var/log/maildrop"

# Verbosidad del log
VERBOSE="5"

# Solo se verifican con antivirus mails menores de VSCANSIZE
VSCANSIZE="20000000"

# Los mails pasan por las capas de los filtros antispam solo si con menores que SCANSPAMSIZE
SCANSPAMSIZE="20000000"
###############################################################################
#
# Haciendo uso de ClamAV para eliminar virus.
#
###############################################################################

if( $SIZE < $VSCANSIZE )
{
  exception {
      xfilter "/usr/bin/clamscan.sh"
        }
        }

        if(/^X-Virus-Status:.*INFECTED/)
        {
          `test -d $DEFAULT/.Quarantine`
            if ( $RETURNCODE == 1 )
              {
          `/usr/bin/maildirmake -f Quarantine $DEFAULT`
              `echo INBOX.Quarantine >> $DEFAULT/courierimapsubscribed`
        }
          exception {
              #to "$DEFAULT/.Quarantine/"
                      to "/dev/null"

        }
        }

# Esto es agregado sobre cada registro en la bitacora.
# Tan solo una simple ayuda visual.
log "--------------------------------------------------"
###############################################################################
#
# Haciendo uso de SpamAssassin para eliminar el spam.
#
###############################################################################
if( $SIZE < $SCANSPAMSIZE )
{
  xfilter "/usr/bin/spamc -u $USER -s $SCANSPAMSIZE"
}
if (/^X-Spam-Flag: YES/:h || /^X-Spam-Status: Yes/:h)
{
#Se crea el directorio para el spam
  `test -d $DEFAULT/.Spam`
   if( $RETURNCODE == 1 )
  {
      `/usr/bin/maildirmake -f Spam $DEFAULT`
      `echo INBOX.Spam >> $DEFAULT/courierimapsubscribed`
  }
exception {
to "$DEFAULT/.Spam/"
    }
}


Courier

Los archivos de configuracion de Courier se encuentran en /etc/courier


/etc/courier/courierd

  • La configuracion por default utiliza el formato mbox y no ./Maildir. Anteriormente hicimos el cambio para ser entregados via Maildrop.
archivo: /etc/courier/courierd
########################################################################
#
##NAME: DEFAULTDELIVERY:0
#
#  Specify default delivery instructions by setting DEFAULTDELIVERY
#  One of the following definitions of DEFAULTDELIVERY should be
#  uncommented.

# Ahora los correos se entregan dentro de ./Maildir, via maildrop
DEFAULTDELIVERY="| /usr/bin/maildrop"


/etc/courier/esmtpd

archivo: /etc/courier/esmtpd
BOFHCHECKDNS=1
BOFHNOEXPN=1
BOFHNOVRFY=1
ESMTPAUTH="LOGIN"
BLACKLISTS="-block=relays.ordb.org,BLOCK
-block=sbl-xbl.spamhaus.org,BLOCK -block=bl.spamcop.net,BLOCK"


/etc/courier/esmtphelo

  • Aca tecleamos el FQDN de nuestro servidor de correo. La mayoria de servidores de correo no aceptan correos si el FQDN del remitente no esta debidamente registrado.
echo "host.dominio.tld" >/etc/courier/esmtphelo


/etc/courier/me

  • En este archivo tambien debemos ingresar el nombre FQDN de nuestro servidor de correo (tambien puede ser el nombre local de la maquina).
echo "host.dominio.tld" >/etc/courier/me


/etc/courier/aliaes/dominio.tld

  • fher98 es un usuario local del sistema.
archivo: /etc/courier/aliaes/dominio.tld
usuario@dominio.tld: fher98


/etc/courier/esmtpacceptmailfor.dir/dominio.tld

archivo: /etc/courier/esmtpacceptmailfor.dir/dominio.tld
dominio.tld 


/etc/courier/hosteddomains/domain.tld

archivo: /etc/courier/hosteddomains/domain.tld

dominio.tld
host.dominio.tld<tab>dominio.tld


/etc/courier/bofh

archivo: /etc/courier/bofh
opt BOFHSPFMAILFROM=none,pass,neutral,unknown
opt BOFHSPFFROM=mailfromok,all
opt BOFHSPFTRUSTME=1
opt BOFHBADMIME=accept
opt BOFHCHECKHELO=0


Iniciar los Servicios


Courier MTA

  • Aca levantamos los servicios del Courier.
deathbian:~# /etc/init.d/courier-mta restart
deathbian:~# /etc/init.d/courier-imap restart
deathbian:~# /etc/init.d/courier-authdaemon restart


Sistema de Filtrado Antivirus/AntiSpam

  • Tan facil como:
deathbian:~# /etc/init.d/spamd start
deathbian:~# /etc/init.d/clamd start
deathbian:~# /etc/init.d/courier restart
deathbian:~# filterctl start clamcour

Verifiquen la bitacora (log) del correo para ver la activacion del clamcour.

Nota: Por lo extenso y complejo del articulo podria tener algun error de redaccion o tecnico, por sus observaciones y comentarios… Muchas gracias

Popularity: 13%

Etiquetado como: , , ,

15 Comentarios

  1. Hola esta muy interesante y completo tu articulo, pero me salio un problema al momento de correr el debug de spamassassing.

    [1343] warn: config: warning: score set for non-existent rule DK_SIGNED
    [1343] warn: config: warning: score set for non-existent rule DK_VERIFIED

    la verdad q le e dado sus buenas vueltas y aun no veo el como arreglar eso

    si me pudieras dar una ayuda te lo agradesco de antemano

    Saludos

    • Cristhian:

      Como habras leido en el articulo, le instalamos varios plugins al spamassassin para eliminar el spam, esto me suena a que algo hizo falta.

      # DomainKeys
      ifplugin Mail::SpamAssassin::Plugin::DomainKeys
      score DK_POLICY_SIGNALL 0.001
      score DK_POLICY_SIGNSOME 0.001
      score DK_POLICY_TESTING 0.001
      score DK_SIGNED 0.001
      score DK_VERIFIED -0.001
      endif # Mail::SpamAssassin::Plugin::DomainKeys

      Tecleaste estos comandos?

      perl -MCPAN -e shell

      ya dentro del shell, tecleamos:

      install Mail::SpamAssassin

      install Mail::SPF::Query

      install IP::Country::Fast

      Bueno, dale y nos cuentas, y gracias por tu consulta,….. Saludos!!!

  2. La verdad tengo todos estos datos correctos pero me muestra el siguiente mensaje:

    [6467] dbg: config: warning: score set for non-existent rule DK_POLICY_SIGNSOME 0.26408
    [6467] dbg: config: warning: score set for non-existent rule DK_SIGNED 0.00046
    [6467] dbg: config: warning: score set for non-existent rule DK_POLICY_SIGNALL 0.00064
    [6467] dbg: config: warning: score set for non-existent rule DK_VERIFIED 0.00246
    [6467] dbg: config: warning: score set for non-existent rule DK_POLICY_TESTING 0.0012

    Y como hago para verificar si el DomainKeys esta funcionando.

    GRacias

  3. Estoy usando esta config de base mas otras que ya tenia de backup.
    En este momento de la configuración mi server puede enviar correo, digamos a a gmail.com pero de gmail.com a mi dominio no.

    En este tail se ve que desde gmail a usac hay un problema.
    #tail -f /var/log/mail.log|grep jaimeco
    Feb 6 09:14:27 ixil courieresmtpd: error,relay=::ffff:64.233.170.191,from=,to=: 513 Relaying denied.

    Gracias por cualquier orientación.

    • Ok, dame un segundo que ya tengo bastante tiempo de no utilizar courier.

    • Vos si podes recibir correo interno?

    • Siendo correo entrante revisate el archivo smtpaccess-default

      Ya corriste el comando makesmtpaccess.

      • Es correcto en /etc/courier/smtpaccess/default tengo:
        127.0.0.1 allow,RELAYCLIENT
        10.0 allow,RELAYCLIENT
        172.16 allow,RELAYCLIENT
        192.168 allow,RELAYCLIENT
        10.0.0.6 allow,RELAYCLIENT
        10.0.0.15 allow,RELAYCLIENT

        Que son mis redes y unos servers y a huevos ya corrí makesmtpaccess, pero yo entiendo que eso es para los clientes internos, donde puedo encontrar una configuración parecida para aquellos que envian correo a usac.edu.gt como destinatario?

  4. Bien, luego de este mensaje ejecute los siguientes comandos y agregue las siguientes lineas y ya envio y recibo mail, obviamente faltan otras cositas para agregar como el spamassassin y el clamav. Pero ya es un avance.

    #makesmtpaccess
    #makehosteddomains
    #makeacceptmailfor

    /etc/courier/smtpaccess
    127.0.0.1 allow,RELAYCLIENT
    10.0 allow,RELAYCLIENT
    172.16 allow,RELAYCLIENT
    192.168 allow,RELAYCLIENT
    10.0.0.6 allow,RELAYCLIENT
    10.0.0.15 allow,RELAYCLIENT

    /etc/courier/hosteddomains/midominio.com
    midominio.com
    mail.midominio.com # nombre especifico para mail IP1
    server.midominio.com # nombre especifico para el server IP2
    localhost

    /etc/courier/esmtpacceptmailfor.dir
    midominio.com

    En /etc/courier/courierd
    MAILDROPDEFAULT=./Maildir

    De momento esa, pero supongo que tendré que usar para el spamassassin o el clamav, aun no se. Pero con esta configuración ya se envia y recibe mail
    DEFAULTDELIVERY=”| /usr/bin/maildrop”

    Seguiré documentando lo que suceda.

    • A eso iba con el smtpacces,.. tambien en el esmtpacceptmailfor. Porque de seguro tu DNS apuntaba a la IP del server pero el courier pensaba que era pasarela para hacer relay a otro. Por cierto, el courier con el clamav no te consume mucho CPU?

      • En realidad aun no lo instalo, y no se como hacerlo porque vos usas maildrop (aproposito para que sirve?) y veré como unir el clamav con courier y con spamassassin.

    • Otra cosa es que algunos usuarios presentaban el siguiente error en /var/log/mail.log
      456 Address temporarily unavailable

      Solamente ejecuté:
      # courier clear all

      y ya jaleas.

    • Mi archivo /etc/default/spamassassin
      ———
      # /etc/default/spamassassin
      # Duncan Findlay

      # WARNING: please read README.spamd before using.
      # There may be security risks.

      # Change to one to enable spamd
      ENABLED=1

      # Options
      # See man spamd for possible options. The -d option is automatically added.

      # SpamAssassin uses a preforking model, so be careful! You need to
      # make sure –max-children is not set to anything higher than 5,
      # unless you know what you’re doing.

      OPTIONS=”-x –nocreate-prefs -m 64 -i 127.0.0.1 -A 127.0.0.1″
      #OPTIONS=”–create-prefs –max-children 5 –helper-home-dir”

      # Pid file
      # Where should spamd write its PID to file? If you use the -u or
      # –username option above, this needs to be writable by that user.
      # Otherwise, the init script will not be able to shut spamd down.
      PIDFILE=”/var/run/spamd.pid”

      # Set nice level of spamd
      #NICE=”–nicelevel 15″
      ———-

      Mi archivo /etc/courier/maildroprc
      ———
      if (/^Received: from .* \(.*\[.*\]\) \(AUTH: (LOGIN|PLAIN).*\) by mail.usac.edu.gt with esmtp; .* id .*/:hD || /^Received: from localhost \(localhost \[127\.0\.0\.1\]\) \(.*\) by mail.usac.edu.gt with (local|dsn); .* id .*/:hD)
      {
      echo “Not filtered: local email.”
      }
      else
      {
      if ($SIZE < 4096000)
      {
      #
      xfilter “/usr/bin/spamc -x -d 127.0.0.1 -s 4096000″
      if (/^X-Spam-Flag: YES/:D || /^X-Spam-Status: Yes/:D)
      {
      to /dev/null
      }
      #
      }
      }

      ———-

      Para probar si el spamassassin está funcionando se envia un email con el codigo de esta pagina:

      http://spamassassin.apache.org/gtube/

      XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

      Y esto asigna 1000 puntos al correo con lo que debería aparecer como bloqueado en los logs y no llegar a los Maildir de los users.

      Mi archivo /etc/courier/bofh
      ————–
      maxrcpts 100000
      opt BOFHBADMIME=accept

      # HELO/EHLO check
      opt BOFHCHECKHELO=0
      #opt BOFHCHECKHELO=1

      # Sender Policy Framework (SPF)
      opt BOFHSPFNOVERBOSE=1
      opt BOFHSPFTRUSTME=1
      opt BOFHSPFHARDERROR=fail
      opt BOFHSPFHELO=off
      #opt BOFHSPFHELO=pass,none,neutral,unknown
      opt BOFHSPFMAILFROM=pass,none,failsafe,neutral,unknown,softfail
      opt BOFHSPFFROM=mailfromok,pass,none,failsafe,neutral,unknown
      ————-

      –jaimeco

  5. Excelente guia de configuracion la verdad esta bien exlicada.

  6. La verdad no se a que se refiere este error despues de que corri el comando spamassassin –debug –lint
    [5399] dbg: check: tests=MISSING_DATE,MISSING_HEADERS,MISSING_SUBJECT,NO_RECEIVED,NO_RELAYS
    [5399] dbg: check: subtests=__GATED_THROUGH_RCVD_REMOVER,__HAS_MSGID,__MISSING_REF,__MSGID_OK_DIGITS,__MSGID_OK_HOST,__MSOE_MID_WRONG_CASE,__NONEMPTY_BODY,__SANE_MSGID,__UNUSABLE_MSGID

    Gracias….
    Ademas me gustarea saber si alguien sabe configurar el servidor de nombres con una ip dinamica ya que no tengo una ip fija estoy iniciando en Debian lenny 5

    Disculpo por aver escrito mi email mal
    Gracias

Por favor, escriba un comentario

Por favor tome en cuenta lo siguiente:
Los comentarios son moderados, por lo cual puede tardar en ser publicados. No hay necesidad de repetir su comentario.
Su correo electronico nunca sera revelado.

Terminos de busqueda


  • configurar courier
  • servidor de correo debian lenny
  • configurar servidor de correo en debian
  • servidor de correo en debian lenny
  • courier mta
  • servidor de correo debian
  • servidor de correo en debian
  • comandos mta
  • instalar courier
  • instalar servidor de correo en debian
  • courier-mta
  • courier linux
  • crear un servidor de correos en debian lenny
  • courier log
  • configurar servidor de correo lenny
  • configurar maildrop
  • courier configuracion
  • servidor correo debian lenny
  • como crear un servidor de correo en debian
  • instalar maildrop
  • instalar courier en debian
  • courier-mta mysql
  • mail envio correo linux courier
  • comandos mta server
  • montar servidor de correo debian
  • servidor correo debian
  • instalar servidor correo debian
  • configuracion courier
  • montar servidor correo debian
  • configurar nod32 mta
  • configuracion courier-base
  • ubuntu server 9 10 correo interno
  • instalar servidor mail debian
  • courier problem 513 Relaying denied
  • postfix solaris10 maildir users
  • mta debian
  • debian: instalar servidor de correos
  • configuracion de servidor de correo en fedora 12
  • debian lenny mta
  • debian courier-mta dns añadir dominio
  • debian configurar mta
  • configurar courier-mta
  • INSTLAR EN Ubuntu SERVIDOR DE CORREO
  • lenny mta
  • intalar servidor de correos en ubuntu 9 10
  • intale clamav y el archivo clamd no aparece
  • Instala y configura servidor de correo local en Ubuntu
  • linux Courier
  • levantar servidor de correo ubuntu server
  • howto debian servidor correo
  • howto servidor de correo
  • levantar servidor de correo fedora 12
  • HowTo servidor de correo en ubuntu
  • levantar servidor correos linux
  • linux install mta
  • lenny spamssassin apt-get
  • instalr unservidor de correos como gmail
  • instalacion de servidor de correo con fedora 12
  • instalar spamassassin messaging server
  • instalar spamassasin con clamav en mandriva