Integración de Clamav y DSPAM a nuestro postfix

septiembre 12, 2007 at 10:10 am (Internet, linux, Mail, Servidores, Tips)

En un articulo anterior concretamente
Servidor de Correo Postfix con Courier y soporte Mysql

Instale un Servidor de correo Integrado en una Base de Datos Mysql , en este articulo quiero ampliar las funcionalidades del servidor con un filtro antispam que el mismo usuario podra controlar , y el antivirus Clamav.

Instalación de DSPAM

Para instalar dspam necesitaremos los repositorios de Volatile

# echo deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free >> /etc/apt/sources.list

Una vez instalados los sources autenticamos el repositorio.

# wget http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add –

Actualizamos los repositorios

# apt-get update

Instalando el Software

# apt-get install dspam dspam-doc libdspam7-drv-mysql

Nota:

  • Cuando te pregunte por libdspam7-drv-mysql = YES
  • Si te pregunta password para libdspam7-drv-mysql le das a OK

Configurando DSPAM

/etc/dspam/dspam.conf

Cambialo para que quede así:

StorageDriver /usr/lib/dspam/libmysql_drv.so
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
Preference "spamSubject=SPAM"
Opt out
TrackSources spam virus
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse off
ServerPID /var/run/dspam.pid
ServerMode auto
ServerPass.Relay1 "secret"
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
ServerDomainSocketPath "/var/spool/postfix/var/run/dspam.sock"
ClientHost /var/spool/postfix/var/run/dspam.sock
ClientIdent "secret@Relay1"

Activando la configuración para todos los Usuarios

/var/spool/dspam/group

Tiene de quedar así:

dspam:shared:*.domain.com

Donde Pone domain.com lo remplazaremos por nuestro dominio.

Activando DSPAM

Para activar DSPAM modificaremos el fichero /etc/default/dspam

cambiando START=no por START=yes

Una vez hecha la modificación iniciamos DSPAM

# /etc/init.d/dspam start

Configurando Postfix

Ahora configuraremos Postfix de manera que integre dspam

modificamos el archivo /etc/postfix/master.cf

Antes:

smtp inet	n	-	-	-	-	smtpd

Despues:

smtp inet	n	-	-	-	-	smtpd
     -o content_filter=lmtp:unix:/var/run/dspam.sock

Configurando postfix para reinjeccion a DSPAM

127.0.0.1:10026	inet	n	-	-	-	-	smtpd
		-o content_filter=
		-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
		-o smtpd_helo_restrictions=
		-o smtpd_client_restrictions=
		-o smtpd_sender_restrictions=
		-o smtpd_recipient_restrictions=permit_mynetworks,reject
		-o mynetworks=127.0.0.0/8
		-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Una vez configurado reiniciamos postfix

# /etc/init.d/postfix restart

Comprobando si Postfix carga los modulos

# telnet localhost 25

Trying 127.0.0.1…
Connected to localhost.localdomain.
Escape character is ‘^]’.
220 debian.domain.com ESMTP Postfix (Debian/GNU)

ehlo localhost

250-debian.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

quit

Creando nuesto primer usuario.

Es mentira ya que lo creemos en el anterior articulo x’D

# mysql -u root -p
mysql>USE mail;

mysql> INSERT INTO `domains` (`domain`) VALUES (‘domain.com’);
INSERT INTO `users` (`email`, `password`, `quota`) VALUES (‘test@example.com’, ENCRYPT(‘userpassword’), 10485760);

Probando DSPAM

Si no tienes bzip2 instalado normalmente esta en la distro pero por si acaso

# apt-get install bzip2

Descargamos train-mails:

# cd /tmp
# wget http://spamassassin.apache.org/publiccorpus/20050311_spam_2.tar.bz2
# wget http://spamassassin.apache.org/publiccorpus/20030228_easy_ham_2.tar.bz2

# tar xvfj 20050311_spam_2.tar.bz2
# tar xvfj 20030228_easy_ham_2.tar.bz2


# dspam_train test spam_2/ easy_ham_2/

Con esto probamos con una lista de spams si es efectivo dspam.

Instalando y configurando ClamAV

# apt-get install clamav-daemon

Una vez instalado pasamos ha modificar el archivo de configuración

/etc/clamav/clamd.conf

Comentamos la linia que pone

LocalSocket /var/run/clamav/clamd.ctl

quedando así :

# LocalSocket /var/run/clamav/clamd.ctl

Una vez comentado añadimos la linia:

TCPSocket 3310Reiniciamos Clamav para que los cambios tengan efecto:

# /etc/init.d/clamav-daemon restart

Integrando ClamAV en DSPAM

Modificamos el archivo /etc/dspam/dspam.conf añadiendo la siguiente directiva:

ClamAVPort 3310
ClamAVHost 127.0.0.1
ClamAVResponse reject

Reiniciamos DSPAM

# /etc/init.d/dspam restart

Integrando DSPAM WebUI en Apache
Con el fin de que los usuarios puedan manejar el spam configuraremos un pequeño portal, que podran administrar nuestros usuarios.

Instalamos la administracion web.

# apt-get install dspam-webfrontend

También es necesario mod_auth_mysql de esta manera podran manejar los usuarios almacenados en la base de datos su propio espam.

# apt-get install mod_auth_mysql

Creamos el Fichero de accesso .htaccess con soporte para auth_mysql

# cd /var/www/dspam

Justo aqui creamos el fichero .htaccess con el siguiente contenido:

AuthName "DSPAM Authentication"
AuthType Basic
AuthBasicAuthoritative Off
Auth_MySQL_Host localhost
AuthMySQL_User  usuario
AuthMySQL_Password  Contraseña
AuthMySQL_DB mail
AuthMySQL_Password_Table users
AuthMySQL_Username_Field email
AuthMySQL_Password_Field password
AuthMySQL_Encrypted_Passwords on
AuthMySQL on
AuthMySQL_Authoritative On
require valid-user

Las partes que he puesto en negrita son el usuario y pass de acceso a la base de datos.

Creamos un Vhost /etc/apache2/apache2.conf

<VirtualHost>
DocumentRoot “/var/www/dspam”
ServerName dspam.domain.com

SuexecUserGroup dspam dspam
<Directory /var/www/dspam>
Options ExecCGI
Options -Indexes
Addhandler cgi-script .cgi
DirectoryIndex dspam.cgi
</Directory>
</VirtualHost>

Lógicamente modificaremos el Dominio por el nuestro.

Nota:Para activar el suexec haremos lo siguiente.

# cd /etc/apache2/mods-enabled
# ln -s ../mods-available/suexec.load

Reiniciamos Apache2

# /etc/init.d/apache2 restart

ahora ya podremos entrar en el dominio:

http://dspam.domain.com en el qual podremos administrar el spam.

Captura: 

Espero que os haya gustado.

5 comentarios

  1. Victror rodriguez said,

    Hola, vi la apliacación y me parece bastante buena , pero quisera saber si se puede configurar DSPAM para varios dominios virtuales, y como se realizaria, tengo un server con 13 dominios corriendo y el panel ISPCP que los administra, apache2+postfix. sobre debian etch 4.0.

    Gracias

  2. double__t said,

    Hola, bajo que distribución estas usando esta instalación? Debian etch no dispone de un módulo de autenticación de mysql contra apache2.

    Por cierto, bonito tutorial!😉

  3. _TuXeD_ said,

    Prueba a instalar libapache2-mod-auth-mysql si no te funciona puedes compilarlo no es dificil.

    # apt-get install apache2-prefork-dev libmysqlclient15-dev patch
    # mkdir mysql_auth
    # cd mysql_auth/
    wget http://acet.rdg.ac.uk/~mjeg/resources/mod_auth_mysql/mod_auth_mysql-3.0.0.tar.gz
    # wget http://acet.rdg.ac.uk/~mjeg/resources/mod_auth_mysql/apache22.diff
    # tar xzf mod_auth_mysql-3.0.0.tar.gz
    # patch -p0 ./apache22.diff
    # cd mod_auth_mysql-3.0.0
    # apxs2 -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c
    # apxs2 -i mod_auth_mysql.la
    # echo “LoadModule mysql_auth_module /usr/lib/apache2/modules/mod_auth_mysql.so” > /etc/apache2/mods-available/auth_mysql.load
    # ln -s /etc/apache2/mods-available/auth_mysql.load /etc/apache2/mods-enabled/auth_mysql.load

  4. double__t said,

    El problema es que los links a los sources no funcionan, sabes donde los puedo conseguir?

    Broken link -> http://acet.rdg.ac.uk/~mjeg/resources/mod_auth_mysql/apache22.diff
    Broken link -> http://acet.rdg.ac.uk/~mjeg/resources/mod_auth_mysql/mod_auth_mysql-3.0.0.tar.gz

    Gracias.

  5. double__t said,

    Ah, pues si que van, era mi navegador que no resolvía xD

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: