You are on page 1of 20

Postfix + Cyrus + Courier + AMaViS +

Spamassassin + ClamAV + Mysql


Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Qu es el correo electrnico?
El correo electrnico (electronic mail, e-mail o email) es un mtodo de almacenamiento reen!"o de
mensajes. Bsicamente comprende#
Elaboraci$n
En!"o
%ecepci$n
&os mensajes son trans'eridos de manera electr$nica sobre un sistema de comunicaci$n.
alejandro@barcena.com.mx
(ostmaster@it.departamento).campus*.ciudad+.escuela,.edu.mx
Orien !el correo electrnico
El correo electr$nico naci$ muc(o antes -ue el .nternet, de (ec(o es una de las (erramientas -ue
ju/aron un papel crucial para la creaci$n de .nternet. El M"# cre$ el 01istema compatible de tiempo
compartido2 (C#SS) en $%&$3 ste permit"a -ue m4ltiples usuarios entraran a la "'M ()%* desde
terminales remotas por dial-up, -ue /uardaran sus arc(i!os en el disco duro. Esta nue!a (abilidad
alentaba a los usuarios a compartir in'ormaci$n de una nue!a manera. El correo electr$nico comen5$ en
$%&+, como un sistema para -ue los usuarios de una computadora main'rame de 0tiempo compartido2
pudieran comunicarse. Aun-ue la (istoria exacta sobre el correo electr$nico es mu obscura, se puede
decir -ue los primeros sistemas -ue contaron con esta 'acilidad 'ueron los S,C Q-. los C##S !el
M"#.
El correo electr$nico pronto se extendi$ a ser un sistema para redes, permitiendo a los usuarios en!iar
mensajes entre di'erentes e-uipos en $%&&. 6espus A%7A8E9 ($%&%) (i5o una /ran contribuci$n a la
e!oluci$n del correo electr$nico, increment$ su popularidad (asta -ue se con!irti$ en su aplicaci$n
principal. En $%($ %a 9omlinson comen5$ a separar el nombre del usuario del nombre de la
computadora por medio de la @.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Cmo funciona el correo electrnico?
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Qu pasa si !eseo reci/ir correo para un !ominio que no sea local?
6ominios !irtuales. Adems del dominio local (:etc:de'aultdomain), tu puedes recibir correo para
otros dominios, llamados dominios !irtuales. 8o existe un l"mite para la cantidad de dominios
!irtuales -ue -uieras administrar.
Base de datos. 8o es necesario -ue las cuentas de correo estn li/adas a los usuarios del sistema,
incluso, ni si-uiera tienen -ue estar en un arc(i!o de texto. 7ost'ix soporta b4s-uedas en los
sistemas de bases de datos comunes (como ;1<& 7ost/re1<&). Esta tcnica resulta mu
c$moda a -ue puedes escribir una pe-ue=a aplicaci$n >eb para administrar la base de datos, o
incluso dele/ar la administraci$n de las cuentas a tus usuarios.
0os componentes que emplearemos1
Postfix# El M#A (;ail 9ran'er A/ent) -ue recibe los correos !"a el 1;97 (1imple ;ail 9rans'er
7rotocol) los entre/a en di'erentes partes del disco duro.
SAS0 (&ibrer"a Cyrus)# 1i tus usuarios se conectan 'uera de tu red, 7ost'ix no los dejar usarlo.
1A1& (1imple Aut(entication and 1ecurit &aer) les pro!eer el mecanismo de autenti'icaci$n
para -ue 7ost'ix con'"e en ellos.
Courier# Es un ser!idor de correo, como 7ost'ix, pero s$lo utili5aremos su parte de 7?7+:.;A7.
AMaViS# @n explorador de correo -ue nos permitir 'iltrar el contenido. AmaAi1 llamar a Clama!
a 1pamassassin.
Clama2# Anti!irus para @nix.
Spamassassin# Biltro de spam -ue emplea el anlisis de texto basado en 7erl.
MySQ0# &a Base de 6atos -ue /uarda la in'ormaci$n -ue controla el comportamiento de 7ost'ix.
(@suarios, dominios, 'or>ardin/s contrase=as)
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso $1 "nstalar los paquetes !e ,e/ian que se requieren3
7a-uetes absolutamente necesarios#
post'ix (Ele/ir# 01$lo local2)
post'ix-ms-l
post'ix-doc
1i la Base de 6atos estar en la misma m-uina#
ms-l-ser!er
1i !amos a o'recer acceso por medio de 7?7+:.;A7#
courier-aut(daemon
courier-aut(ms-l
courier-pop (para 7?7+ no encriptado)
courier-pop-ssl (para 7?7+ encriptado por 11&)
courier-imap (para .;A7 no encriptado)
courier-imap-ssl (para .;A7 encriptado por 11&)
1i deseamos aceptar correo para usuarios 'uera de nuesta red#
post'ix-tls (autenti'icaci$n encriptada de 1;97)
libsasl) (la librer"a Crus 1A1&)
libsasl)-modules (el mecanismo para la librer"a de 1A1&)
libsasl)-modules-s-l
openssl (para crear los certi'icados)
1i -ueremos anali5ar el correo para pre!enir !irus spam#
ama!isd-ne>
spamassassin
clama!
clama!-daemon
5oo
un5ip
unarj
l(a (Cen non-'reeD)
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso .1 Crear la 'ase !e ,atos3
Al instalar ms-l-ser!er, ste permite la conexi$n del usuario root sin pass>ord, por lo -ue es lo primero
-ue debemos cambiar#
mysqladmin -u root password password-de-mysql
Creamos la base de datos, la llamaremos Epro!eedorE.
mysqladmin -u root -p create proveedor
A(ora necesitaremos un usuario con los permisos su'icientes para accesar a nuestra base de datos. 7ara
esto abriremos una conexi$n con ;1<& desde el s(ell#
mysql -u root -p
.n/resamos el si/uiente comando 1<&#
grant select on proveedor.* to proveedor_admin@localhost identified by 'tu-password';
El comando pasado crea un nue!o usuario de la base de datos llamado proveedor_admin, -uien s$lo
tiene el pri!ile/io para ejecutar E1E&EC9E. (Esto es s$lo por cuestiones de se/uridad). 7ara 'inali5ar,
necesitamos recar/ar la in'ormaci$n de permisos en ;1<&, sto se (ace con el si/uiente comando de
1<&#
flush privileges;
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso -1 Crear las ta/las3
A(ora crearemos las tablas -ue contendrn la in'ormaci$n de control para 7ost'ix. 7rimero le decimos a
;1<& cul base de datos emplearemos#
U! proveedor;
,ominios
&a primera de nuestras tablas s$lo contendr una columna, el nombre del dominio !irtual. 6e a-u"
7ost'ix tomar los datos necesarios para saber si aceptamos, o no, correo para ese dominio !irtual.
"#!$%! %$&'! dominios (
dominio varchar()*+ ,-% ,U''.
/#01$#2 3!2 (dominio+ + %2/!41y0$1;
4or5ar!ins
&a tabla forwardings ser utili5ada para /enerar pseud$nimos de una direcci$n de correo a otra.
9ambin puede ser empleada para redirecciones /enerales (incluso para tu dominio local).
"#!$%! %$&'! forwardings (
origen varchar(5*+ ,-% ,U''.
destino %!6% ,-% ,U''.
/#01$#2 3!2 (origen+ + %2/!41y0$1;
6suarios
Binalmente la tabla usuarios -ue tendr la in'ormaci$n acerca de las cuentas de correo. Cada
usuario debe tener un nombre de usuario una contrase=a para accesar a su correo mediante
7?7+ o .;A7. Como los usuarios tienden a ol!idar las cosas (no te ima/inas cuntas contrase=as te
puedes encontrar debajo de los teclados), (e decidido emplear la cuenta de correo como el nombre
de usuario. 6e esta manera, tambin post'ix sabr c$mo almacenar el correo en el disco duro.
"#!$%! %$&'! ususarios (
email varchar(5*+ ,-% ,U''.
password varchar(7*+ ,-% ,U''.
/#01$#2 3!2 (email+ + %2/!41y0$1;
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso *1 #ra7amos los mapas !e !efinicin para la /ase !e !atos3
Es necesario indicarle a 7ost'ix -ue la in'ormaci$n de control se encuentra alojada en una base de datos.
7or tal moti!o crearemos F arc(i!os de texto en /etc/postfix. 7ost'ix corre, usualmente, en un directorio
de c(root (/var/spool/postfix), por este moti!o no puede acceder a nin/4n arc(i!o 'uera de l. 7or lo
/eneral, un pro/rama local se comunica con ;1<& por medio de un arc(i!o de socGets
(/var/run/mysqld/mysqld.sock). Como te podrs dar cuenta, este arc(i!o resulta inaccesible para 7ost'ix3
as" -ue (a ) opciones#
H. 9ratar de cambiar de lu/ar el arc(i!o de socGet. &o cul nos traer muc(os problemas en un 'uturo.
). @tili5ar la red de 9C7. (As" lo conectaremos)
Aentaja# 8o necesitamos preocuparnos por las restricciones del c(root.
6es!entaja# El ser!idor de ;1<& ser accesible por la inter'ase lo, lo cul en teor"a podr"a ser un
problema de se/uridad.
mysql8!ominios92irtuales3cf
1er un simple tra5o de mapa de los dominios !irtuales a la cadena virtual. Este mapeo es usado
para la de'inici$n de !irtualImailboxIdomains. 8o usar local(ost en el arc(i!o, sino 7ost'ix tratar
de reali5ar la conexi$n por el arc(i!o de socGets.
user 4 proveedor_admin
password 4 tu-password
dbname 4 proveedor
table 4 dominios
select_field 4 'virtual'
where_field 4 dominio
hosts 4 879.*.*.8
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
mysql8for5ar!ins92irtuales3cf
Este mapeo leer la tabla de 'or>ardin/s para proporcionar la manera en -ue se redireccionarn
las direcciones de correo. &o usaremos para !irtualIaliasImaps.
user 4 proveedor_admin
password 4 tu-password
dbname 4 proveedor
table 4 forwardings
select_field 4 destino
where_field 4 origen
hosts 4 879.*.*.8
mysql8/u7ones92irtuales3cf
&a si/uiente de'inici$n trabajar con los bu5ones de correo de los usuarios. &e indicar a 7ost'ix el
lu/ar en el disco duro en el cul deber almacenar el correo para cada direcci$n de correo
determinada. &o usaremos para el mapeo de !irtualImailboxImaps.
user 4 proveedor_admin
password 4 tu-password
dbname 4 proveedor
table 4 usuarios
select_field 4 "-,"$%(U&%#0,:_0,;!6(email.'@'.-8+.'<'.U&%#0,:_0,;!6(email.'@'.8+.'<'+
where_field 4 email
hosts 4 879.*.*.8
mysql8email.email92irtuales3cf
@n capric(o de los dominios !irtuales es la procedencia del mapeo !irtualIaliasImaps cuando
usamos una cuenta concentradora (J@dominio.com-Kusuario@dominio.com). 7or lo -ue sto es
necesario para resol!er el problema de mapeo.
user 4 proveedor_admin
password 4 tu-passwrod
dbname 4 proveedor
table 4 usuarios
select_field 4 email
where_field 4 email
hosts 4 879.*.*.8
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
La -ue ase/urarnos de -ue s$lo root pueda leer estos arc(i!os, de lo contrario cual-uier usuario del
sistema podr"a leer la contrase=a, en texto plano, para acceder a la base de datos. 7ara -ue 7ost'ix los
pueda leer, (a -ue cambiar el /rupo al -ue pertenecen, darle permiso de lectura.
chgrp postfi= <etc<postfi=<mysql-*.cf
chmod u4rw.g4r.o4 <etc<postfi=<mysql-*.cf
Paso +1 Crear el usuario 2mail3
Como todas las cuentas sern !irtuales, ser"a absurdo asi/narles un @.6 4nico a cada una. As" -ue
recomiendo crear un pseudo usuario -ue ser el propietario de todos los bu5ones de correo.
groupadd -g )*** vmail
useradd -g vmail -u )*** vmail -d <home<vmail -m
Paso &1 :!itar main3cf
El arc(i!o :etc:post'ix:main.c' es donde se almacena la con'i/uraci$n principal de 7ost'ix. 6e momento
no edites al/o ms -ue lo a-u" presentado, a (abr tiempo despus para modi'icar ms opciones.
Opcin Sinifica!o
inetIinter'aces M all
7or de'ecto 6ebian establece esta opci$n a loopback-only durante la
instalaci$n por cuestiones de se/uridad.
m(ostname M ... Ase/4rate de -ue apunte a tu dominio completo.
mdestination M ...
&ista a-u" tus dominios locales separados por comas. 8o incluas los dominios
!irtuales.
mnet>orGs M ... &ista de los ran/os de .7 a los cuales les daremos ser!icio de correo.
!irtualIaliasIdomains M 8o usaremos esta opci$n.
!irtualIaliasImaps M
ms-l#:etc:post'ix:ms-l
-'or>ardin/sI!irtuales.c'
ms-l#:etc:post'ix:ms-l
-
email)emailI!irtuales.c'
Esta es una tabla de uso /eneral para el redireccionamiento.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Opcin Sinifica!o
!irtualImailboxIdomains
M
ms-l#:etc:post'ix:ms-l
-dominiosI!irtuales.c'
Es la lista de dominios !irtuales de la tabla de dominios.
!irtualImailboxImaps M
ms-l#:etc:post'ix:ms-l
-bu5onesI!irtuales.c'
Este mapeo es mu importante. &e indica a 7ost'ix el lu/ar donde se encuentra
el bu5$n de cada usuario en el disco duro.
!irtualImailboxIbase M
:(ome:!mail
Es la ruta a partir de la cual almacenaremos los bu5ones de correo.
!irtualIuidImaps M
static#*NNN
&e indicamos a 7ost'ix -uin debe ser el due=o de los bu5ones por medio del
@.6. En este caso el usuario !mail -ue acabamos de crear.
!irtualI/idImaps M
static#*NNN
&o mismo -ue lo anterior, s$lo -ue a(ora para el /rupo (O.6).
smtpdIsaslIaut(Ienable
M es
Labilitamos el mecanismo de autenti'icaci$n para 1;97.
broGenIsaslIaut(Iclients
M es
Al/unos clientes de correo, como el ;icroso't ?utlooG, usan un mtodo mu
anti/uo ((o en d"a desaprobado) para detectar si un ser!idor de correo
entiende la autenti'icaci$n de 1;97. La -ue mantenerlos contentos M) P<uin
dijo al/o sobre ?utlooGQ
smtpdIrecipientIrestricti
ons M
permitImnet>orGs,
permitIsaslIaut(enticat
ed,
rejectIunaut(Idestinatio
n
Estas restricciones son re!isadas cuando un correo nue!o lle/a, para !er -uin
esta autori5ado para usar el ser!idor.
permitImnet>orGs le dar autori5aci$n al ran/o de .ps.
permitIsaslIaut(enticated lo (ar para -uien se (aa autenti'icado por medio
del mecanismo de 1;97.
6espus ne/amos el uso al resto de los usuarios, sal!o si estn en!iando un
correo -ue se encuentre en nuestra lista de relaIdomains.
smtpdIuseItls M es
Encriptar la sesi$n de autenti'icaci$n de 1;97 usando 11&.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Opcin Sinifica!o
smtpdItlsIcertI'ile M
:etc:post'ix:smtpd.cert
%uta al certi'icado 11& -ue usar 9&1. (&o crearemos ms adelante).
smtpdItlsIGeI'ile M
:etc:post'ix:smtpd.Ge
%uta a la lla!e pri!ada del certi'icado 11&.
6na prue/a express1
%einiciamos 7ost'ix (;etc;init3!;postfix restart) ejecutamos postfix c<ec=. 1i no aparecen
ad!ertencias... esta parte esta completa. M)
Paso (1 >acer que Postfix entien!a la autentificacin !e SM#P ?Aut<8SM#P@
1i permitiramos -ue cual-uier (ijo de !ecino usara nuestro ser!idor de correo, nos con!ertir"amos
inmediatamente en lo -ue se llama un open relay. &os spammers no tardar"an en encontrarlo les
estar"amos audando a se/uir inundndonos de correo basura. Es por esto -ue necesitamos -ue los
usuarios remotos se autenti'i-uen para poder usar nuestro ser!idor. Con'i/urar la autenti'icaci$n por
1;97 es mu sencillo, el 4nico problema al -ue nos en'rentamos es -ue 6ebian ejecuta 7ost'ix en un
c(root por de'ecto.
"n!icarle a Postfix que use SAS0 con MySQ01
Creamos el arc(i!o de con'i/uraci$n# :etc:post'ix:sasl:smtpd.con'
pwchec>_method? au=prop
au=prop_plugin? sql
mech_list? plain login cram-md) digest-md)
sql_engine? mysql
sql_hostnames? 879.*.*.8
sql_user? proveedor_admin
sql_passwd? tu-password
sql_database? proveedor
sql_select? select password from usuarios where email4'@u@@r'
Ra sabemos sobre los permisos#
chown root?postfi= <etc<postfi=<sasl<smtpd.conf
chmod u4rw.g4r.o4 <etc<postfi=<sasl<smtpd.conf
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
6sar #0S para encriptar el trAfico !e SM#P1
@n paso importante es encriptar la sesi$n de 1;97, de lo contrario en nombre de usuario la contrase=a
!iajarn de un modo mu inse/uro si el usuario eli/e emplear una autenti'icaci$n de texto plano. 7or lo
-ue su/iero encriptar la comunicaci$n usando #0S (9ransport &aer 1ecurit), -ue explicndolo
bre!emente, emplea SS0 (1ecure 1ocGet &aer) -ue encripta la conexi$n de correo entre el ser!idor el
usuario.
7rimero necesitaremos un certi'icado de 11&. 1i tu no deseas pa/arle a tu trustcenter 'a!orito, podemos
emplear uno 'irmado por nosotros mismos. (8ota personal# me pre/unto... Pc$mo es -ue pa/ando por
al/o se !uel!e ms se/uroQ) El 4nico problema es -ue el cliente de correo no sabe sobre nuestro CA
(Certi'icate Aut(orit) le en!iar un mensaje de ad!ertencia a nuestros usuarios. As" -ue debemos
pedirles a nuestros usuarios -ue lo i/noren, o bien, permitirles -ue instalen el certi'icado en sus
computadoras. (?utlooG no !a a permitir -ue esto sea i/norado, as" -ue debern instalar el certi'icado
para -ue esto 'uncione). 7ara un certi'icado !lido por HN a=os para el dominio smtp.dominio.com#
openssl req -new -outform /!1 -out <etc<postfi=<smtpd.cert -new>ey rsa?7*A5 B
-nodes ->eyout <etc<postfi=<smtpd.>ey ->eyform /!1 -days CD)* -=)*E
9endremos -ue contestar al/unas pre/untas, prestando una atenci$n especial a Common Name -ue
deber ser el nombre del ser!idor de correo#
"ountry ,ame (7 letter code+ F$UG?MX
tate or /rovince ,ame (full name+ Fome-tateG?Coahuila
'ocality ,ame (eg. city+ FG?Torreon
-rganiHation ,ame (eg. company+ F0nternet Iidgits /ty 'tdG? Taller de correo electronico
-rganiHational Unit ,ame (eg. section+ FG?UAC
"ommon ,ame (eg. 2-U# name+ FG?servidor.uadec.mx
!mail $ddress FG?postmaster@servidor.uadec.mx
?btendremos ) arc(i!os# smtp!3=ey (la lla!e pri!ada) smtp!3cert (el certi'icado).
chmod u4rw.g4r.o4 <etc<postfi=<smtpd.>ey
chown root?postfi= <etc<postfi=<smtpd.>ey
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso B1 Confiurar el ser2icio !e POP-;"MAP
Ra (emos a!an5ado muc(o en la con'i/uraci$n, sin embar/o nuestros usuarios estarn mu enojados a
-ue toda!"a no puedes acceder a sus bu5ones de correo... por lo -ue es tiempo de con'i/urar el ser!icio
de 7?7+ :o .;A7. 7rimero (a -ue editar el arc(i!o ;etc;courier;aut<!aemonrc establecer la
directi!a aut<mo!ulelist a aut<mysql.
authmodulelist4JauthmysqlJ
A(ora de'iniremos los campos de la tabla de ;1<& en ;etc;courier;aut<mysqlrc#
12K'_!#L!# localhost
12K'_U!#,$1! proveedor_admin
12K'_/$I-#; tu-password
12K'_/-#% *
12K'_;$%$&$! proveedor
12K'_U!#_%$&'! usuarios
M12K'_"#2/%_/IN0!'; (comment this out+
12K'_"'!$#_/IN0!'; password
12K'_U0;_N0!'; )***
12K'_:0;_N0!'; )***
12K'_'-:0,_N0!'; email
12K'_O-1!_N0!'; J<home<vmailJ
M12K'_,$1!_N0!'; (comment this out+
12K'_1$0';0#_N0!'; "-,"$%(U&%#0,:_0,;!6(email.'@'.-8+.'<'.U&%#0,:_0,;!6(email.'@'.8+.'<'+
La -ue tener cuidado de no insertar espacios en blanco despus de cada opci$n, aut(ms-l es un poco
-uis-uilloso. A(ora reiniciamos el demonio de autenti'icaci$n# ;etc;init3!;courier8aut<!aemon restart
@na prueba express#
Abriremos un telnet para !er si contesta nuestro ser!idor de 7?7+.
telnet localhost popC
1i nos responde con 0S?T Lello t(ere2... nuestros usuarios a deben estar contentos.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso %1 Pro/ar nuestra confiuracin3
CBelicidadesD 8uestra parte de con'i/uraci$n bsica (a terminado. PAl/uien pic(a las /ordasQ
A(ora a/re/aremos a nuestra base de datos un dominio un usuario para probar el ser!icio.
0,!#% 0,%- dominios (PdominioP+ L$'U! ('virtual.test'+;
0,!#% 0,%- usuariosP (PemailP.PpasswordP+ L$'U! ('usuario@virtual.test'.'secreto'+;
Establecemos un telnet a nuestro ser!idor de 1;97#
telnet localhost smtp
Ser2i!or #u
77* miservidor !1%/ /ostfi= (;ebian<:,U+


ehlo uadec.m=
7)*-mailtest
7)*-/0/!'0,0,:
7)*-0Q! 8*7A****
7)*-L#N2
7)*-!%#,
7)*-%$#%%'
7)*-$U%O '-:0, /'$0, ;0:!%-1;) "#$1-1;)
7)*-$U%O4'-:0, /'$0, ;0:!%-1;) "#$1-1;)
7)* 5&0%101!


mail
from?RaleSandro@barcena.com.m=T
7)* ->


rcpt to?Rusuario@virtual.testT
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Ser2i!or #u
7)* ->


data
C)A !nd data with R"#TR'NT.R"#TR'NTR<'NTR<"#TR<'NTR<"#T


!ste es un correo de prueba.
.
7)* ->? queued as $&"8;8"87C


quit
778 &2!

Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso $)1 A po/lar la /ase !e !atos3
Ra -ue sabemos -ue el ser!icio esta 'uncionando, a/re/aremos dominios usuarios.
7ara cada dominio nue!o#
A/re/arlo a la tabla de dominios.
7ara cada usuario nue!o#
A/re/arlo a la tabla de usuarios.
7ara cada 'or>ardin/ nue!o#
A/re/arlo a la tabla de 'or>ardin/s. 1i es un destinatario m4ltiple, (a -ue separar los correos con
comas. 7or ejemplo#
orien !estino :fecto
postmaster@mi.dominio alejandro@mi.dominio %edirecciona el correo de postmaster a alejandro.
@mi.dominio m77@mi.dominio
&e en!"a todo el correo en!iado al dominio mi.dominio a
m77. Esto no aplica para las cuentas -ue se encuentren
en la tabla de usuarios. 7or ejemplo#
>ebmaster@mi.dominio.
@mi.dominio @otro.dominio
Esto redirecciona todo el dominio. Cada direcci$n de
correo de mi.dominio ser diri/ida al mismo usuario de
otro.dominio. 7or lo -ue m77@mi.dominio ser
rediri/ido a m77@otro.dominio.
/ula/@mi.dominio
alejandro@mi.dominio
,m77@/mail.com
9odo el correo -ue le lle/ue a /ula/@mi.dominio ser
en!iado a las ) cuentas. Cada usuario obtiene una
copia.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso $$1 Anali7ar el correo para encontrar spam y 2irus3
"ntro!uccin a AmaViS1
&as ) cosas ms molestas, incluso ms -ue las cadenas, al utili5ar el correo electr$nico son el spam los
!irus. A'ortunadamente podemos combatir ambos con un so't>are llamado A;aAi1 (A ;ail Airus
1canner). Es una inter'ase entre 7ost'ix, 1pamassassin ('amoso por su capacidad de 'iltrado baesiana)
cual-uier anti!irus, como Clama!, -ue es libre.
Confiuracin !e AMaViS1
6ebemos ocuparnos de lo si/uiente en ;etc;ama2is;ama2is!3conf#
Opcin Sinifica!o
Umdomain M
Emidominio.or/E3
1i no !amos a usar dominios locales, la establecemos como local(ost.
@bpassI!irusIc(ecGsIacl
M ->( . )3
1i esta opci$n esta comentada (tiene un V al inicio) entonces la re!isi$n de
!irus esta (abilitada.
@bpassIspamIc(ecGsIacl
M ->( . )3
1i esta opci$n esta comentada (tiene un V al inicio) entonces la re!isi$n de
spam esta (abilitada.
@looGupIs-lIdsn M
( W E6B.#ms-l#pro!eedorE,
Epro!eedorIadminE, Etu-
pass>ordE X )3
A-u" le indicamos a A;aAi1 c$mo accesar a nuestra base de datos, a -ue
!a a necesitar la tabla de dominios.
Us-lIselectIpolic M
E1E&EC9 YRY as local B%?;
dominioss ZLE%E
C?8CA9(Y@Y,dominio) .8
([G)E3
A;aAi1 necesita saber -u dominios estn (ospedados en el ser!idor. 6e
esta manera determina si el correo !a de salida (en!iado por nuestro
ser!idor) o !iene lle/ando (en!iado por al/uien en internet). El correo de
salida no ser !eri'icado contra !irus o spam.
U'inalI!irusIdestin M
6I6.1CA%63
El !alor por de'ecto es B?@8CE. Esto rara !e5 es 4til, a -ue el correo a se
encuentra en nuestro ser!idor, se tendr"a -ue en!iar un correo de re/reso
al remitente. Creanme, el remitente real de un correo in'ectado por !irus
jams (,,[) es la persona -ue aparece en el encabe5ado de correo.
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Opcin Sinifica!o
U'inalIbannedIdestin M
6I%E\EC93
P<u (acer con los correos -ue tienen extensiones !etadasQ
U'inalIspamIdestin M
6I7A113
P<u (acer con los correos clasi'icados como spamQ
UsaIta/Ile!elIde'lt M -HNNN
3
A;aAi1 cali'ica cada correo con una cali'icaci$n de spam. 7or lo /eneral,
!aria entre * HN. 7ero s$lo mostrar la cali'icaci$n en el encabe5ado si
sta es superior a este !alor.
UsaIta/)Ile!elIde'lt M *.N3
1i la cali'icaci$n es superior a este !alor, se a=adir un encabe5ado#
"-!pam-!tatus" #es"
UsaIGillIle!elIde'lt M HN3
1i la cali'icaci$n es superior a este !alor, A;aAi1 tomar cartas en el
asunto. &a acci$n a emprender se de'ine en U'inalIspamIdestin.
UsaIspamIsubjectIta/ M
EJJJ17A;JJJ E3
1i deseas alterar el asunto de los correos catalo/ados como spam.
@a!Iscanners M ( ...
En esta secci$n puedes con'i/urar uno o ms anti!irus. Al/unos mu
comunes !ienen precon'i/urados, s$lo (a -ue -uitarles el V para -ue
dejen de ser comentarios. 7ara empe5ar, su/iero s$lo utilices el de Clama!
comentes el resto. P9e pre/untas por -u Clama! aparece ) !ecesQ
Bueno, @a!Iscanners emplea la !ersi$n de demonio (clamd)
@a!IscannersIbacGup emplea la de l"nea de comandos (clamscan).
UsaIlocalItestsIonl M N3
Como no tenemos acceso a internet, lo dejaremos as"3 no obstante, es mu
recomendable -ue este (abilitada para un mejor 'uncionamiento del
anali5ador de spam.
1i deseas emplear clamd, (a -ue a/re/ar el usuario clama! al /rupo ama!is.
adduser clamav amavis
reiniciamos el ser!icio de ama!is para acti!ar los cambios (;etc;init3!;ama2is restart).
Postfix + Cyrus + Courier + AMaViS +
Spamassassin + ClamAV + Mysql
Alejandro Brcena Campos
alejandro@barcena.com.mx
m77
Paso $.1 "n!icarle a Postfix que use AMaViS3
La -ue establecer el 'iltrado /lobal de contenido en ;etc;postfix;main3cf#
content_filter 4 amavis?F879.*.*.8G?8**7A
receive_override_options 4 no_address_mappings
&a opci$n content_filter (ace -ue todo el correo sea en!iado a un ser!icio llamado ama!is, el cual
de'iniremos en el arc(i!o :etc:post'ix:master.c'#
amavis uni= - - - - 7 smtp
-o smtp_data_done_timeout487**
-o smtp_send_=forward_command4yes
879.*.*.8?8**7) inet n - - - - smtpd
-o content_filter4
-o local_recipient_maps4
-o relay_recipient_maps4
-o smtpd_restriction_classes4
-o smtpd_client_restrictions4
-o smtpd_helo_restrictions4
-o smtpd_sender_restrictions4
-o smtpd_recipient_restrictions4permit_mynetwor>s.reSect
-o mynetwor>s4879.*.*.*<5
-o strict_rfc578_envelopes4yes
-o receive_override_options4no_un>nown_recipient_chec>s.no_header_body_chec>s