Está en la página 1de 14

Servidor de Correo

Servidor de Correo
(Postfix+Courier+MySQL)
ndice
1.Introduccin.....................................................................................................2
2.Instalando Postfix..............................................................................................2
3.Aplicando Parche a Postfix, para que pueda soportar cuotas en los buzones...............3
4.Confiurando Postfix..........................................................................................4
!.Confiurando Postfix.........................................................................................."
!.1.Archi#os ha crear........................................................................................."
".Instalando $ Confiurando %$&'(........................................................................)
).Confiurando Courier........................................................................................1*
+.Poniendo en ,archa todo..................................................................................1*
-..o,ar en cuenta..............................................................................................11
1*.Aplicar seuridad a Postfix /todas las opciones son opcionales0............................12
11.Conclusiones.................................................................................................13
F. Skrdz F. Skrdz
1. Introduccin Introduccin
I
Postfix es un %.A /%essae .ransfer Aent0 relati#a,ente f1cil de ad,inistrar,
seuro /al ,enos ,1s que send,ail $ otros0 $ que no sobrecara ,ucho la ,1quina $a
que sola,ente se caran los ,dulos necesarios en cada ,o,ento. &u funcin es
co,unicarse con los otros ser#idores /riel.deusto.es, terra.es ...0, para entrearse entre
ellos el correo.
e
Por e2e,plo, cuando al3n a,io nuestro nos quiere en#iar un ,ail, se conecta al
ser#idor de correo de terra /,ailhost.terra.es0 $ ,ediante el protocolo &%.P, ,anda los
co,andos necesarios para que reciba su ,ensa2e. Posterior,ente, ,ailhost.terra.es se
conecta con riel.deusto.es $ le entrea dicho ,ail, con lo que 4ste lo uarda en el buzn
del usuario al que iba diriido el ,ensa2e. &i ba2a,os al aula de correo de la 5ni#ersidad,
,ediante el protocolo pop3 nos co,unica,os con riel.deusto.es para que nos de#uel#a
los ,ensa2es que ha$ en nuestro buzn $ as6 recibir el ,ensa2e que nuestro a,io nos
hab6a en#iado.
h
7tro protocolo para poder 8#er8 los ,ensa2es que tene,os en nuestro ser#idor, es I%AP
/Internet %essae Access Protocol0, el cual es ,ucho ,1s potente que el pop3
anterior,ente citado. Per,ite entre otras ,uchas cosas, acceder a los ,ensa2es del
ser#idor co,o si fueran locales, creacin de carpetas en el buzn del ser#idor, buzones
accesibles por #arias personas... 9e eleido courier:i,ap para i,ple,entarlo $ poder #er
as6, toda su potencia.
a
Por 3lti,o, pero no por ello ,enos i,portante, ante cuestiones del estilo de 8c,o se
podr6a hacer para tener usuarios solo para el correo;8... se Introdu2o ta,bi4n en la
pare2a postfix:courier, %$&'( para tener una <ase de =atos en la que se podr6an ir
uardando los usuarios 8#irtuales8 /$a que no #an a existir en el siste,a $ por tanto en >
etc>pass?d0 de correo electrnico.
e
Co,o resu,en a esta peque@a introduccin, tene,os que Postfix se encarar1 de las
labores de %.A, Courier de dar ser#icio I%AP $ %$&'( de al,acenar los usuarios
8#irtuales8.
2. Instalando Postfix
I
Postfix es ,u$ sencillo de ponerlo a andar. Con la confiuracin que #iene por defecto /si
no recuerdo ,al0, $a es capaz de en#iar ,ensa2es. Para instalarlo en 5buntu, basta conA
n
sudo apt-get install postfix

.a,bi4n #a,os a instalar el soporte que tiene postfix para ,$sqlA
.
sudo apt-get install postfix-mysql

Para lBs que no usen =ebian, este soporte ha$ que d1rselo reco,pilando postfix con las
opciones necesarias de la for,a que ,uestro a continuacinA
o
make -f Makefile.init makefiles \
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
'AUXLIBS=/usr/local/mysql/lib -lmysqlclient -lz -lm'
make && make install

&ustitu$endo >usr>local por la ruta donde tenas dichos archi#os en tu ,1quina. A
continuacin copia,os el archi#o #irtual del src de postfix al directorio de 4steA
c
cp src/virtual/virtual /usr/libexec/postfix
3. Aplicando Parche a Postfix, para que pueda soportar cuotas
en los buzones
e
=ebe,os de tener las fuentes de Postfix $ alunas otras cositas para poder contruir un
nue#o postfix con la funcionabilidad de soportar las cuotas en los buzones. 9are,os un
nue#o paquete =C<. &e deber1 de instalarA
n
apt-get install build-essential dpkg-dev fakeroot \
debhelper libgdbm-dev libldap2-dev libpcre3-dev \
libssl-dev libsasl2-dev postgresql-server-dev-8.2 \
po-debconf dpatch libmysqlclient15-dev lsb-release \
libcdb-dev libdb4.5-dev
l
cd /usr/src
apt-get source postfix
a
=eber1s de estar seuro que uses la #ersin correcta de Postfix en el co,ando. Do teno
instalado la 2.4.!.. Puedes encontrar tu #ersin de Postfix e2ecutandoA
i
postconf -d | grep mail_version
p
Cl resultado ser1 alo as6A
C
root@server1:~# postconf -d | grep mail_version
mail_version = 2.4.5
milter_macro_v = $mail_name $mail_version
root@server1:~#

(ueo, se deber1 de descarar $ hacer el siuiente procesoA
(
wget http://vda.sourceforge.net/VDA/postfix-2.4.5-vda-ng.patch.gz
gunzip postfix-2.4.5-vda-ng.patch.gz
cd postfix-2.4.5
patch -p1 < ../postfix-2.4.5-vda-ng.patch
dpkg-buildpackage

Al final, aparecer1 una ad#ertencia pero la puedes inorar.
A
(WARNING: Failed to sign .dsc and .changes file)

Ahora deber1s ir al directorio de arriba que es donde esta el nue#o paquete =C<.
A
cd ..

lueo el co,andoA
l
ls -l

%ostrar1 tu paquete =C< nue#o.
%
root@server1:/usr/src# ls -l
total 5424
drwxr-xr-x 19 root src 4096 2007-11-16 14:33 postfix-2.4.5
-rw-r--r-- 1 root src 222693 2007-11-16 14:30 postfix_2.4.5-3ubuntu1.diff.gz
-rw-r--r-- 1 root src 663 2007-11-16 14:30 postfix_2.4.5-3ubuntu1.dsc
-rw-r--r-- 1 root src 1783 2007-11-16 14:33 postfix_2.4.5-3ubuntu1_i386.changes
-rw-r--r-- 1 root src 1123668 2007-11-16 14:33 postfix_2.4.5-3ubuntu1_i386.deb
-rw-r--r-- 1 root src 2934634 2007-08-03 19:53 postfix_2.4.5.orig.tar.gz
-rw-r--r-- 1 root src 57055 2007-08-02 01:13 postfix-2.4.5-vda-ng.patch
-rw-r--r-- 1 root src 38078 2007-11-16 14:33 postfix-cdb_2.4.5-3ubuntu1_i386.deb
-rw-r--r-- 1 root src 133642 2007-11-16 14:33 postfix-dev_2.4.5-3ubuntu1_all.deb
-rw-r--r-- 1 root src 826202 2007-11-16 14:33 postfix-doc_2.4.5-3ubuntu1_all.deb
-rw-r--r-- 1 root src 44340 2007-11-16 14:33 postfix-ldap_2.4.5-3ubuntu1_i386.deb
-rw-r--r-- 1 root src 4011 2007-11-16 14:33 postfix-mysql_2.4.5-3ubuntu1_i386.deb
-rw-r--r-- 1 root src 39956 2007-11-16 14:33 postfix-pcre_2.4.5-3ubuntu1_i386.deb
-rw-r--r-- 1 root src 4019 2007-11-16 14:33 postfix-pgsql_2.4.5-3ubuntu1_i386.deb
root@server1:/usr/src#
r
(ueo to,as el paquete postfix $ postfix:,$sql para instalarlos. As6A
(
dpkg -i postfix_2.4.5-3ubuntu1_i386.deb
dpkg -i postfix-mysql_2.4.5-3ubuntu1_i386.deb

7 con si,ples doble clic ta,bi4n.
4. Configurando Postfix
C
5na #ez instalado, #a,os a >etc>postfix $ con nuestro editor fa#orito, abri,os el archi#o
principal de confiuracin lla,ado ,ain.cf, el cual est1 estupenda,ente co,entado.
Ade,1s, existen en Internet nu,erosos $ ,u$ buenos docu,entos sobre c,o
confiurar postfix desde cero. Pondr4 a continuacin uno de e2e,plo para que puedas ir
co,parando $ co,entar4 sola,ente los ca,bios i,portantesA
c
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = mail.skrdz.com
mydomain = skrdz.com
myorigin = $myhostname
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
m
(a siuiente opcin nos per,ite eleir en qu4 tipo de 8for,ato8 postfix #a a
uardar los ,ensa2es en el buzn de cada usuario. &i elei,os %ailbox, los ,ensa2es se
uardan en un 3nico archi#o en el que se #an encolando los ,ensa2es se3n #an
lleando al buzn /equi#alente al P&. de Cxchane0. Cl for,ato %aildir, consiste en un
directorio en el que ha$ tres subdirectorios en el que se #an uardando los ,ensa2es en
diferentes archi#os. Courier:I%AP necesita de esto, por lo que este es el que elei,os
/ntese la 8>8 final0A
/
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail #Donde estarn los buzones
relay_domains = $mydestination
mynetworks = 192.168.1.0/24
smtpd_banner = $myhostname ESMTP $mail_name
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
debug_peer_level = 2
debugger_command = PATH=/usr/bin:/usr/X11R6/bin xxgdb $daemon_directory/
$process_name $process_id & sleep 5
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
/la infor,acin asinada a la #ariable EdebuerFco,,andG #a en una sola l6nea hasta donde dice Esleep !G0
Cs a partir de aqu6 donde ca,bia un poco la cosa. Ha,os a ir co,entando l6nea por l6neaA
C
Cste par1,etro, es lo que se le #a a poner delante de un #alor que tendre,os en la <=
para conseuir llear hasta el luar donde se uarda el buzn del usuario. Ha,os a
de2arlo con 8>8
d
virtual_mailbox_base=/

&e@ala,os a postfix que los 5serI=s $ IroupI=s de los usuarios de correo los obtendr1
por ,edio del archi#o indicado, que acceder1 a %$&'(
p
virtual_uid_maps=mysql:/etc/postfix/ids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf

A continuacin indica,os que ,ediante el archi#o ,$sqlF#irt.cf #a,os a acceder a
%$&'( para #er dnde est1n los buzones de los usuariosA
%
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
local_transport = virtual
program_directory = /usr/lib/postfix
Para la li,itacin de espacio en los buzones...
P
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
#El siguiente parametro es para el tamao del buzon de correo...
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_limit.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Lo sentimos, el buzon de correo ha
sobrepasado el limite establecido. El usuario del midomio.com.sv debera
depurar su buzon de correo. Gracias!
virtual_overquota_bounce = yes
#El siguiente parametro es para el tamao mximo de envo de correos
(10MB) message_size_limit = 10485760
Pasa,os a continuacin a ,ostrar el contenido de los ficheros antes referenciados
en el ,ain.cf lla,ados ,$sqlF#irt.cf, ids.cf $ ids.cf. .odos ellos hacen referencia a una
<ase de =atos i,ple,entada en %$&'(, que ,1s adelante detallare,os. Cn este
e2e,plo, tanto postfix co,o %$&'( est1 en la ,is,a ,1quina, por ello el pri,ero se
conectar1 a la base de datos por ,edio de los socJets internos de unix>linux. Para ello
pone,os el para,etro hosts con el #alor unixA,$sqld.socJ. &i estu#iesen en ,1quinas
distintas, habr6a que poner el no,bre de la ,1quina en la que se encuentra %$&'(. Cn la
realidad, prefiero poner la IP del ser#idor, por lo que para 4sta practica, usare,os la IP
del ser#idor.
. Configurando Postfix
5.1. Archivos ha crear...
A
Crear los siuientes archi#os en >etc>postfix>
C
mysql_virt.cf
#Usuario y password para acceder al servidor MySQL
user=postfix
password=postfix
#Nombre de la Base de Datos y la tabla
dbname=mail
table=passwd
#El campo que elegimos es maildir (lugar donde est el buzn), donde el id
#del usuario coincida con el destinatario del mensaje
select_field=maildir
where_field=id
#El host que tiene el MySQL
hosts=127.0.0.1
=
ids.cf
user=postfix
password=postfix
dbname=mail
table=passwd
#El campo que elegimos es uid
select_field=uid
where_field=id
hosts=127.0.0.1
h
gids.cf
user=postfix
password=postfix
dbname=mail
table=passwd
#El campo que elegimos es gid
select_field=gid
where_field=id
hosts=127.0.0.1
h
mysql_limit.cf
user = postfix
password = postfix
dbname = mail
table = passwd
#El campo que elegimos es quota
select_field = quota
where_field = id
hosts = 127.0.0.1
h
.a,bi4n debe,os ,odificar el archi#o ,aster.cf, a@adiendo la l6nea si no esta presenteA
.
virtual unix - n n - - virtual

Antes de que se nos ol#ide, debe,os de ca,biar ta,bi4n el archi#o >etc>loin.defs ,
desco,entando la l6nea 8'%AI(F=IK %ailidir8 para indicar, que todos los usuarios que
haan loin en nuestro siste,a, usar1n ta,bi4n el for,ato %aildir. =ebe,os de
co,entar las 2 que aparezcan a su lado, lica,ente.
c
Con 4ste 3lti,o procedi,iento /en >etc>loin.defs0 a ,i, en lo personal, no ,e
funcion... &i aluien lo pudo hacer, que lo co,ente en 4sta entrada de blo
/httpA>>sJrdz.?ordpress.co,0. &ino, se puede pasar por alto 4sta confiuracin, pero se
tendr1 que hacer referencia de cada usuario de correo en >etc>pass?d.
!. Instalando " Configurando #"$%&
I
9e,os #isto co,o Postfix #a a hacer uso de %$&'(. Ha,os pues a instalarlo $
confiurarloA
apt-get install mysql-server

Lo ha$ que tocar nada rese@able en la confiuracin del %$&'(. Mnica,ente, si el
ser#idor #a a estar en otra ,1quina distinta a la ,1quina donde est1 postfix, tendre,os
que abrir un puerto para que pueda 8escuchar8. Por defecto, esto no es as6 debido a
te,as de seuridad. Para hacerlo, basta con co,entar la l6nea sJip:net?orJin del
fichero >etc>,$sql>,$.cf $ rearrancar el ser#idor.
f
<ien, una #ez que lo tene,os instalado, #a,os a crear la <ase de =atos $ la tabla
necesaria para uardar toda la infor,acin. Ho$ a ,ostrar c,o hacerlo paso por pasoA
n
el N es un co,entario pero 4ste no debe de ir en la consola... solo es para co,entar lo
que se har1.
#Nos conectamos como root en un principio
#(la contrasea por defecto est en blanco,
#por lo que bastaria con dar "enter")
mysql -h localhost -u root -p
#Creamos la BAse de Datos llamada mail
mysql>create database mail;
#Vemos si est creada:
mysql>show databases;
#Seleccionamos con la que vamos a trabajar:
mysql>use mail;
#Creamos la tabla en la que guardaremos la informacin
#de los usuarios virtuales:
mysql>CREATE TABLE IF NOT EXISTS `passwd` (
`id` char(128) NOT NULL default '',
`clear` char(128) default NULL,
`name` char(128) default NULL,
`uid` int(10) unsigned default NULL,
`gid` int(10) unsigned default NULL, `home` char(255) default NULL,
`maildir` char(255) default NULL,
`quota` int(8) NOT NULL default '10485760',
PRIMARY KEY (`id`)
);
#Vemos cmo ha quedado la tabla recin creada:
mysql> describe passwd;
+----------+------------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+----------+-------+
| id | char(128) | NO | PRI | | |
| clear | char(128) | YES | | NULL | |
| name | char(128) | YES | | NULL | |
| uid | int(10) unsigned | YES | | NULL | |
| gid | int(10) unsigned | YES | | NULL | |
| home | char(255) | YES | | NULL | |
| maildir | char(255) | YES | | NULL | |
| estado | int(3) | NO | MUL | 0 | |
| manual | int(3) | NO | | 0 | |
| quota | int(8) | NO | | 10485760 | |
+----------+------------------+------+-----+----------+-------+
10 rows in set (0.01 sec)
#
#Creamos un usuario postfix y le damos todos los permisos en esta tabla: #
mysql>GRANT ALL ON mail.passwd TO postfix@localhost IDENTIFIED BY "postfix";
#
#Dependiendo de la configuracin, quizs haya que crear
#algn usuario del estilopostfix@HOSTNAME...
#para que postfix pueda acceder desde otras mquinas por ejemplo.
#Creamos tres entradas de ejemplo:
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("user1@splitfoo.homeip.net","user1pass","usuario1","1003","8","/","/
var/spool/mail/user1/Maildir/");
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("user2@splitfoo.homeip.net.net","user2pass","usuario2","1002","8","/
","/var/spool/mail/user2/Maildir/");
mysql>insert into passwd (id,clear,name,uid,gid,home,maildir)
values("user3@splitfoo.homeip.net","user3pass","usuario3","1004","8","/","/
var/spool/mail/user3/Maildir/");
mysql>quit
# NOTA: para cambiar el password root, basta con hacer lo siguiente:
mysql> SET PASSWORD FOR root@localhost=password('nuevapass');
mysql> FLUSH PRIVILEGES;
<ien, #a,os a explicar todo esto un poco ,1s despacio. He,os que en la tabla he,os
creado una serie de ca,pos, entre ellos id que ser1 el ,ail del usuario, clear que es su
contrase@a para autentificarse /puede cifrarse a@adiendola de la for,a
pass?ord/8contrase@a800, uid que es el 5serI= $ al que pode,os ir asin1ndole n3,eros
secuencial,ente /para ello ,irar antes >etc>pass?d para #er a partir de cu1l no est1
8ocupado80, el id que en ,i caso lo he puesto a + $ que corresponde con el rupo de
8,ail8 /lo he hecho as6 para que el usuario pueda escribir en el directorio >#ar>spool>,ail
que tiene co,o rupo propietario a 8,ail80, ho,e que por ser usuarios 8#irtuales8 lo
de2a,os a 8>8 ,is,o $ el ,aildir o luar donde se uardar1 el %aildir del usuario en
cuestin. A esta ruta se le a@ade por delante el #alor que hab6a,os puesto en
>etc>postfix>,ain.cf co,o #irtualF,ailboxFbase $ que era 8>8. &e puede 2uar
co,binando a,bas, pero de esta for,a aseura,os la ruta.
'. Configurando Courier
C
Los dispone,os a confiurar a continuacin Courier. Cn s6, este prora,a es ta,bi4n un
%.A, pero co,o he,os dicho, para esta funcin $a tene,os a Postfix. Ha,os a usar
sola,ente el courier:i,ap /ta,bi4n tiene courier:pop0, para lo que hace,osA
s
apt-get install courier-imap courier-authdaemon \
courier-authlib-mysql courier-base \
c
Con lo que se nos instalar1 la aplicacin $ el de,onio de autentificacin, la
autentificacin por %$&'(... (os archi#os de confiuracin, est1n situados en
>etc>courier> por lo que debe,os diriirnos all6.
>
(o pri,ero que debe,os de ca,biar es el ,odo de autentificacin de los usuarios al usar
I%AP. Para ello, edita,os el archi#o authdae,onrc $ sustitui,os la l6nea
auth,odulelistO8authpa,8 por auth,odulelistO8auth,$sql8, por lo que a partir de
ahora, $a no se utilizar1 el ,dulo PA%, sino %$&'(. (ica,ente ha$ que indicar a
courier dnde debe ,irar los userna,es $ pass?ordsP para ello tene,os el archi#o
auth,$sqlrc, que queda de la siuiente for,aA
a
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE passwd
MYSQL_CLEAR_PWFIELD clear
DEFAULT_DOMAIN skrdz.com
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD id
MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
M
Cn el archi#o i,apd, tan solo ha$ que ca,biar la 3lti,a entrada $ ponerla a DC&
/I%AP=&.AK.0, que por defecto #iene a L7
/
=ebe,os aseurarnos que todos los de,onios necesarios est1n corriendo en la ,1quinaA
courier:authdae,on, courier:i,ap, postfix $ ,$sql.
(. Poniendo en )archa todo
P
Pode,os $a entonces a hacer pruebas en#iando ,ails a los usuarios creados en la <ase
de =atos. Lo debe,os ol#idar ,irar los los del siste,a para #er los posibles fallos
aparecidos. Cuando se en#6a un ,ail a un usuario, se deben de crear un directorio con su
no,bre en >#ar>spool>,ail> que contendr1 el subdirectorio %aildir. &i esto no es as6
puede que sea por te,a de per,isos. Ase3rate de de que >#ar>spool>,ail> tena co,o
rupo propietario a 8,ail8 /en ,i caso0 $ tena per,isos de escritura.

Por e2e,plo, si se crea la cuenta sJrdzB,ido,inio, en >#ar>spool>,ail> deber1 de haber


una carpeta lla,adaA sJrdz $ dentro de 4sta otra carpetaA %aildir.
u
Para #er los los en tie,po real, puedes usar el siuiente co,andoA
P
tail -f /var/log/mail.log

(os los que puedes re#isarA
(
* mail.err
* mail.info
* mail.log
* mail.warn

7tro fallo que puede aparecer al en#iar un ,ail es 8.e,porar$ looJup failure8P si nos
fi2a,os en los los #e,os que postfix no puede conectarse a %$&'(. 9abr1 que
aseurarse entonces de que real,ente nos pode,os conectar con el usuario creado en
postfix, que tiene los per,isos necesarios...
p
=esde un cliente que soporte I%AP, pode,os probar ta,bi4n que se leen bien los
,ensa2es. Al autentificarse, el no,bre de usuario, ser1 el id de la tabla pass?d de la
<ase de =atos $ la contrase@a ser1 el ca,po clear.
<
Cn la practica, ,e he encontrado con que no funciona la autenticacin total,ente con
%$&'(, por lo que se debe de arear en >etc>pass?d cada buzn de correo co,o
,6ni,o de la siuiente ,aneraA
,
echo -e "skrdz:x:1005:8:skrdz,,,:/" >> /etc/passwd
e
=onde 1**! es el 5I= $ + es II=
=
&i aluien puede hacerlo funcionar sin arear los usuarios en >etc>pass?d, haalo saber
en el foro de 4ste curso.
*. +o)ar en cuenta...
+
Cxisten #arios co,andos que nos pueden ser 3tiles ,ientras use,os Postfix. 5na bre#e
lista ser6a
l
postfix stop. Cste co,ando detiene el ser#icio Postfix /%.A0.
postfix start. Cste co,ando inicia el ser#icio Postfix /%.A0.
C
postfix reload. Cste co,ando hace que el ser#idor #uel#a a leer la confiuracin sin
parar el ser#icio.
mailq. Para #er la cola de ,ensa2es.
P
postfix flush. Querza el en#6o de ,ensa2es de la cola de espera.
postmap. Cste co,ando sir#e para construir los ficheros auxiliares de Postfix.
C
postconf. %uestra toda la confiuracin de Postfix.
newaliases. Cste co,ando reconstru$e la base de datos de alias
1,. Aplicar seguridad a Postfix -todas las opciones son
opcionales.
o
Por seuridad ,e refiero a confiurar el ser#idor para que solo lo usen las
personas que nosotros quere,os, $ no abusen de 4l para en#iar spa,. &e puede usar
(istas de bloqueo basadas en =L&.
(
(as listas de bloqueo son unas listas de IP de ser#idores que supuesta,ente en#ian
spa,. Cntre las listas ,1s usadas se encuentran las K<( de ,ail:abuse.or o las &<( de
spa,haus.or. Puede #er un listado co,pleto de listas de bloqueo en
httpA>>???.declude.co,>RunJ%ail>&upport>ip4r.ht, . Al confiurar Postfix para que use
estas listas sinifica que cada #ez que lleue un correo a nuestro ser#idor, Postfix
co,probar1 que la IP del ser#idor que nos en#ia el ,ensa2e no se encuentra en esas
listas. 5na confiuracin t6pica en el ,ain.cf ser6a
l
smtpd_client_restrictions =
permit_mynetworks,
reject_non_fqdn_recipient,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client relays.ordb.org #Defasado creo...
reject_rbl_client opm.blitzed.org #Defasado creo..
# reject_unauth_destination

NOT. Cl uso de listas K<( puede producir el rechazo de ,ensa2es le6ti,os. Antes de
usar una lista K<( se reco,ienda encarecida,ente co,probar cu1les son los criterios de
dicha lista para incluir o no un deter,inado IP. Alunas listas /co,o &<( o =&<(0 utilizan
unos criterios ,u$ claros $ ob2eti#os $ producen pocos o nin3n efecto indeseado,
,ientras que otras tienen unas nor,as ,ucho ,1s aresi#as $ producen el bloqueo a
#eces de proo#edores enteros, inclu$endo un ,ontn de usuarios le6ti,os.
#
Control de en#6os
C
Cl control de en#ios sinifica que se pueden definir qu4 direcciones de correo pueden
en#iar correo a tra#4s de nuestro ser#idor, $ qu4 direcciones de correo no pueden en#iar
correo a nuestro ser#idor.
c
Por host o redesA
P
%ediante la directi#a ,$net?orJs /dentro de >etc>,ain.cf0 defini,os qu4 redes o hosts
pueden en#iar correo a tra#4s de nuestro Postfix. 5n e2e,plo ser6a
p
mynetworks = 127.0.0.0/8, 192.168.2.0/24, 172.16.3.4/32
m
Con esta confiuracin esta,os definiendoA
C
(a red 12).*.*.* puede en#iar. Csta red sie,pre ser1 nuestra propia ,1quina
/localhost0.
(os 2!4 hosts de la red 1-2.1"+.2.* pueden usar nuestro ser#idor.
&olo el host 1)2.1".3.4 puede usar nuestro ser#idor, $ ninuno ,1s de la red
1)2.1".3.*. Por e2e,plo, el 1)2.1".3.14 no podr6a.
1
!elay"host
!
%ediante el siste,a rela$:host defini,os que direcciones de correo pueden en#iar a
tra#4s de nuestro ser#idor. Csto es util si las personas que quere,os que en#ien correo
tienen una direccin e:,ail estable, pero una IP que ca,bia ,u$ a ,enudo. 5na
confiuracin t6pica ser6a esta
c
smtpd_recipient_restrictions =
permit_mynetworks,
check_sender_access hash:/etc/postfix/usuarios
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_recipient_domain,
reject_unknown_sender_domain,
check_relay_domains

Cn la directi#a checJFsenderFaccess #e,os que hace referencia a un fichero lla,ado
>etc>postfix>usuarios. Cste fichero contiene alo parecido a estoA
>
usuarioBdo,inio.co, 7S
usuario2Bdo,inio.co, 7S
usuario3Bdo,inio2.co, 7S

Csta lista de e:,ails sinifica que dichas direcciones pueden en#iar a tra#4s de nuestro
ser#idor, independiente,ente de la IP que tenan. Co,o puedes i,ainar este ,4todo
no es ,u$ seuro, $a que si al3n spa,,er a#eriua una direccin de correo #1lida de
tu ser#idor, podr1 usarla para en#iar correo de ,anera indiscri,inada.
t
Cada #ez que se ,odifique este fichero se debe e2ecutar el co,ando
C
cd /etc/postfix && postmap usuarios && postfix reload
11. Conclusiones
C
Con todo esto, en teor6a $a deber6as poder estar usando Postfix con %$&'( $ Courier,
pero seura,ente te encontrar1s con ,1s de un proble,a. Para poder solucionarlos, ha$
que estar continua,ente ,irando los los para #er cu1l puede ser la causa. Cn >#ar>lo>
,ail.lo aparece bastante infor,acin cada #ez que se ,anda un ,ail $ puede a$udar
bastante.
b
A ,odo de resu,en, pode,os decir que el proceso es el siuienteA
A
Cuando ,anda,os un ,ail por &%.P a un usuario, postfix lo recibe $ lo pri,ero que
hace es #er si dicho usuario existe en la base de datos de %$&'(. Por ello, se conecta a
4l $ lanza una consulta &'(. &i no obtiene resultado, es que dicho user no existe por lo
que no es posible en#iar el ,ail. &i la consulta tiene 4xito, coe el ca,po ,aildir cu$o id
corresponde con el destinatario del ,ail, $ ,ira a #er si existe el directorio %aildir en
>#ar>spool>,ail>usuario>. &i no es as6 lo crea $ deposita el ,ail en dicho directorio,
estando $a a disposicin del usuario para que lo consulte por #6a I%AP a tra#4s de
Courier.
C
.odo el te,a de usuarios puede ser estionado f1cil,ente ,ediante shell script o por
P9P accediendo directa,ente a la <ase de =atos, pudiendo a@adir, eli,inar, ,odificar...
(ica,ente, a la tabla de usuarios se la puede a@adir ,1s ca,pos de infor,acin sobre
el usuario.

También podría gustarte