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.
Ultimos Comentarios