Autor : Julio Guillermo Paredes Cornejo
Fecha : 29/04/2005
El poner en linea un servidor de servicios de correo electrónico es casi una tarea muy común entre los administradores de redes de las diferentes organizaciones del medio; el presente documento intenta explicar la puesta en linea de varios servicios relacionados con el correo electrónico, partiendo del de la configuracion del Sendmail para que use el Maildrop y asi usar el formato de correo Maildir en vez del Mailbox, y agregandole servicios secundarios como correr el servidor imap,pop3,imaps,pop3s(courier-imap), y de esa manera teniendo el soporte para que en el futuro pueda manejar un webmail.
El formato mbox es la manera tradicional de manejo de correo electronico en Unix que utiliza un solo archivo por usuario para la administración de correo electrónico entrante, este modelo a presentado varios problemas que fueron solucionados con el formato maildir que utiliza una estructura de directorios por usuario para la administración y gestion de correos electrónicos que es mucho mas eficiente que el mbox, se puede observar a mas detalles la compración de estos dos formatos en http://www.courier-mta.org/mbox-vs-maildir/ donde se discute de manera amplia el tema.
Ahora bien el formato por defecto del sendmail es el mbox que escribe directamente en el directorio /var/mail y dado que el sendmail es incapaz por si mismo el hacer la entrega en formato maildir, es que utilizaremos otro paquete como el maildrop el cual configuraremos para la entrega del correo electrónico en la estructura maildir que tendra cada usuario en su directorio home.
La instalación del maildrop la realizaremos por medio del arbol de ports estando previamente logeados como root.
sasha# cd /usr/ports/mail/maildrop sasha# make all install clean
Con estos comandos instalaremos el maildrop en nuestro FreeBSD. ahora bien lo siguiente que debemos realizar es la configuración de nuestro servidor sendmail para el uso del maildrop asi como támbien pueda recibir los correos electrónicos de un dominio dado; primero editamos el archivoo /etc/mail/freebsd.mc (previa copia de seguridad porsupuesto) y agregando la siguiente linea:
FEATURE(`local_procmail', `/usr/local/bin/maildrop',`maildrop -d $u $h')
Y comentando la siguiente que desabilitara el transporte de correo por defecto anteriormente:
#FEATURE(local_lmtp)
Tomese en cuenta en la lineas el uso de diferente tipo de comillas ` para abrir y ' para cerrar, esto es muy importante y nos enviara problemas en algún momento.
Ahora bien necesitaremos editar otros archivos de del directorio /etc/mail para que nos permita escuchar correo electrónico para el dominio creando el archivo /etc/mail/local-host-names y colocando ahi en cada linea los nombre de dominio los cuales nuestro servidor sendmail recibira asegurandonos que este archivo este enlazado a nuestro archivo de configuracion freebsd.mc con la linea
define(`confCW_FILE', `-o /etc/mail/local-host-names')
se encuentre en nuestro freebsd.mc; ahora es importante destacar que si vamos a recibir correo electrónico de un dominio nuestro servidor debera tener un registro MX en los servidores DNS que manejan el dominio; ahora para que personas dentro de nuestra red puedan usar el servidor smtp para enviar su correo los debemos habilitar en /etc/mail/access agregando la siguiente linea
192.168.1.* RELAY
esto hara que todas las maquinas de nuestra red 192.168.1.* puedan usar el servidor de salida SMTP sin que les envie el error de no Relay, de esta manera podemos agregar cuanta red, maquina y/o dominio queramos siempre una por linea; támbien debemos de asegurarnos que este archivo este correctamente enlazado a la configuracion del /etc/mail/freebsd.mc mediante la linea:
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
Ahora estando dentro del directorio /etc/mail corremos los siguientes comandos
sasha# cd /etc/mail sasha# make sasha# make install sasha# make restart
lo que hacen estos comandos simplemente es procesar la nueva configuración, instalarla y reiniciar el servidor sendmail(si esta activo) para que arranque con esta configuración; ahora bien el siguiente paso es configurar el archivo de configuración general del maildrop /usr/local/etc/maildroprc para que entrege el correo electrónico entrante en el respectivo maildir de ubicado en la carpeta de cada usuario esto se hace editando o creando si no existe y agregandole la siguiente linea
DEFAULT="$HOME/Maildir"
Una vez hecho esto configuramos nos aseguramos que la linea sendmail_enable=“YES” este en nuestro archivo /etc/rc.conf, en caso que no lo este o este en NONE o no se debera modificar y reiniciar el servidor.
El siguiente paso es la creación de la estructura de directorios Maildir en cada usuario existente en nuestro sistema, esto lo haremos de la siguiente manera, en caso que no tengan esta estructura no podrán recibir correo, ya que sera dentro de esta estructura donde se depositaran los email de cada usuario.
sasha# mkdir /home/[username]/Maildir sasha# mkdir /home/[username]/Maildir/new sasha# mkdir /home/[username]/Maildir/cur sasha# mkdir /home/[username]/Maildir/tmp sasha# chown -R [username] /home/[username]/Maildir sasha# chgrp -R [group] /home/[username]/Maildir
Remplaze el [username] por el nombre de usuario y [group] por el grupo de usuario que generalmente es el mismo nombre de usuario.
Ahora para que nuestros nuevos usuarios que creemos en el futuro puedan tener esta estructura de directorio sera necesario que corramos las siguientes lineas:
sasha# mkdir /usr/share/skel/Maildir sasha# mkdir /usr/share/skel/Maildir/new sasha# mkdir /usr/share/skel/Maildir/cur sasha# mkdir /usr/share/skel/Maildir/tmp
Cada vez que un usuario es creado en el sistema se copia a su directorio home la estructura de /usr/share/skel, de esta manera no tendremos que crear la estructura Maildir para cada usuario nuevo que agregemos a nuestro server.
Ahora bien tenemos una utilidad que viene con el puerto /usr/port/mail/courier-imap que se llama maildirmake que creara toda la estructura en una sola linea evitandonos asi los cuatro mkdir.
El Courier-IMAP nos brinda la posibilidad de poder levantar servicios de correo IMAP y POP3 (con sus respectivas versiones con soporte SSL); ahora la instalacion de este lo realizaremos por medio del arbol de ports
sasha# cd /usr/ports/mail/courier-imap sasha# make all install clean
Con esto tendremos instalado el courier-imap en nuestra maquina, ahora bien necesitamos hacer unas configuraciones minimas, primero editando el archivo /etc/pam.d/imap y dejandolo de esta manera:
# $FreeBSD: src/etc/pam.d/imap,v 1.5 2003/03/08 09:50:11 markm Exp $ # # PAM configuration for the "imap" service auth required pam_unix.so try_first_pass account required pam_unix.so try_first_pass session required pam_permit.so
Esto permitira que el authdaemond pueda realizar las comprobaciones para validar usuarios, paso siguiente agregaremos las siguientes lineas a nuestro /etc/rc.conf
courier_authdaemond_enable="YES" courier_imap_imapd_enable="YES" courier_imap_pop3d_enable="YES" courier_imap_imapd_ssl_enable="YES" courier_imap_pop3d_ssl_enable="YES"
Con esto habilitamos los cinco servicios que viene incluido con nuestro courier-imap, es importante para el funcionamiento de cualquiera de los servicios que el authdaemond este activo.
Para que los servicios pop3d-ssl y imapd-ssl puedan correr sin problemas necesitan de un certificado ssl, los cuales se podrán generar automaticamente con la siguientes lineas:
sasha# /usr/local/share/courier-imap/mkimapdcert sasha# /usr/local/share/courier-imap/mkpop3dcert
Damos una reiniciada al servidor para probar y listo hasta aca ya tenemos nuestro servidor de correo electrónico listo para poder usar clientes de correo pop3 y/o imap y smtp.