Archivo

Archivo para septiembre, 2007

Servidor de Correo con Cyrus

Sábado, 1 de septiembre de 2007 Sin comentarios

Los otros días buscando datos mi amigo Guille me paso la dirección de su amigo de España donde se explicaba MUY BIEN como instalar un servidor Cyrus, seguí la receta y anduvo perfectamente!


Por esas cosas de la vida no logro encontrar el articulo publicado nuevamente así que me atrevo a copiarlo acá para tenerlo a mano, este es:


Postfix + Cyrus-Imap + Spamassin + Smtp Autentificado +Sasl +
Sieve con Debian.


Hace tiempo que no montaba mi combo preferido.
Utilizando una vista en mi servidor de DNS me he creado un dominio llamado pepino.com !
Ahora , en una maquina virtual instalo los siguientes paquetes:


apt-get install postfix cyrus21* spamassassin sasl2-bin
libauthen-sasl-cyrus-perl


Algunos ficheros de configuración para empezar :


/etc/mailname : guarda el dominio correspondiente a nuestro
servidor (en nuestro caso pepino.com)


/etc/hostname : yo le he colocado mail , simplemente con fines
orientativos


/etc/cyrus.conf : almacena las principales comandos de la suite
cyrus con sus parámetros


/etc/imapd.conf : guarda las preferencias del servicio imap de
cyrus


/etc/postfix/main.cf : configuración básica de
postfix


/etc/postfix/master.cf : configuración avanzada ,
programas que reciben x tuberías el correo , etc ,etc


Postfix


Ahora vamos a la acción, empecemos por el fichero
main.cf
:
A groso modo , podemos ver que esta montado de las
siguiente manera , intentare de ir comentando las lineas mas
significativas :


command_directory = /usr/sbin
daemon_directory =
/usr/lib/postfix
program_directory =
/usr/lib/postfix
smtpd_banner = $myhostname ESMTP Servidor
Pepinaco $mail_name (Debian/GNU)
setgid_group = postdrop
biff
= no


append_dot_mydomain = yes
myhostname = mail.pepino.com


#Origen que va a ser estampado en la cabecera al enviarse un
correo
myorigin = /etc/mailname


#Dominios para los que acepta correo el servidor
mydestination
= pepino.com


relayhost =


#Redes permitidas para envío de correo
mynetworks =
127.0.0.0/8 192.168.1.0/24


#No limitamos el tamaño de los correos
:(
mailbox_size_limit
= 0


recipient_delimiter = +


#Especificación de que el correo va a ser almacenado a
travez de Cyrus
mailbox_transport = cyrus


#Comienza el chorizo de la autentificaron del
smtp
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name
= smtpd
smtpd_sasl_local_domain =
mail
smtpd_sasl_security_options =
noanonymous
smtpd_recipient_restrictions
=
permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains


Ahora vamos con el master.cf , encargado de la entrega en si del
correo :


smtp inet n – - – - smtpd -o content_filter=spamassassin
pickup
fifo n – - 60 1 pickup
cleanup unix n – - – 0 cleanup
qmgr
fifo n – - 300 1 qmgr
rewrite unix – - – - -
trivial-rewrite
bounce unix – - – - 0 bounce
defer unix – - -
- 0 bounce
trace unix – - – - 0 bounce
verify unix – - – - 1
verify
flush unix n – - 1000? 0 flush
proxymap unix – - n – -
proxymap
smtp unix – - – - – smtp
relay unix – - – - -
smtp
showq unix n – - – - showq
error unix – - – - -
error
local unix – n n – - local
virtual unix – n n – -
virtual
lmtp unix – - n – - lmtp
anvil unix – - n – 1
anvil
############# Rutas a los binarios y modos de invocarlos
#####################
maildrop unix – n n – - pipe
flags=DRhu
user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
uucp unix
- n n – - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender -
$nexthop!rmail ($recipient)
ifmail unix – n n – - pipe
flags=F
user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp
unix – n n – - pipe
flags=Fq. user=bsmtp
argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender
$recipient
scalemail-backend unix – n n – 2 pipe
flags=R
user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
${nexthop} ${user} ${extension}
cyrus unix – n n – - pipe
flags=R
user=cyrus argv=/usr/sbin/cyrdeliver -r ${sender} -m ${extension}
${user}
spamassassin
unix – n n – - pipe
user=nobody
argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender}
${recipient}


En la primer linea , le digo que smtp es un servicio del tipo
inet , y que como opciones utilice un filtro de contenidos del tipo
spamassassin , que lo especifico en la ultima linea , donde apunto
al binario de spamc.
La linea anterior se encarga de invocar al
cyrdeliver , de cyrus que se encarga de hacer la entrega local del
correo.
De este lado tendríamos los conectores necesarios
, listos para recibir correo.


Cyrus


En primer lugar , tenemos claro que el fichero cyrus.conf ,
define servicios , eventos y formas de que manejar el sistema Imap
de Cyrus
El fichero debería quedarles algo así :


START {
recover cmd=”/usr/sbin/ctl_cyrusdb -r”
delprune
cmd=”/usr/sbin/ctl_deliver -E 3″
tlsprune
cmd=”/usr/sbin/tls_prune”
}


SERVICES {
# — Normal cyrus spool, or Murder backends

# add or remove based on preferences


imap cmd=”imapd -U 30″ listen=”imap”
prefork=0 maxchild=100
lmtpunix cmd=”lmtpd”
listen=”/var/run/cyrus/socket/lmtp” prefork=0
maxchild=20
sieve cmd=”timsieved”
listen=”localhost:sieve” prefork=0 maxchild=100
notify
cmd=”notifyd” listen=”/var/run/cyrus/socket/notify”
proto=”udp” prefork=1
}


EVENTS {


checkpoint cmd=”/usr/sbin/ctl_cyrusdb -c”
period=30
delprune cmd=”/usr/sbin/ctl_deliver -E 3″
at=0401
tlsprune cmd=”/usr/sbin/tls_prune” at=0401
}


Otro fichero fundamental de Cyrus es el imapd.conf que guarda las
variables de los directorios donde trabaja cyrus , la configuración
de tls ,sieve,mail,news,etc.


configdirectory: /var/lib/cyrus
defaultpartition:
default
partition-default: /var/spool/cyrus/mail
partition-news:
/var/spool/cyrus/news
newsspool: /var/spool/news
altnamespace:
yes
unixhierarchysep: yes
admins: cyrus
lmtp_admins:
postman
imap_admins: cyrus
sieve_admins: cyrus
root
allowanonymouslogin: no
popminpoll: 1
autocreatequota:
0
umask: 077
sieveusehomedir: enable
sievedir:
/var/spool/sieve
hashimapspool: true
allowplaintext:
yes
sasl_mech_list: PLAIN
allowapop: no
sasl_pwcheck_method:
auxprop
sasl_auto_transition: no
##
## KEEP THESE IN SYNC
WITH cyrus.conf
##
# Unix domain socket that lmtpd listens
on.
lmtpsocket: /var/run/cyrus/socket/lmtp
# Unix domain
socket that idled listens on.
idlesocket:
/var/run/cyrus/socket/idle
# Unix domain socket that the new mail
notification daemon listens on.
notifysocket:
/var/run/cyrus/socket/notify


SpamAssassin


Vamos , que casi ni siquiera lo he tocado


Fichero local.cf


# This is the right place to customize your installation of
SpamAssassin.
#
# See ‘perldoc Mail::SpamAssassin::Conf’
for details of what can be
#
tweaked.
#
###########################################################################
#
rewrite_header
Subject *****SPAM*****


# report_safe 1
# trusted_networks 212.17.35.
# lock_method
flock


Fichero init.pre


# This is the right place to customize your installation of
SpamAssassin.
#
# See ‘perldoc Mail::SpamAssassin::Conf’
for details of what can be
# tweaked.
#
# This file will be
loaded before *all other* configuration files, including
# the
system configuration. As such, it’s a good place to set things
that
# will affect how those files are parsed, like which plugins
are loaded
#
etc.
#
###########################################################################


# RelayCountry – add metadata for Bayes learning, marking the
countries
# a message was relayed through
#
# loadplugin
Mail::SpamAssassin::Plugin::RelayCountry


# URIDNSBL – look up URLs found in the message against several
DNS
# blocklists.
#
loadplugin
Mail::SpamAssassin::Plugin::URIDNSBL


# Hashcash – perform hashcash verification.
#
loadplugin
Mail::SpamAssassin::Plugin::Hashcash


# SPF – perform SPF verification.
#
loadplugin
Mail::SpamAssassin::Plugin::SPF


Configurando una cuenta


Ahora que ya tenemos la estructura Postfix/Cyrus/SpamAssassin
montada , empezaremos por asignarle una contraseña al usuario
de administracion “cyrus” , que esta definido en el
imapd.conf ,en la linea “admins:cyrus”


saslpasswd2 cyrus


Con este usuario y la herramienta cyradm vamos a poder crear
recipientes de correo imap de la siguiente manera.


cyradm localhost -u cyrus


y nos devolverá una especia de prompt de la consola , que
sera algo así :


cyrus@maquina:~$ cyradm localhost -u cyrus
IMAP
Password:
localhost.localdomain>


Procedemos a crear el primer usuarios , en mi caso creare un
usuario llamado sabueso , que después obedecerá a
sabueso@pepino.com


mail:~#localhost.localdomain> cm user/sabueso


Podemos listar los recipientes a través de la consola de
cyrus con :


localhost.localdomain> lm
user/sabueso (\HasNoChildren)


Para borrar un recipiente o user a través de la consola de
cyrus es:


dm user/nombreusuario


Ahora que ya tenemos un recipiente , vamos a asignarle una
contraseña sasl :


mail:~# saslpasswd2 sabueso
Password:
Again (for
verification):
mail:~#


Et voila ! Ya lo tenéis funcionando.


Recordar algunas cosas :


1-Cuando configuréis la cuenta en vuestro cliente de correo , no os pedirá autentificación porque estaréis dentro de las redes permitidas , pero si configuráis la
cuenta para enviar a través de vuestro SMTP desde afuera de vuestra LAN veréis q os pide q os autentifiquéis.


2-En el articulo , doy por sentado que tenéis toda la parte de DNS bien configurada y la maquina expuesta a internet. Lo mio de montarlo con una vista , ha sido solo con fines de prueba ,
para poder ir montando todo mientras escribía el articulo.


3-Ante cualquier problema podéis hacer un “tail -f
/var/log/syslog , hacerlo , que NO MUERDE EL CONDENADO FICHERO.
Veréis que de esta forma podéis ir siguiendo que pasa dentro de vuestro servidor de correo


4-Podéis verificar que estáis procesando el correo entrante vía SpamAssassin ,viendo el fuente de algunos correos , donde encontrareis algo del estilo :


X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on
mail
X-Spam-Level:
X-Spam-Status: No, score=-2.8 required=5.0
tests=ALL_TRUSTED
autolearn=failed version=3.0.3


5-Sentiros libres de hacer cualquier tipo de comentario.

Categories: Linux Tags: