INSTALACIÓN DE LOS PAQUETES NECESARIOS:
- Crear máquina virtual para hacer el prototipo de implantación
El servidor que vamos a crear puede estar funcionando tanto en una máquina virtual como en un máquina física, no obstante, sea como sea, yo siempre aconsejo que antes se hagan las pruebas de instalación en un entorno virtual. Muchas veces a la hora de instalarlo hacemos pruebas que luego no acabamos de depurar bien y esos restos pueden hacen que nuestros servicios no estén lo óptimos que podrían estar. Para el ejemplo haremos servir
VirtualBox.
- Instalar el sistema operativo
Una vez tengamos creada la máquina virtual pasaremos a instalar la distribución que creamos más conveniente. Yo tengo cierta debilidad por Ubuntu, así que como a dia de la edición de este artículo recién había salido el
Ubuntu 9.10, ese hice servir en su versión server x64. La instalación la hice por defecto, en donde ya podemos comprobar que el sistema de archivos
ext4 viene por defecto.
Llegado un momento, nos pregunta que tipo de servidor será, pero no seleccionaremos ningún perfil. En este caso nos va a interesar configurar todos sus elementos a mano.
Le asignaremos una IP de nuestra red y escogeremos un nombre para él (para el ejemplo usaremos aquila como nombre del servidor).
Ahora instalaremos el
MTA. Para hacerlo tenemos que poner la siguiente linea:
apt-get install sendmail
sendmail:"Sendmail is an alternative Mail Transport Agent (MTA) for Debian. It is suitable for handling sophisticated mail configurations,although this means that its configuration can also be complex.Fortunately, simple thing can be done easily, and complex things are possible, even if not easily understood ;) Sendmail is the *ONLY* MTA with a Turing complete language to control *ALL* aspects of delivery!"
root@aquila:~# apt-get install sendmail
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
m4 procmail sendmail-base sendmail-bin sendmail-cf sensible-mda
Paquetes sugeridos:
sendmail-doc rmail logcheck resolvconf sasl2-bin
Paquetes recomendados
postfix mail-transport-agent fetchmail
Se instalarán los siguientes paquetes NUEVOS:
m4 procmail sendmail sendmail-base sendmail-bin sendmail-cf sensible-mda
0 actualizados, 7 se instalarán, 0 para eliminar y 4 no actualizados.
Necesito descargar 2065kB de archivos.
Se utilizarán 6205kB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
Como se puede comprobar, automáticamente nos dice los paquetes que son dependencia de sendmail y nos pregunta si queremos instalarlo todo. Con decirle que si la instalación no tiene más secreto.
Podemos probar si lo hemos instalado bien :
root@aquila:~# sendmail blueddy@eithel-inside.com
Test desde aquila
.
Más información en:
http://www.sendmail.org/
Una vez hemos instalado sendmail como nuestro MTA, pasamos a instalar los filtros para que nuestro correo esté limpio de virus y spam. Para ello hemos escogido MIMEdefang ya que se integra perfectamente con sendmail.
apt-get install mimedefang
mimedefang:"MIMEDefang is an e-mail filter program which processes all messages sent via Sendmail. It splits multi-part MIME messages into their components and can delete or modify those parts before reassembling the message and sending it on its way."
root@aquila:~# apt-get install mimedefang
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
defoma fontconfig-config libconvert-binhex-perl libdigest-sha1-perl libdrm-intel1 libdrm-radeon1 libdrm2 libfontconfig1 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libice6 libio-stringy-perl
libmilter1.0.1 libmime-tools-perl libperl5.10 libsm6 libunix-syslog-perl libxaw7 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxmu6 libxpm4 libxrender1 libxt6 libxtst6 libxv1 libxxf86dga1
libxxf86vm1 tcl8.3 tk8.3 ttf-dejavu ttf-dejavu-core ttf-dejavu-extra x11-utils xbitmaps xterm
Paquetes sugeridos:
defoma-doc psfontmgr x-ttcidfont-conf dfontmgr libft-perl libglide3 libmail-spamassassin-perl sanitizer wv libfile-scan-perl clamav libarchive-zip-perl graphdefang tclreadline mesa-utils xfonts-cyrillic
Se instalarán los siguientes paquetes NUEVOS:
defoma fontconfig-config libconvert-binhex-perl libdigest-sha1-perl libdrm-intel1 libdrm-radeon1 libdrm2 libfontconfig1 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libice6 libio-stringy-perl
libmilter1.0.1 libmime-tools-perl libperl5.10 libsm6 libunix-syslog-perl libxaw7 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxmu6 libxpm4 libxrender1 libxt6 libxtst6 libxv1 libxxf86dga1
libxxf86vm1 mimedefang tcl8.3 tk8.3 ttf-dejavu ttf-dejavu-core ttf-dejavu-extra x11-utils xbitmaps xterm
0 actualizados, 41 se instalarán, 0 para eliminar y 4 no actualizados.
Necesito descargar 13,6MB de archivos.
Se utilizarán 64,3MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
al final de la instalación se puede comprobar que arranca el mimedefang:
Configurando mimedefang (2.67-1) ...
Adding user smmsp to group defang
Starting mimedefang-multiplexor: [ OK ]
Starting mimedefang: [ OK ]
Podemos probar que la instalación se haya hecho correctamente:
csi@aquila:~$ mimedefang.pl -f /etc/mail/mimedefang-filter -test
Filter /etc/mail/mimedefang-filter seems syntactically correct.
csi@aquila:~$ mimedefang.pl
Más información:
http://www.mimedefang.org/
- Instalar clamAV
Una vez instalado el filtro de correo, es el momento de instalar tantos antivirus y antispammers como creamos necesario (tampoco es bueno caer en la paranoia e instalar 99 antivirus..). clamAV es un buen antivirus de código libre que podemos instalar.
apt-get install clamav
clamav:"Clam AntiVirus is an anti-virus toolkit for Unix. The main purpose of this software is the integration with mail servers (attachment scanning)."
root@aquila:~# apt-get install clamav
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
clamav-base clamav-freshclam libclamav6 libltdl7 libtommath0
Paquetes sugeridos:
clamav-docs libclamunrar6
Se instalarán los siguientes paquetes NUEVOS:
clamav clamav-base clamav-freshclam libclamav6 libltdl7 libtommath0
0 actualizados, 6 se instalarán, 0 para eliminar y 4 no actualizados.
Necesito descargar 23,8MB de archivos.
Se utilizarán 25,5MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
i al final se puede ver com arranca la base de datos del antivirus.
Configurando clamav-freshclam (0.95.2+dfsg-4ubuntu4) ...
* Starting ClamAV virus database updater freshclam [ OK ]
Más información en:
http://www.clamav.net/
Más información en:
http://www.mcafee.com/us/enterprise/products/system_security/servers/virusscan_command_line_scanner_windows_unix.html
Ahora toca instalar el sistema antispam. Para ello usaremos el SpamAssassin dado que es realmente efectivo y se integra muy bien con el resto del sistema que estamos montando.
apt-get install spamassassin
root@aquila:~# apt-get install spamassassin
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
binutils gcc gcc-4.4 libc-dev-bin libc6-dev libdigest-hmac-perl liberror-perl libgomp1 libio-socket-inet6-perl libmail-spf-perl libnet-dns-perl libnet-ip-perl libnetaddr-ip-perl libsocket6-perl
libsys-hostname-long-perl linux-libc-dev re2c spamc
Paquetes sugeridos:
binutils-doc gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc gcc-4.4-locales libgcc1-dbg libgomp1-dbg libmudflap0-dbg
libcloog-ppl0 libppl-c2 libppl7 glibc-doc razor libnet-ident-perl libio-socket-ssl-perl libdbi-perl pyzor libmail-dkim-perl
Se instalarán los siguientes paquetes NUEVOS:
binutils gcc gcc-4.4 libc-dev-bin libc6-dev libdigest-hmac-perl liberror-perl libgomp1 libio-socket-inet6-perl libmail-spf-perl libnet-dns-perl libnet-ip-perl libnetaddr-ip-perl libsocket6-perl
libsys-hostname-long-perl linux-libc-dev re2c spamassassin spamc
0 actualizados, 19 se instalarán, 0 para eliminar y 4 no actualizados.
Necesito descargar 10,2MB de archivos.
Se utilizarán 38,4MB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
y final podemos ver:
SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin
Más información en:
http://spamassassin.apache.org/
CONFIGURACIÓN DE LOS MÓDULOS:
Cuando hagamos un cambio en MIMEdefang lo podremos probar con la siguiente instrucción:
/etc/init.d/mimedefang restart ; mimedefang.pl -features ; sendmail eithel@dominio.es
Integración de Sendmail con MIMEdefang
sendmail.mc
Hemos de sacar la restricción Addr
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea')dnl
Añadimos el filtro MIMEdefang
define(`MILTER', `1')dnl
define(`confMILTER_LOG_LEVEL', `6')dnl
INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=T, T=S:1m;R:1m;E:5m')dnl
Reconstruimos el sendmail.cf mediante la instrucción make
root@aquila:/etc/mail# make -C /etc/mail
make: se ingresa al directorio `/etc/mail'
Updating databases ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases...
Updating auth ...
sasl2-bin not installed, not configuring sendmail support.
To enable sendmail SASL2 support at a later date, invoke "/usr/share/sendmail/update_auth"
Creating /etc/mail/relay-domains
# Optional file...
Updating Makefile ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile...
Updating sendmail.cf ...
The following file(s) have changed:
/etc/mail/sendmail.cf
** ** You should issue `/etc/init.d/sendmail reload` ** **
make: se sale del directorio `/etc/mail'
Integración de MIMEdefang con los módulos
Módulo clamAV (antivirus)
Añadir en mimedefang.pl.conf la seguiente linea:
$Features{'Virus:CLAMAV'} = ('/usr/bin/clamscan' ne '/bin/false' ? '/usr/bin/clamscan' : 0);
Recordemos que el archivo /etc/clamav/freshclam.conf es donde se guarda la configuración para actualizar clamav.
Reiniciamos mimedefang de la siguiente manera:
/etc/init.d/mimedefang restart
Módulo SpamAssassin (Antispam)
Para activar el módulo de SpamAssassin hemos de editar el archivo /etc/default/spamassassin
# Change to one to enable spamd
ENABLED=1
Si quisieramos integrar más antivirus, antispamers, etc, deberemos irlos integrando segun los ejemplos anteriores. Para que nos hagamos una idea de caracteristicas a añadir:
$Features{'Virus:AVP'}
$Features{'Virus:AVP5'}
$Features{'Virus:KAVSCANNER'}
$Features{'Virus:CLAMAV'}
$Features{'Virus:CLAMD'}
$Features{'Virus:FPROT'}
$Features{'Virus:FSAV'}
$Features{'Virus:FileScan'}
$Features{'Virus:HBEDV'}
$Features{'Virus:VEXIRA'}
$Features{'Virus:NAI'}
$Features{'Virus:BDC'}
$Features{'Virus:NVCC'}
$Features{'Virus:OpenAV'}
$Features{'Virus:SymantecCSS'}
$Features{'Virus:FPROTD'}
$Features{'Virus:SOPHIE'}
$Features{'Virus:SOPHOS'}
$Features{'Virus:TREND'}
$Features{'Virus:TROPHIE'}
$Features{'Virus:CSAV'}
Relay
Es posible que lo que queramos de esta máquina que estamos configurando sea que limpie correos y luego mande los correos filtrados a un servidor IMAP o POP3. Bien, para ello tendremos que decirle a nuestra máquina que después de filtrar los mensajes los reenvie a ese servidor IMAP o POP3 . Veamos el ejemplo de un escenario típico:
Eso es lo que llamamos Relay. Para hacer relay seguiremos los siguientes pasos:
Añadimos al sendmail.mc la característica de mailertable:
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
y despues creamos la tabla de enrutado
/etc/mail/mailertable:
host.es smtp:[imap.host.es]
server1.host.es smtp:[imap.host.es]
En el ejemplo hemos considerado nuestro dominio es host.es. Hay que fijarse que también hemos añadido a server1.host.es ya que este server nos manda mensajes para hacer relay como root@server1.host.es
Una vez hecho esto, recompilamos para que tengan efecto los cambios:
make -C /etc/mail
y podremos comprobar como efectivamente hace relay:
Nov 5 13:50:02 aquila sm-mta[6346]: nA5CnwAv006343: to=, ctladdr= (1000/1000), delay=00:00:04, xdelay=00:00:00, mailer=smtp, pri=120311, relay=imap.host.es. [192.168.1.10], dsn=2.0.0, stat=Sent (nA5Co3DD026297 Message accepted for delivery)
Autentificación
Para que tus usuarios se puedan autentificar, sólo es necesario que tu sistema reconozca al usuario, ya sea por sistema PAM, LDAP, etc.
En el caso de ejemplo voy a poner como hice para que el servidor se autentificara contra el OpenLDAP que hay instalado en el sistema. (La instalación de un servidor OpenLDAP y la integración con un cliente GNU/Linux lo explicaré en otro artículo):
Paquetes necesarios:
sudo apt-get install libnss-ldap
Luego edité los archivos ldap.conf y nsswitch.conf. Para comprobar si funciona correctamente sólo hace falta poner:
getent passwd
ó
getent group
Espero que os sirva para montar vuestro servidor Sendmail con filtrado de correo.