Sistema de Correo Con Postfix

March 26, 2018 | Author: Yohanna Monsalvez | Category: Authentication, Password, Transport Layer Security, Server (Computing), Email


Comments



Description

Sistema de correo con Postfix, Cyrus y MySQL© Copyright 2006 Liberalia Tempus, S.L. Índice I. Introducción …………………………………………………………………….. II. Tecnologías …………………………………………………………………….. …………………………………………………………… 03 04 08 12 14 15 21 27 30 32 36 45 51 54 III. Instalando software IV. Seguridad en MySQL …………………………………………………………… V. Configuración de PAM ……………………………………………………….. VI. Postfix ……………………………………………………………………………. VII. Cyrus IMAP y SASL VIII. Cifrado del canal …………………………………………………………… …………………………………………………………… IX. Web-Cyradm …………………………………………………………………….. X. Probando la configuración ………………………………………………….. XI. Filtrado …………………………………………………………………………….. XII. Squirrelmail ……………………………………………………………………… XIII. Mailman ……………………………………………………………………………. XIV. Apéndice …………………………………………………………………………… © Copyright 2006 Liberalia Tempus, S.L. Todos los derechos reservados. El manual queda publicado sin coste alguno y es de libre distribución siempre que se respete la inclusión de su procedencia en los medios donde sea publicado y no sea modificado de ninguna forma. Se prohíbe expresamente la publicación parcial del contenido de este manual sin permiso de su autor. Se prohíbe expresamente la modificación de este manual y su posterior publicación en cualquier medio. Sistema de correo con Postfix, Cyrus y MySQL 2 I – Introducción A partir de este documento, instalaremos y configuraremos de forma adecuada un sistema de correo con el MTA Postfix y el servidor Cyrus IMAP. Conseguiremos con ello tener en funcionamiento un potentísimo sistema de correo que abarcará las últimas tecnologías en servidores y seguridad. Se potenciará, una vez realizada dicha instalación, la facilidad de administración del sistema, que procuraremos sea independiente de la configuración de los distintos paquetes. Así, configuraremos una interfase web que nos permita el control total del sistema de usuarios, siendo accesible desde cualquier ordenador y contando con las mayores garantías de seguridad. El objetivo de nuestra instalación será completar un sistema de correo con las siguientes características: • • • • • • • • • • • Cuentas de correo independientes del sistema operativo. Opción de gestionar varios dominios desde una misma máquina. Dominios virtuales redirigidos a la cuenta principal. Auteticación mediante SASL con texto plano o login. Tabla de MySQL con datos de usuarios. Transporte de datos bajo TLS. Protocolos IMAP, POP, y webmail para el acceso de los buzones. Seguridad SSL de conexión. Filtros de correo (Sieve). Filtros antivirus (ClamAV) y antispam (SpamAssassin). Listas de correo. Nota: Agradecer con sinceridad a Jaume Sabater y a Luc de Louw su gran trabajo, sin el cual este manual no hubiera sido posible. Al finalizar el manual, añadiré un capítulo de biografías donde se detallarán ampliamente los distintos trabajos en los cuales se ha inspirado este manual. Sistema de correo con Postfix, Cyrus y MySQL 3 II – Tecnologías Resumiremos a continuación las diferentes tecnologías usadas en la instalación del sistema de correo. Fedora Core - Linux (kernel-2.6) Fedora es el sistema operativo que siguió con el proyecto de software libre iniciado por el famoso Red Hat. Corre con el núcleo linux y la mayor parte de sus herramientas son de libre distribución y uso. En la última actualización de este manual (junio de 2006), el sistema Fedora alcanza ya su quinta distribución. Las configuraciones de este manual se referirán a la configuración bajo esta distribución. Aunque se ha probado la misma bajo otras distribuciones y versiones, es problable que sean necesarios ciertos cambios para que nuestro sistema de correo funcione de forma adecuada fuera de la versión tratada. Postfix (postfix-2.2.2-2) Postfix es un MTA (Mail Transport Agent) rápido, fácil de administrar y seguro. Aunque no venga al caso, es totalmente compatible con sendmail, manteniendo externamente las formas de éste. Postfix es una combinación de diversos programas que realizan su función determinada dentro del conjunto. Nos podemos hacer una pequeña idea de esto observando la imágen siguiente: Aunque parezca mentira, el resultado es menos complejo de lo que a primera vista puede parecer, pero no nos extenderemos más. Para más información a cerca de postfix, se puede consultar la documentación de su website: http://www.postfix.org/docs.html . TLS (Transportation Layer Security) y OpenSSL (openssl-0.9.7f-7) Todos los datos que viajan a través de Internet, lo hacen por defecto sin ningún tipo de encriptación ni autenticación fiable. En la práctica, cualquier persona con los conocimientos adecuados y con acceso físico a la línea de datos a través de la cual viaja un paquete, tendría acceso a dicha información. Por supuesto, si dicho acceso se efectúa, el contenido de los distintos paquetes puede ser alterado o redirigido con cualquier propósito. Para evitar este tipo de accesos, la compañía Netscape Inc. introdujo el protocolo de seguridad SSL (Secure Sockets Layer), cuya evolución ha terminado en el actual TLS. Este protocolo aporta encriptación de la comunicación (evitando escuchas no deseadas) y una alta fiabilidad en la autenticación que se asegura de tener correctamente identificadas a las distintas partes de una comunicación para que los datos no puedan ser alterados. Sistema de correo con Postfix, Cyrus y MySQL 4 El protocolo de seguridad será implantado en nuestro sistema gracias a OpenSSL. Para una mayor información sobre el particular, consultar la página web http://www.openssl.org . Cyrus IMAP (cyrus-imapd-2.2.12-6) Cyrus IMAP (Internet Message Access Protocol) es desarrollado y mantenido por Andrew Systems Group, de la Carnegie Mellon University. A diferencia de otros gestores de correo IMAP, Cyrus almacena cada correo en un fichero independiente. Las ventajas son obvias: mayor fiabilidad de almacenamiento y una rapidez de acceso inusitada. Los índices de cada mensaje y su estado se guardan en una base de datos a parte y los mensajes se indexan para una mayor rapidez en el acceso o la búsqueda. No es necesaria una cuenta de sistema linux para cada uno de los usuarios de correo. Esto hace que la creación de usuarios se pueda automatizar y no sea demasiado ardua en el caso de una gran cantidad de las mismas. Como la administración de cada cuenta se realiza mediante comandos específicos, la programación de interfaces dinámicos sirve para tener un mayor control sobre todas las funcionalidades del programa, a la vez que se hace más seguro que la manipulación del /etc/passwd. La versión de Cyrus analizada en este manual utiliza la versión 2 de la librería SASL para la autenticación. Así, Cyrus realizará la autenticación en tres fases o capas: el demonio saslauthdaemon redirigirá la petición al mecanismo definido (en nuestro caso será PAM a través de MySQL), el cual buscará la información del usuario en una base de datos MySQL. Cyrus SASL (cyrus-sasl-2.1.20-5) SASL son las siglas de Simple Authentication and Security Layer, método que añade un soporte adicional para la autenticación de los protocolos que fundamentan su conexión en la estandarización fijada por la IETF (Internet Engineering Task Force). Se usa en servidores, como Cyrus IMAP, para controlar las peticiones de acceso de los clientes. El protocolo de autenticación incluirá comandos para la correcta apertura del canal cliente-servidor y las subsiguientes aperturas del canal para la toma de nuevos datos. Opcionalmente, puede negociarse una capa de seguridad entre el protocolo mismo y la conexión. Cyrus SASL utiliza OpenSSL para encriptar los datos. LMTP (Local Mail Transfer Protocol) SMTP (Simple Mail Transfer Protocol) y sus extensiones ESMTP (SMTP Service Extensions), proporcionan los mecanismos necesarios para el trasporte de correo fiable y eficaz. El servidor bajo SMTP controlará las colas de envío de correo. LMTP actúa de forma que el servidor no tenga que manejar colas de correo, a modo de MDA (Mail Delivery Agent). Aunque LMTP puede utilizar extensiones que en un primer momento estarían definidas para su uso por ESMTP, nunca debería funcionar como receptor de escucha sobre el puerto 25. MySQL (mysql--4.1.12-2) MySQL es un servidor de bases de datos rápido, potente y muy fácil de usar e implementar bajo cualquier plataforma. Ya que Cyrus puede utilizar PAM como mecanismo de autenticación, usaremos la extensión pam_mysql para conectar a Cyrus con una base de datos de usuarios creada en MySQL. A partir de aquí, podemos crear un interface web que nos permita la gestión administrativa completa de todo el servicio de correo. La potencia de PHP y la fiabilidad de MySQL harán del sistema que desarrollaremos en este manual algo seguro, fiable y rápido. Sistema de correo con Postfix, Cyrus y MySQL 5 Pam_MySQL (pam_mysql-0. filtrado de correo. Sistema de correo con Postfix. La actualización de la base de datos es constante y la librería en la que se basa el programa es de libre distribución y uso por cualquier programa. Con Pam_MySQL será posible almacenar las contraseñas de los usuarios del servidor de correo en una base de datos MySQL.1-1..2) Amavis supone una pasarela o interface que se coloca entre el servidor y uno o varios filtros de contenidos (antivirus.50-6) PAM (Pluggable Authentication module) fue desarrollado en primera instancia por el equipo de desarrollo de Sun Microsystems.88. En definitiva. tendremos a nuestra disposición una base de datos y un mecanismo de conexión con autenticación que servirán todas las necesidades que pueda tener cualquier administrador/servidor de correo. lo que permite una integración perfecta bajo cualquier entorno. Sieve Sieve es un pequeño intérprete de órdenes que se encargan de realizar filtrados de correo en el lado del servidor. Es un lenguaje muy sencillo y con órdenes muy limitadas. el mensaje quedará o no marcado como spam para su posterior filtrado o eliminación. Está escrito en Perl.). gracias a estas tecnologías. Una vez realizado el análisis. Cyrus y MySQL 6 . lo que supone un estándar para una gran cantidad de programas de filtrado. Amavisd-New (amavisd-new-2. ClamAV (clamav-0. las tareas de administración de cada dominio podrán ser delegadas a los propios usuarios de correo. se generan notificaciones que los programas de antivirus o antispam usarán para analizar los mensajes y filtrarlos o eliminarlos. Analiza en tiempo real el correo entrante y lo compara con listados de spam y trata de analizar el texto para un mejor filtrado del mismo. a la entrega del correo. Aún así.1-1) El antivirus Clam es una herramienta bajo licencia GPL desarrollada para sistemas Linux/Unix. SpamAssassin (spamassassin-3. Se adapta perfectamente a casi cualquier servidor de correo y su principal función es la de escanear los datos adjuntos de un correo electrónico. El mensaje a filtrar necesita del uso del protocolo RFC822.0. pero perfecto para su uso como lenguaje encargado de crear filtros de correo. con el consiguiente ahorro de tiempo que eso supone. Uno de esos módulos es Pam_MySQL.3. El filtrado de los mensajes de spam es habitualmente muy satisfactorio si el programa se ha configurado correctamente. han quedado una gran cantidad de módulos de conexión con diferentes tecnologías. permitiendo incluso el envío de informes de spam a bases de datos internacionales. lo que asegura su portabilidad y fiabilidad y se comunica con el servidor por medio de casi cualquier protocolo o programa al efecto. Gracias a todos estos elementos. antispam. así como también será posible almacenar datos como alias que podrán ser interpretados por Postfix. es preciso recomendar el uso de algún interface que agilice y automatice el uso de Sieve por parte de usuarios sin acceso al servidor. Básicamente..4-1) SpamAssassin es un filtro de correo programado por los creadores de Apache. amavisd-new actúa como un servidor smtp que cumple el estándar RFC 2821 o uno lmtp que cumple con el estándar RFC 2033. Una vez procesado el mensaje. Como puede suponerse. El programa soporta firmas digitales en las actualizaciones y escanea ficheros comprimidos y mensajes de correo en casi cualquier formato. Las notificaciones se generan bajo las normas RFC 1892 y 1894. lo que nos permite un control absoluto sobre todos sus parámetros. alias de usuario. Mediante esta tecnología de programación. Web-cyradm está en constante desarrollo por parte de gente de todo el planeta y el listado de sus características y opciones crece día a día. Algunas de las tareas que podemos completar con web-cyradm pueden ser (entre otras) la administración de múltiples dominios virtuales. proporciona acceso al servidor de correo mediante los protocolos IMAP y SMTP.Mailman (mailman-2.1. creación automática de cuentas con el prefijo del dominio. es necesario que de la parte del servidor exista el correspondiente servidor/intérprete de lenguaje php correctamente configurado.4.5. etc. procesar correo rechazado. filtrar spam. lo cual garantiza la máxima compatibilidad en casi cualquier navegador. Mailman puede crear archivos de correo automáticos. soporte MySQL.org . así como un uso muy sencillo de cara al usuario de las listas. Web-cyradm (web-cyradm-0. Está escrito en php. cuotas de usuario. enviar conjuntos de correos como uno solo y mucho más.6-0) Squirrelmail es un lector de correo vía web escrito en php.5-35) Mailman es un software de gestión de listas de correo y de noticias. Su perfecta integración con la web permite una fácil y rápida administración del sistema. Cyrus y MySQL 7 .web-cyradm. este lector de correo vía web se convierte en la herramienta perfecta de acceso a la cuenta de correo fuera del lugar habitual de trabajo. Gracias a la gran cantidad de add-ons disponibles. Las páginas son creadas en HTML sobre la marcha y no se requiere el uso de javascript.4-1) Web-cyradm es un interface web que permite la administración de un sistema de correo completo. Para su correcto funcionamiento. Squirrelmail (squirrelmail-1. Se puede tener una idea mucho más cercana del proyecto accediento a la página web del mismo: http://www. Sistema de correo con Postfix. log # touch /var/log/mysql/mysql-access.14-1.FC4. Es probable que las versiones o paquetes incorporados "de serie" con la distribución.1.com/downloads/ Instalaremos los siguientes paquetes con la herramienta yum (yum update [paquete]) : mysql-devel-4. se marcarán en azul aquellos paquetes cuya instalación queda recomendada por el autor. Instalando MySQL Sitio web de descarga original: http://www.0. Por nuestra parte.4-10.4 Como medida de seguridad. no coincidan con las utilizadas para la confección de este manual. se utilicen las versiones indicadas en el Capítulo II.log Si algún parámetro ya aparece en el fichero.14-1. no garantizándose el correcto funcionamiento del sistema bajo otras distribuciones. Es muy recomendable que las actualizaciones de paquetes bajo el sistema Fedora se hagan con herramientas de actualización automática como yum o apt-get.1 mysql-server-4.1.III – Instalando Software La mayoría del software a instalar viene incluído en la distribución de Fedora al uso. Acto seguido. Sistema de correo con Postfix.log # chown mysql.1. Añadiremos las líneas siguientes a los epígrafes entre corchetes: [mysqld] log=/var/log/mysql/mysql-access.1 php-mysql-5. en la medida de lo posible. haremos un pequeño cambio al fichero de configuración /etc/my.mysql. no siendo imprescindibles para el correcto funcionamiento del servidor de correo. Recalcar que la instalación del servidor de correo ha de hacerse bajo Fedora Core 4 o Fedora Core 5. Fedora añade al usuario mysql al sistema tras la instalación de los paquetes. se sustituirá por la línea correspondiente.cnf para controlar de manera más eficaz el log de acceso y errores de mySQL. Cyrus y MySQL 8 . así que se recomienda encarecidamente que.FC4. Durante la instalación/actualización de paquetes requerida por este manual. crearemos los ficheros de log: # touch /var/log/mysql/mysql-err.mysql /var/log/mysql* Por último.14-1.log [mysqld_safe] err-log=/var/log/mysql/mysql-err.FC4.1 mysql-4. activamos el servicio mySQL para su ejecución con el inicio del sistema: # chkconfig mysqld on Con esto queda instalado mySQL para el propósito que nos ocupa. En nuestro caso postfix-2.7f-7.10 mod_ssl-2. postfix viene de origen compilado sin la opción mySQL activada.andrew.openssl.postfix.tar.2. Instalando CyrusSASL e IMAP Sitios web de descarga original: ftp://ftp.2. Por lo tanto.1.10 openssl-devel-0.12-6.org Paquetes a instalar: openssl-0.20-5 cyrus-imapd-utils-2.1.fc4 cyrus-sasl-devel-2.fc4 cyrus-sasl-plain-2.spec de los fuentes y modificamos lo siguiente: %define MYSQL 0 --> %define MYSQL 1 Y compilamos e instalamos postfix con la opción mySQL activada: # cd /usr/src/redhat/ # rpmbuild -ba SPEC/postfix.1.2. mediante la herramienta yum.andrew.12.2-2.20-5 cyrus-imapd-murder-2.2.0.rpm Seguidamente editamos el fichero /usr/src/redhat/SPECS/postfix.tar.12-6.9.src.cmu.7f-7.20-5 Y añadiremos el servidor de cyrus-imap al script de inicio del sistema: # chkconfig cyrus-imapd on Instalando postfix Sitio web de descarga original: http://www.edu/pub/cyrus-mail/cyrus-sasl-2.src. Cyrus y MySQL 9 .20-5 cyrus-sasl-md5-2.7f-7.20.2.fc4 cyrus-sasl-gssapi-2.1.spec # cd RPMS/i386 Sistema de correo con Postfix.1. nos servirá la instalación por defecto del paquete. el paquete de fuentes sin compilar de postfix.Instalando OpenSSL Sitio web de descarga original: http://www. Descargaremos de nuestro repositorio preferido.10 openssl-perl-0.2.2 En el caso de OpenSSL.org/ftp-sites. el paquete rpm del Fedora original no nos sirve para el propósito de este manual.12-6.html En los sistemas Fedora.54-10.gz ftp://ftp.1.2.fc4 cyrus-imapd-nntp-2.9.2-2.gz Paquetes a instalar: cyrus-imapd-2.2.12-6.edu/pub/cyrus-mail/cyrus-imapd-2.9.20-5 cyrus-sasl-2.cmu.12-6.fc4 cyrus-imapd-devel-2.rpm y lo instalaremos con la herramienta de paquetería rpm : # rpm -ivh postfix-2. 2. Para ello..i386.log La verión 0. Suponiendo que tengamos el servidor Apache instalado.5 pam-devel-0.log # chown nobody /var/log/web-cyradm. leeremos las instrucciones correspondientes de cada programa y obtendremos lo deseado.4. así que descargaremos el paquete comprimido de la web y lo instalaremos sobre la ruta de documentos públicos de nuestro servidor de páginas web.1-1.rf clamav-lib-0. Obviamente.1-1. para evitar conflictos entre versiones.gz Habilitaremos los ficheros de log para la depuración: # touch /var/log/web-cyradm.88. Cyrus y MySQL 10 .2.2. http://sourceforge.1.web-cyradm. Instalando PAM Si el sistema PAM no ha quedado instalado por defecto en la instalación de Fedora.rpm --replacefiles Antes de proceder con la instalación de los paquetes. habremos de configurar yum o apt de forma que no actualice el paquete postfix en ningún momento.2-2.rpm --replacefiles # rpm -Uvh postfix-pflogsumm-2.5.org No hay binarios pre-compilados de web-cyradm para Fedora.i386.fc4. Paquetes a instalar: pam-0.4 de web-cyradm es la última considerada estable..fc4 Sistema de correo con Postfix. es recomendable asegurarse de que ningún paquete de los referidos (o cualquier otro MTA distinto a postfix) está instalado.net/projects/pam-mysql/ Paquetes a instalar: pam_mysql-0.2. la ruta sería /var/www/html/. Instalando el resto . El resto de paquetes a instalar es el siguiente.1.79-9.5-2.rpm --replacefiles # rpm -Uvh postfix-debuginfo-2.# rpm -Uvh postfix-2. Utilizaremos la instalación por defecto que nos deje cada paquete: amavisd-new-2.5.5-2.50-6 Instalando web-cyradm Sitio web de descarga original: http://www. El paquete tar ya viene preparado para descomprimir y usar: # cd /var/www/html # tar -xvzf web-cyradm-0.79-9. lo instalaremos mediante yum.tar.3.i386.5 Instalando pam-mySQL Sitio web de descarga original. 4.fc4 clamav-0. Editaremos los scripts y cambiaremos el usuario admin por otro a nuestro gusto y la contraseña test por la preferida. que es más que suficiente para cualquier sistema de correo que cumpla con amplias garantias de seguridad. además de crear la base de datos mail. pudiendo cada uno crear las tablas que considere necesarias para el sistema pensado. Para el propósito de este manual.1-1.88. La instalación de web-cyradm nos proporciona varios scripts de configuración y de creación de tablas.fc4 squirrelmail-1. se pueden usar herramientas del tipo phpmysqladmin o similares para ejecutar los scripts.1.clamav-data-0.1-1. por no decir que es necesario.sql y create_mysql. El segundo es el encargado de crear las tablas y de rellenarlas con un primer usuario (el administrador) y el usuario cyrus.sql # mysql -p < create_mysql.5-35.6-0.fc4 clamav-server-0.88. es necesario tener instalado un servidor de páginas web y un servidor de php. Como ya se ha explicado. Un último paso: Creación de las bases de datos de web-cyradm Para finalizar con la instalación del software y antes de adentrarnos en la configuración de cada paquete.4-1.1-1.cvs20050812. web-cyradm funciona correctamente en sistemas Fedora Core con la versión 5 de php y el servidor Apache. cambiar los nombres de usuario y claves por defecto y adecuarlas a nuestras necesidades.fc4 spamassassin-3.sql Si no se está familiarizado con mySQL. Antes de lanzar los scripts de creación de bases de datos.88. El resto de scripts realizan funciones de administración y actualización del sistema web-cyradm y no vienen al caso en esta instalación.fc4 clamav-update-0. el sistema postfix y web-cyradm son totalmente configurables a gusto del usuario.0.fc4 Como se dijo anteriormente. Bajo el directorio scripts de la instalación tenemos dos que nos ayudaran a formalizar nuestras tablas de mySQL. nos limitaremos a crear la estructura necesaria para la integración de web-cyradm y postfix con mySQL y PAM. fiabilidad y consistencia. los lanzaremos desde la consola de mySQL: # mysql -p < insertuser_mysql. Una vez editados los scripts. usuarios y tablas.fc4 mailman-2. es altamente recomendable. Cyrus y MySQL 11 . insertuser_mysql. El primero crea la base de datos de usuarios en nuestro sistema mySQL para el correcto funcionamiento de web-cyradm.1.sql.1-1.88. Sistema de correo con Postfix. crearemos las bases de datos necesarias para el correcto funcionamiento de webcyradm y postfix. IV – Seguridad en MySQL Daremos en este capítulo algunos pasos para añadir seguridad adicional a nuestro servidor mySQL.d/mysqld. La forma más sencilla de hacer esto es dirigiendo al demonio mysqld al interface local de red 127. la línea en cuestión aparece como sigue: /usr/bin/mysqld_safe --defaults-file=/etc/my. Una vez realizados los cambios.0.0.1 o loopback: /usr/bin/mysqld_safe --defaults-file=/etc/my. Sistema de correo con Postfix. buscaremos la línea que hace referencia al comando mysqld_safe.d/mysqld restart) y nos aseguraremos de haber realizado los cambios de forma correcta.1.cnf --pidfile="$mypidfile" >/dev/null 2>&1 & A parte de los suyos propios. Para ello. que es un ejecutable especial encargado de llamar al demonio mysqld y de pasarle ciertos parámetros que añaden una seguridad extra y un sistema de información en tiempo real de cualquier tipo de error que se produzca en relación a mySQL. mysqld_safe pasará al demonio mysqld cualquier parámetro compatible con este último. Por ejemplo. es necesario editar el fichero encargado de iniciar el sistema mySQL. Una vez cargado el fichero. Esto nos permitirá tener asegurada la conexión al demonio mysqld.1:3306 0.0. mysqld_safe se encargará de reiniciar el servidor cuando se produzca algún error que impida el correcto funcionamiento del mismo.cnf --bindaddress=127. Para ello. Nos aseguramos de esta forma de que nadie pueda realizar una conexión al demonio de mySQL a través de la red.0:* LISTEN Configurando el firewall Si tenemos previsto que nuestro servidor de mySQL corra en una máquina distinta a la del servidor de correo. reiniciaremos el servidor de mySQL (/etc/init.0. este fichero se sitúa por defecto en /etc/init. Cyrus y MySQL 12 .0. podemos hacer uso del siguiente comando: # netstat -an|grep LISTEN Y buscaremos en la salida algo similar a esto: tcp 0 0 127. habremos de realizar una serie de cambios en la configuración de nuestro firewall. Así que usaremos --bind-address para hacer que mysqld se ejecute sólo en el entorno 127. recurriremos a las páginas del manual de ambos comandos. En Fedora Core.0.0. necesitamos alguna medida adicional de seguridad.0. En este caso.1 --pid-file="$mypidfile" >/dev/null 2>&1 & Para más información acerca de los parámetros de ejecución de mysqld_safe y mysqld. habremos de cerrar el acceso al puerto que utiliza mySQL para la comunicación con otras máquinas: el puerto 3306.0. En Fedora. Asegurando MySQL Como nuestra intención es utilizar una base de datos corriendo en un servidor de mySQL para autenticar a los usuarios de correo.0. Para lograr este objetivo. hasta que no sea SELinux un sistema altamente probado. no se puede recomendar su uso. no se adelantará aquí ninguna configuración de iptables. Para el caso que nos ocupa y dependiendo de ciertas configuraciones.redirigiremos el puerto 3306 hacia la IP local de nuestro servidor mySQL y daremos acceso desde el firewall a la máquina que vaya a hacer de servidor de correo. Por lo tanto. siendo altamente recomendable su inutilización. el servidor de mySQL puede no llegar ni a arrancar de forma correcta si SELinux está habilitado. Como podrá suponerse. el kernel viene compilado por defecto con esta característica. modificaremos el archivo /etc/selinux/config y nos aseguraremos de que el parámetro SELINUX está igualado a disabled: SELINUX = disabled Sistema de correo con Postfix. En los sistemas Fedora. Las incompatibilidades creadas entre SELinux y otras partes del sistema operativo son tantas que. el programa iptables se encarga de realizar redirecciones de puertos. por la cantidad de configuraciones que se pueden manejar y por estar este manual orientado a otro tipo de instalación que nada tiene que ver con iptables. En los sistemas Fedora. Cyrus y MySQL 13 . sustituyendo éste al antiguo rinetd. SELinux Capítulo aparte merece el programa de bloqueos de seguridad sobre el kernel SELinux. crypt. Cyrus y MySQL 14 . entre otros y los guardaremos con el nombre del servicio y la ruta anterior. todos los archivos de configuración de PAM se encuentran bajo el directorio /etc/pam. Hablaremos de las diferentes opciones de encriptación en el capítulo dedicado a la configuración de web-cyradm.d/. crearemos ficheros para los servicios de pop. habremos de asegurarnos de una sola cosa: que PAM reciba correctamente todos los datos necesarios para autenticar a los usuarios que pasan por el sistema Cyrus. que deberá coincidir con la configuración de encriptación que deseemos y que nos ofrece web-cyradm. Sistema de correo con Postfix.d/imap una vez realizados los cambios pertinentes sobre los parámetros passwd. De momento.V . Modificando ficheros En los sistemas bajo Fedora (y en casi todos los sistemas linux). Hay que poner especial atención al parámetro crypt. sieve o smtp. escribiremos un fichero de configuración como el siguiente: auth required pam_mysql. La autenticación que se persigue es la siguiente: Petición de acceso -> Intento de login en PAM -> Petición de datos a MySQL mediante pam_MySQL -> Devolución de login erróneo o satisfactorio a Cyrus Así.Configuración de PAM Una buena configuración de PAM es imprescindible para la autenticación de todos y cada uno de los usuarios de nuestro sistema de correo.so verbose=0 host=localhost user=usermail passwd=password db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time El cual guardaremos como /etc/pam. user y db.so verbose=0 host=localhost user=usermail passwd=password db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time account required pam_mysql. Para nuestros fines. usaremos el valor 1 ("encrypt") por ser el más portable. Por ejemplo. Crearemos un fichero idéntico para cada uno de los servicios que requieran autenticación desde pam_MySQL. Es aquí donde tendremos que modificar o crear los ficheros necesarios para una correcta autenticación de los usuarios de Cyrus. n .org. mysql:/etc/postfix/mysql-mydestination. considerará que toda entrega que se haga a través de un socket será de confianza. es establecer de forma correcta los parámetros de nuestro servidor de correo.tld.cf y observaremos que una línea como esta está presente: lmtp unix .. que igualaremos a los nombres de todos los dominios que consideremos locales (similar al fichero sendmail. será necesario utilizar LMTP para la comunicación entre postfix y cyrus. ya que cyrus requiere que todas las entregas por LMTP se autentiquen. igualaremos el parámetro relayhost a cada uno de los proveedores de servicios que nos interesen. nos veremos en la necesidad de utilizar los servicios de un proveedor para procesar el envío de correo..bar..cf. Aunque nuestra configuración del sistema de correo se está basando principalmente en sistemas Fedora y los permisos ya se aplican con las instalaciones de los paquetes.com.lmtp Para terminar. furchbar-grausam.pipe flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user} Hay que prestar especial atención a la ruta apuntada por el parámetro argv pues en alguna ocasión no refleja bien la situación del programa deliver y las entregas de correo pueden llegar a no efectuarse. whatever. Por otro lado.cf Lo primero que hay que hacer al abrir por primera vez el fichero /etc/postfix/main. Cada uno de los dominios. irá separado por comas: mydestination = foo. estableciendo que sea el usuario postman el que las realiza. old-cyrus unix . Si el parámetro queda en blanco. Tal y como veremos en un capítulo posterior dedicado a la confiuración de Cyrus. Para empezar. El fichero /etc/postfix/master. Cyrus y MySQL 15 . no está de más comentar que el socket creado por el servicio de lmtpunix (en Fedora Core /var/lib/imap/socket/lmtp) tendrá que ser accesible por postfix. el correo Sistema de correo con Postfix. multiple times.domain.n n .org Continuaremos con el parámetro mydestination. liberaliatempus.bar. si es que hay más de uno.cf Ya que es nuestra intención aprovecharnos de las ventajas que nos ofrece Sieve en las tareas de filtrado.VI – Postfix En el proceso de configuración del programa postfix atenderemos a los dos ficheros fundamentales que hacen que toda la maquinaria de este MTA engrane de forma perfecta: main. cambiaremos el nombre del host: myhostname = foo.cf y master.cf. El fichero /etc/postfix/main. En este caso.cw de configuración de sendmail).cf En algún caso.conf.ch. nos fijaremos en otra línea de configuración posterior: # The Cyrus deliver program has changed incompatibly. habilitaremos el servicio lmtpunix sobre el fichero de configuración /etc/cyrus. Abriremos por tanto el fichero /etc/postfix/master. cf sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf # Usuario y password de acceso al servidor mysql hosts = localhost user = mail password = password # El nombre de la base de datos dbname = mail # El nombre de la tabla table = virtual # select_field = dest where_field = alias additional_conditions = and status = '1' Sistema de correo con Postfix. sin la dirección completa.net Otro parámetro importante a tener en cuenta es el referente al mailtransport. por ejemplo.foobar. mientras que sender_canonical_maps se encarga de reescribir la dirección de correo a su formato correcto. /etc/postfix/mysql-virtual. utilizaremos distintos ficheros de configuración que informarán a postfix del lugar en la base de datos de mysql en el cual se encuentran los dominios virtuales correspondientes y los alias de usuario: virtual_alias_maps = mysql:/etc/postfix/mysql-virtual. Para esto. ya que los usuarios se crean habitualmente del modo test001. Este último parámetro es necesario para el uso de un interface web..foobar. Para nuestros propósitos.net relay03. preferimos usar lmtp..saliente será procesado directamente por el servicio de smtp que se haya establecido por defecto: relayhost = relay01. para lo cual igualaremos el parámetro mailbox_transport de la siguiente manera: mailbox_transport = cyrus Si.cf virtual_alias_maps establece la configuración de acceso a los alias virtuales. Cyrus y MySQL 16 . o el programa que se encargará de transportar el correo de un programa a otro. igualaríamos el parámetro al socket correspondiente: mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp Finalmente estableceremos bajo postfix el sistema de dominios virtuales y su procesamiento correcto. deberíamos usar como programa de procesamiento a Cyrus. crearemos los ficheros correspondientes.net relay02.foobar. Para el correcto funcionamiento de esta última configuración. por ejemplo.0.0:143 0.0. Para ello.0.. Si alguno de los servicios no aparece activado. a un buzón local (en negrita los comandos a teclear): # telnet localhost 25 Trying 127. Sistema de correo con Postfix.cf # Usuario y password de acceso al servidor mysql hosts = localhost user = mail password = password # El nombre de la base de datos dbname = mail # El nombre de la tabla table = virtual # select_field = alias where_field = username #Devuelve la primera ocurrencia additional_conditions = and status = '1' limit 1 /etc/postfix/mysql-mydestination.0.0.0:* LISTEN tcp 0 0 0.1:2000 0.0. ya se podría mandar correo.1.0:* LISTEN Sobre el puerto 25 tenemos el servicio smtp. veremos ante todo que cada uno de los servicios está a la escucha en su lugar correspondiente: # netstat −an|grep LISTEN tcp 0 0 0.cf # Nombre de usuario y contraseña del servidor mysql hosts = localhost user = mail password = password # Nombre de la base de datos dbname = mail # Nombre de la tabla table = domain # select_field = domain_name where_field = domain_name SMTP con autenticación SASL y la seguridad de PAM Antes de comenzar con la activación en postfix de SASL./etc/postfix/mysql-canonical.0. Cyrus y MySQL 17 . Connected to webmail. en el 2000 se encuentra sieve y en el 143 escucha el servicio imap (a configurar en el siguiente capítulo).mailserver.0.0:* LISTEN tcp 0 0 127.0.1).0.0.0.0.0.0:25 0.0.. si los tres servicios están activos. A priori.com (127. esperaremos a la configuración correcta de Cyrus y a un capítulo posterior para hacer todas las comprobaciones.0. vamos a comprobar que todo lo que hemos hecho hasta ahora se comporta de manera correcta. Autenticaremos a los clientes conectados mediante smtp para que puedan hacer relay sobre el servidor de correo.Escape character is '^]'. donde cambiaremos el mecanismo por defecto (habitualmente shadow) para igualarlo a pam: MECH=pam Sistema de correo con Postfix. permit_mynetworks. el fichero /usr/lib/sasl2/smtpd.com MAIL FROM: < jsf@mailserver. si no lo está ya. ahora sí. Para nuestros propósitos de autenticación bajo mysql.smtpd -v Sabiendo que el log queda alojado en /var/log/maillog en los sistemas con Fedora. dejaremos la opción igualada a nada.n . Si smtpd_sasl_local_domain se iguala a algo. Para ver un log bastante detallado del proceso de envío de correo. Esto lo haremos sobre el fichero /etc/sysconfig/saslauthd. . Tendremos que indicar seguidamente el mecanismo a usar a través de SASL y para ello dejaremos. aseguraremos la conexión mediante TLS. los clientes sin autoridad podrán hacer relay sobre el servidor siempre que pertenezcan a las redes indicadas en mynetworks. sobre la línea correspondiente al servicio de smtp: smtp inet n . a activar SASL sobre postfix. Procedamos.com> 250 Ok DATA 354 End data with <CR><LF>.mailserver. hay que cambiar el método de autenticación con que saslauthd se inicia por defecto. añadiremos el parámetro -v al fichero /etc/postfix/master.<CR><LF> Este es un mensaje de pruebas enviado a traves de telnet. Cyrus y MySQL 18 . Más adelante. 220 webmail. reject_unauth_destination smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes Con esto.cf: smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated.conf con una única línea: pwcheck_method: saslauthd Y. forzaremos la comprobación del usuario entrando en /etc/sasldb2 con [usuario@dominio al que se iguala la opción].. Todo lo demás será rechazado. 250 Ok: queued as 5F496BEE9 QUIT 221 Bye Connection closed by foreign host. Para ello modificaremos la opción smtpd_recipient_restrictions del fichero /etc/postfix/main.mailserver.cf.com> 250 Ok RCPT TO: < jsa@mailserver. sobre todo en sistemas con RedHat o con Fedora.com ESMTP Postfix (Fedora) HELO localhost 250 webmail. mailserver. reject_unauth_destination. reject_unknown_recipient_domain. permit_mynetworks.cf podría quedar de esta manera en lo referente a los filtros de autenticación: smtpd_helo_required = yes disable_vrfy_command = yes smtpd_recipient_restrictions = reject_invalid_hostname. mysql:/etc/postfix/mysql-mydestination. localhost.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = $myhostname. reject_non_fqdn_recipient. echemos un vistazo al fichero de configuración /etc/postfix/main. como el soporte para TLS o el filtrado con amavisd-new: #CONFIGURACIÓN PRINCIPAL POSTFIX setgid_group = postdrop smtpd_banner = $myhostname ESMTP $mail_name (Fedora) biff = no append_dot_mydomain = no delay_warning_time = 4h command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix program_directory = /usr/libexec/postfix myhostname = webmail. $mydomain. permit Por último.0.168. incluyendo opciones que veremos más adelante. permit_sasl_authenticated.cf al completo.cf myorigin = $myhostname mynetworks = 127. potenciaremos la seguridad en postfix mediante diferentes opciones que iremos añadiendo a smtpd_recipient_restrictions. el fichero /etc/postfix/main. Habitualmente.0/24 relay_domains = $mydestination mailbox_size_limit = 0 recipient_delimiter = + #mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp mailbox_transport = cyrus #SOPORTE SASL smtp_sasl_auth_enable = no Sistema de correo con Postfix.0. aunque siempre dependerá de la distribución en uso: # mv /var/run/sasl2 /var/run/sasl2-old # ln -s /var/run/saslauthd /var/run/sasl2 Una vez realizados los cambios.$mydomain. Cyrus y MySQL 19 . quedará como sigue.0/8.Para sistemas que no sean Fedora. reject_unknown_sender_domain. reject_non_fqdn_sender. localhost.com mydomain = mailserver. amén de utilizar opciones como smtpd_helo_required = yes para verificar el uso correcto de nuestro servidor de correo. check_helo_access hash:/etc/postfix/helo_check smtpd_data_restrictions = reject_unauth_pipelining. 192.0. hay que indicar al sistema dónde se encuentra el socket saslauthd y para esto habrá que crear un enlace hacia la posición deseada. Aunque es necesaria la lectura de la documentación de postfix a este respecto. reject_non_fqdn_recipient.pem smtpd_tls_cert_file = /etc/postfix/ssl/newcert. permit_sasl_authenticated.smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous #smtpd_sasl_local_domain = $myhostname smtpd_sasl_local_domain = broken_sasl_auth_clients = yes #smtp_sasl_password_maps = hash:/etc/postfix/sasl/saslpass #AUTENTICACIÓN VÁLIDA smtpd_helo_required = yes disable_vrfy_command = yes smtpd_recipient_restrictions = reject_invalid_hostname. permit_mynetworks. reject_unknown_recipient_domain. reject_non_fqdn_sender.cf message_size_limit = 20480000 Sistema de correo con Postfix.cf sender_canonical_maps = mysql:/etc/postfix/mysql-canonical. check_helo_access hash:/etc/postfix/helo_check smtpd_data_restrictions = reject_unauth_pipelining. permit #SOPORTE TLS smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/newreq.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom #Amavisd-New content_filter = smtp-amavis:[localhost]:700024 sendmail_path = /usr/sbin/sendmail html_directory = no manpage_directory = /usr/share/man newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq queue_directory = /var/spool/postfix mail_owner = postfix unknown_local_recipient_reject_code = 450 smtp_host_lookup = dns. native #OTHERS virtual_alias_maps = mysql:/etc/postfix/mysql-virtual. reject_unauth_destination. reject_unknown_sender_domain. Cyrus y MySQL 20 .pem smtpd_tls_CAfile = /etc/postfix/ssl/cacert. conf. quedando éste relegado a la autenticación a través de PAM con la introducción de este último sistema en las distintas distribuciones de linux y. Por ejemplo.net Cyrus-IMAP La configuración de la plataforma Cyrus se establece a partir de dos ficheros fundamentales: /etc/cyrus. el mecanismo utilizado era la autenticación directa bajo SASLDB. entre otras muchas opciones. El segundo especifica los parámetros de configuración del servicio IMAP de Cyrus. En sistemas anteriores. por supuetso.conf y /etc/imapd. aunque fuera de forma somera. En el primero de ellos se determinan los servicios a ejecutar mediante el inicio de Cyrus. el sistema de autenticación pasará por el acceso de PAM a una base de datos MySQL. Para continuar con la configuración. SASL Recordemos cómo en el capítulo anterior modificábamos el fichero /etc/sysconfig/saslauthd para igualar el mecanismo de autenticación a un sistema con PAM. Si ahora utilizamos sasldblistusers2: #sasldblistusers2 [email protected] . teniendo acceso completo a los buzones de almacenamiento de correo y al sistema de autenticación de usuarios. en las distribuciones bajo Fedora Core. Para nuestros propósitos.net : userPassword Para finalizar. el comando sasldblistusers2 listará los usuarios existentes y el comando saslpasswd2 añadirá usuarios a nuestra conveniencia. Sistema de correo con Postfix. sería altamente recomendable que el lector de este manual leyera. donde se incluye toda la documentación necesaria para la correcta configuración de un sistema Cyrus y sus distintas asociaciones con el programa Postfix. Con el paquete cyrus-sasl ya instalado tendremos acceso a los diferentes ejecutables que nos permitirán el acceso y la manipulación de las bases de datos de usuarios. la documentación incluida en la rama de directorios /usr/share/doc/cyrus-imapd y /usr/share/doc/cyrussasl. Esta última será protegida mediante una capa de seguridad extra entre el protocolo y la conexión. Cyrus y MySQL 21 . como ya hemos explicado en anteriores capítulos. Veamos un ejemplo: # saslpasswd2 −c user001 El parámetro -c nos permite añadir un usuario y el parámetro -d lo borraría de la base de datos. limpiemos de la base de datos el ejemplo: # saslpasswd2 −d user001 Otro uso de saslpasswd2 es el de asociar usuarios a dominios mediante la utilización de la opción -u: # saslpasswd2 −c user002 −u dominio_03.Cyrus IMAP y SASL Con la configuración y puesta en marcha de Cyrus IMAP completaremos la primera fase de instalación de nuestro servidor de correo. Cyrus y MySQL 22 . bien sean tipo TCP o UNIX. los servidores postfix y cyrus corriendo en máquinas distintas) será necesario el uso de sockets TCP. Sistema de correo con Postfix. pues describe los procesos que deberán lanzarse para atender las conexiones que los clientes hagan a ciertos sockets. por ejemplo. reiniciaremos el servidor para que estos se apliquen: # service cyrus-imapd restart El fichero /etc/imapd. así que observemos como queda el fichero: START { recover cmd="ctl_cyrusdb -r" idled cmd="idled" } SERVICES { imap cmd="imapd" listen="localhost:imap" prefork=5 imaps cmd="imapd -s" listen="imaps" prefork=1 pop3 cmd="pop3d" listen="pop3" prefork=3 pop3s cmd="pop3d -s" listen="pop3s" prefork=1 sieve cmd="timsieved" listen="sieve" prefork=0 lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1 } EVENTS { checkpoint cmd="ctl_cyrusdb -c" period=30 delprune cmd="cyr_expire -E 3" at=0400 tlsprune cmd="tls_prune" at=0400 } Nótese que se han añadido las líneas correspondientes a la ejecución de los servicios de pop3 y pop3s. Cada vez que hagamos cambios sobre el fichero de configuración de Cyrus. El paquete rpm instalado sobre un sistema con Fedora nos deja una configuración por defecto que apenas habrá que cambiar.El fichero /etc/cyrus.conf Este fichero de configuración se compone de tres partes bien diferenciadas: 1.conf. En un contexto diferente (con. de modo similar a los trabajos del cron. El servicio imaps nos servirá para la configuración de IMAP sobre SSL y el servicio de sieve nos ejecutará el servicio de filtrado de correos. 2. Típicamente se usa para llevar a cabo tareas programadas de limpieza y mantenimiento.conf Sobre este fichero definiremos los parámetros locales para el servidor IMAP. SERVICES: esta sección es el corazón del fichero /etc/cyrus. donde opción es el nombre de la opción a configurar y valor el valor al cual se está estableciendo esa opción. Hay que aclarar igualmente que en la configuración descrita se opta por la utilización de sockets UNIX. estas líneas no se incluirían. debido a que toda la configuración seguida en este manual supone que todos los servicios se ejecutarán sobre la misma máquina. Su uso más característico es inicializar las bases de datos y lanzar los servicios de larga ejecución. EVENTS: esta sección lista los procesos que deberían ejecutarse a intervalos específicos. START: esta sección lista los scripts que se ejecutarán antes de que se arranquen los servicios. Para un sistema sólo con IMAP. Tenemos en el interior de este fichero una serie de líneas con el formato opción: valor . 3. admins: esta opción permite definir los usuarios que tendrán permisos de administrador (flag a de la ACL de un buzón) sobre todos los buzones del sistema. es una buena idea trabajar con los nombres de usuario siempre en minúsculas (el valor por defecto asume que el usuario es consciente de lo que está haciendo). sasl_minimum_layer: el SSF (del inglés. tal que # saslpasswd2 −c cyrus. 256. sasl_mech_list: esta es la lista de los mecanismos de autenticación que se van a soportar. allowplaintext: mediante esta opción decidimos si vamos a permitir uso del mecanismo de autenticación sasl plain. En este artículo usaremos éste último valor. un valor más algo requiere algún tipo de cifrado. sasl_auxprop_plugin: Esta opción nos permite especificar los plugins del auxpropd que deseamos cargar. Es pertinente valor por defecto. El usuario cyrus. Carece de sentido a menos que se quieran implementar grupos de noticias. nada para el resto). Todas estas configuraciones suelen venir activadas por defecto en las instalaciones base de paquetes bajo Fedora Core. por ejemplo amavisd−new (bastará con que añadamos al usuario con el cuál se ejecutan a ese grupo). Los valores por defecto son correctos. Lo igualaremos al valor PLAIN. pues el usuario postman (valor por defecto) es autenticado automáticamente. Un valor igual a 1 requiere protección de integridad.La líneas en blanco o con almohadilla (#) al principio serán ignoradas. lmtp_admins: esta opción permite especificar una lista de usuarios. con valor no. pues de ese modo otras aplicaciones podrán leer el contenido de los emails. que podrán enviar correo a través de LMTP por TCP/IP (además de aquellos definidos en la opción admins anterior). ni tan siquiera son necesarias estas líneas.conf. por lo que bastará con descomentar la línea del fichero. Basta con quitar el comentario a la línea para establecer el valor a yes. Debido a que Cyrus diferencia mayúsculas y minúsculas. que tendrán la categoría de administradores LMTP. Repasemos alguna de las opciones más relevantes: • lmtp_downcase_rcpt: esta opción. viene por defecto comentada. umask: esta opción permite definir los permisos con los cuáles se guardarán los ficheros y subdirectorios dentro de /var/spool/cyrus/mail. allowanonymouslogin: esta opción permite el acceso anónimo a los buzones en cuyas ACLs se haya añadido al usuario anonymous. por lo que se dejará su valor por defecto no. de estar usando sasl_pwcheck_method: auxprop. idlesocket y notifysocket: estas tres opciones especifican las rutas para los tres sockets UNIX Cyrus. Recomienda empezar con un valor de 0 (valor por defecto). Es útil para evitar que se prueben todos los plugings existentes y para definir el orden de los mismos. sasl_maximum_layer: valor máximo del SSF que el servidor permitirá negociar al cliente. Este usuario se va a autenticar mediante el método SASL. Sobre un sistema con Fedora. es la opción más recomendable. que sirve para forzar que el nombre de usuario se convierta a minúsculas. que permite login de texto plano. pero es conveniente permitir que el grupo (mail por defecto) tenga también permisos de lectura. es decir. • • • • • • • • • • Observemos ahora como quedaría el fichero con las opciones por defecto utilizadas en la configuración de este manual: Sistema de correo con Postfix. por lo que debe añadirse a la base de datos /etc/sasldb2 mediante el comando saslpasswd2. Es necesario descomentar esta línea para que use sasldb. Es recomendable mantener el valor por defecto yes hasta que tengamos todo el sistema base configurado y funcionando. Por defecto tiene el valor 077 (lectura y escritura para el propietario. Cabe destacar que el valor de lmtpsocket (por defecto /var/lib/imap/socket/lmtp) debe estar en consonancia con el especificado en el fichero /etc/cyrus. separados por espacios. y únicamente él. Cyrus y MySQL 23 . Si se van a usar socketsUNIX no es necesario quitar el comentario a esta opción. lmtpsocket. es decir. una vez esté todo funcionando será más sencillo aumentar la seguridad. security strength factor) mínimo que el servidor permitirá negociar cliente. las subcarpetas del usuario se crearán a la altura de inbox.7 16476 5004 ? S Apr02 0:04 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam Sistema de correo con Postfix.d/cyrus-imapd no ejecuta por defecto saslauth2. programa incorporado en el paquete perl-Cyrus : # cyradm --user cyrus --server localhost --auth plain Password: IMAP Password: mail. por lo que comprobaremos su ejecución mediante el siguiente comando: # ps aux | grep saslauthd Que nos devolverá.serverdomain. según diferentes instalaciones): Login failed: generic failure at /usr/lib/perl5/site_perl/5. # yes .com> Saldremos del programa de administración mediante la orden exit.5/i386linux-thread-multi/Cyrus/IMAP/Admin. admins: cyrus allowanonymouslogin: no allowplaintext: yes sasl_mech_list: PLAIN servername: mail. en el caso de una ejecución correcta.las subcarpetas de usuario se crean debajo de inbox.8. Hay que tener en cuenta que el script /etc/init. varias líneas similares a esta: root 2210 0.#imapd. Es posible que al ejecutar cyradm obtengamos el siguiente error (diferenciándose en la ruta o en la línea de error.conf configdirectory: /var/lib/imap partition-default: /var/spool/imap #altnamespace: # no . Cyrus y MySQL 24 . altnamespace: no lmtp_downcase_rcpt: yes #admins: Usuarios con permisos administrativos sobre todos los buzones.pm line 118 cyradm: cannot authenticate to server with plain as cyrus Esto es debido a que el demonio saslauthd no se está ejecutando. Añadir usuarios con saslpasswd2 -c username.com autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sievedir: /var/lib/imap/sieve sendmail: /usr/sbin/sendmail hashimapspool: true sasl_pwcheck_method: saslauthd Consideraciones acerca del servidor Cyrus-IMAP Vamos a acceder a la interfaz de comandos para la gestión de Cyrus-IMAP mediante la llamada a cyradm.serverdomain.0 0. no sólo LF. el resto de ficheros pueden encontrarse bajo la rama /var/spool/imap en un sistema con Fedora Core: • • • • • Ficheros de mensajes. ej. Cada directorio se compone de los siguientes ficheros. El nombre de fichero del mensaje es el UID del mensaje seguido de un punto (p. ejecutaremos el servicio de forma manual y nos aseguraremos de su correcta activación: # chkconfig saslauthd on # service saslauthd start Recordemos.index. obtendremos un error al intentar autenticar a un usuario concreto bajo Cyrus-IMAP: # cyradm --user mail0001 --server localhost --auth plain Password: IMAP Password: Login failed: authentication failure at /usr/lib/perl5/site_perl/5. Ccontiene información de estado. cyrus. Contiene información de tamaño variable sobre cada uno de los mensajes del buzón de correo. Cyrus y MySQL 25 . avisando al usuario una vez recogido el mensaje. Así que recordaremos el cambio en el fichero /etc/sysconfig/saslauthd para dejar el parámetro MECH como sigue: MECH=pam Si esto no se hace así. retornando un error temporal y reintentando el envío durante un par de días.8. Para que un mensaje se pueda insertar en un buzón. no habría forma de saber cuándo se quiso entregar correo y no se entregó.seen. tal y como indicamos en un capítulo anterior. cyrus.cache. inician saslauthd con shadow como sistema de autenticación por defecto. Contiene un número mágico e información de tamaño variable sobre el propio buzón de correo.). En un principio. que contiene el mensaje en formato RFC 822. a excepción de cyrus.header.seen. éste debería tener espacio de cuota suficiente.conf. el programa intentará recuperar información a partir de los Sistema de correo con Postfix. Las líneas del mensaje están separadas por CRLF. lo que origina problemas a la hora de autenticar a los usuarios de los buzones bajo Cyrus-IMAP. que se suele encontrar bajo la rama /var/lib/imap/user. Hay uno por mensaje. 102. Esto sucede de esta forma ya que si no fuera así. Reconstrucción de la base de datos de Cyrus-IMAP Los directorios de buzones componen la base de datos más grande de un sistema Cyrus. el mensaje se recogerá de todos modos. cuya creación se establece mediante el uso del comando setquota en cyradm y mediante autocreatequota en el fichero /etc/imapd. Contiene información de tamaño fijo sobre el propio buzón de correo y cada uno de los mensajes que contiene. El programa reconstruct es el indicado en los casos en que estos ficheros se corrompan de algún modo. Si la cuota ya está por encima del límite. el envío del correo fallará. sobre cada uno de los usuarios que han leído el buzón de correo y tenían el permiso s. cyrus.5/i386-linux-threadmulti/Cyrus/IMAP/Admin. cyrus. aunque en el proceso de envío de correo sucede algo curioso: aunque el mensaje a entregar supere la cuota permitida. de tamaño variable.pm line 118 cyradm: cannot authenticate to server with plain as mail0001 Otro aspecto a tener en cuenta del servidor Cyrus-IMAP es el uso de cuotas. que los sistemas con Fedora Core o con RedHat.En caso contrario. que se restaura sin proceso posterior. nombre de flags. ante un fallo de disco o una pérdida accidental de datos. Usaremos alguno de los administradores definidos en /etc/imapd. respectivamente. crearemos un buzón de prueba de la manera que sigue (nos suponemos dentro de la consola de cyradm): mail. para crear y borrar buzones. Utilización de cyradm La administración de los buzones de correo se realiza mediante el programa cyradm o mediante un interfaz al uso como web-cyradm. sam.serverdomain. lm. Por lo tanto.com> Una vez dentro de la consola.comt> cm user.serverdomain. que recuperaremos mediante reconstruct. Una vez reconstruidos los ficheros de control. Llegados a este punto. o rama de configuración. En un capítulo posterior a la configuración de web-cyradm repasaremos la configuración haciendo uso del programa imtest. siendo los más importantes cm y dm. etc. podemos teclear help para obtener un listado de todos los comandos. cuya configuración detallaremos en un capítulo posterior. el usuario cyrus : # cyradm --user cyrus --server localhost IMAP Password: mail. también incluído en el paquete cyrus-imapd-utils.serverdomain. Sistema de correo con Postfix. podemos restaurar la información a partir de una copia de seguridad de los directorios de usuario y el programa reconstruct. Es por lo tanto de extrema importancia hacer copia de seguridad de dos ramas de directorios en un sistema con Fedora Core: La rama /var/spool/imap. ejecutaremos quota -f para restablecer la cuota de cada uno de los buzones a partir de los ficheros raíz. que lista los buzones disponibles. que borra las ACL de un buzón. En nuestro caso.ficheros de índice y de encabezados. tal como fechas.usr001 mail. Cyrus y MySQL 26 . o dam. recontruyendo el resto de información de la lectura de los propios ficheros de mensajes.com> lam user..conf para acceder a la consola de administración.usr001 usr001 lrswipcda Ahora ya deberíamos ser capaces de dar de alta una cuenta de correo usando el protocolo IMAP en nuestro cliente de correo y nos podríamos conectar al servidor. y la rama /var/lib/imap. que establece las ACL en un buzón. pl). La generación de los certificados Si pretendemos que nuestro servidor ofrezca servicio de correo a terceros y pretendemos que la comunicación con estos se realice de forma cifrada. Lo primero que tendremos que hacer será crear el certificado siguiendo los pasos que se detallan a continuación. Cyrus y MySQL 27 . por lo que será suficiente con la creación de una autoridad certificadora propia que se encargará de firmar los certificados. evitándose con la segunda el elevadísimo coste de un certificado de pago. es altamente recomendable el uso de un certificado firmado por una autoridad certificadora del tipo Verisign o Thawte.pl -newca • Seguidamente realizaremos la petición del certificado: #/etc/pki/tls/misc/CA. Firma del certificado por una entidad certificadora. • Creamos una nueva entidad certificadora mediante el script /etc/pki/tls/misc/CA del paquete openssl (existe otro script más completo que se obtiene de la instalación del paquete openssl-perl y cuyo uso se recomienda. atendiendo a una única salvedad: No añadiremos palabra de paso a los certificados para evitar el bloqueo del servidor al iniciarse. La máquina que establece la conexión mediante TLS usará la información de los certificados para iniciar un proceso de validación que evitará la intercepción maliciosa de la comunicación. Resumiremos por tanto los tres pasos a seguir para generar un certificado: • • • Creación del certificado. Instalación del certificado. estudiaremos en este capítulo la implementación de un sistema de cifrado bajo el protocolo TLS para asegurar mediante canales seguros todas las comunicaciones entre el cliente y el servidor de correo.Cifrado del canal Como complemento a la configuración del sistema de correo con Postfix y Cyrus. La ruta de este script quedaría en /etc/pki/tls/misc/CA. Las dos opciones serán igual de seguras. Cada certificado proporcionará información sobre una autoridad que se encargará de validar el certificado enviado a través de una conexión TLS. Adjuntaremos al comando el parámetro -newca para la creación de la nueva CA: #/etc/pki/tls/misc/CA. La finalidad de este manual supone el uso del servidor en la red privada de la empresa o para el disfrute de comunicaciones cifradas a título personal.pl -newreq-nodes -sign Sistema de correo con Postfix. A través de las utilidades incluidas en el paquete OpenSSL generaremos certificados de seguridad que aplicaremos a las configuraciones de los programas Postfix y Cyrus-IMAP.pl -newreq-nodes • Finalmente firmaremos el certificado: #/etc/pki/tls/misc/CA.VIII . La emisión de un certificado de seguridad tienen un único objetivo: proporcionar información única que prueba que la máquina encargada de cifrar la comunicación es la máquina a través de la cual nuestra máquina cliente quiere establecer una comunicación. Estos ficheros son los siguientes: • • • cacert. añadir el dominio y solicitar la firma del certificado. podemos usar los certificados emitidos por asociaciones del tipo CACert.pem Para finalizar la instalación ejecutaremos los siguientes comandos: #cp cacert. tendremos que ejecutar openssl rsa sobre el fichero de clave original.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom Así. para cambiar el estado de la clave de CA generada anteriormente.pem /etc/postfix/ssl/ #chown root /etc/postfix/ssl/newkey. todas las comunicaciones y autenticaciones que se hagan a través de smtpd se realizarán mediante TLS. Será necesario realizar un alta en su página web.pem Para evitar los avisos en los clientes de correo originados por la entidad certificadora no reconocida y tener que recurrir al pago a una entidad reconocida comercialmente. al cual se remitirá al cliente cuando quiera comprobar la autenticidad del certificado que le ha enviado nuestro servidor Postfix.pem #chmod 400 /etc/postfix/ssl/newkey. Quedará guardado en /etc/pki/CA/cacert. reiniciaremos el servidor postfix.pem smtpd_tls_cert_file = /etc/postfix/ssl/newcert. newkey.pem: el certificado privado que almacenaremos en el servidor y del cual la parte realmente importante es la clave.Los ficheros resultantes serán copiados a /etc/postfix/ssl. Sistema de correo con Postfix. teclaríamos en la consola lo siguiente: # openssl rsa -inform pem -in /etc/pki/CA/private/cakey.pem: el certificado de la autoridad certificadora.pem smtpd_tls_CAfile = /etc/postfix/ssl/cacert. Instalaremos entonces su certificado raíz en cada máquina y tendremos certificados firmados por una entidad reconocida con coste es nulo.pem -text -out /etc/pki/CA/private/newkey. que debe permanecer secreta.pem. Cyrus y MySQL 28 .pem: el certificado público que enviaremos al cliente para establecer la comunicación segura.pem /etc/postfix/ssl/ #cp newkey. Por ejemplo. Para convertir un fichero de clave con palabra de paso en uno sin palabra de paso. Modificaciones en Postfix Las modificaciones para cifrar el canal desde postfix se harán sobre el fichero /etc/postfix/main. que contendrá estas lineas adicionales (que ya se publicaron en el capítulo correspondiente a la configuración de postfix): smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/newkey. Para aplicar los cambios. newcert.cf.pem /etc/postfix/ssl/ #cp newcert.org. net (127.key #chmod 600 /etc/ssl/certs/cyrus−global.pem #cp /etc/postfix/ssl/newkey.server.server.1. los comandos a introducir): # telnet localhost 25 Trying 127.0. Cyrus y MySQL 29 . añadiremos las siguientes líneas a /etc/imapd.pem /etc/ssl/certs/cyrus−global.key Para finalizar.0. Para continuar.pem tls_key_file: /etc/ssl/certs/cyrus-global. Escape character is '^]'. 220 mail.cf y la opción smtpd_tls_loglevel en un valor de.0. bajo la sección SERVICES: imap imaps cmd="imapd" listen="localhost:imap" prefork=5 cmd="imapd -s" listen="imaps" prefork=1 Donde observamos la ejecución del protocolo seguro de imap (imaps) y la ejecución del protocolo imap sin seguridad sólo bajo localhost (necesario para el uso de cyradm).conf: tls_cert_file: /etc/ssl/certs/cyrus-global. que auditaremos sobre el fichero /var/log/maillog. podemos aumentar el nivel de loggin sobre el fichero /etc/postfix/main.0.Modificaciones en Cyrus-IMAP Para activar el cifrado de la comunicación en Cyrus-IMAP atenderemos primero a las dos lineas de configuración referentes al protocolo imap en el fichero /etc/cyrus.. observemos cómo el servidor smtp acepta comunicaciones cifradas al validarse (En azul. ya que usaremos los mismos certificados que postfix: #cp /etc/postfix/ssl/newcert.pem #cp /etc/postfix/ssl/cacert.conf.net ESMTP Postfix (Fedora) EHLO localhost 250-mail. por ejemplo.server. Los distintos métodos de autenticación disponibles se ofrecen antes de comenzar el establecimiento del canal seguro. Connected to mail..net 250-PIPELINING 250-SIZE 20480000 250-ETRN 250-STARTTLS 250 8BITMIME STARTTLS 220 Ready to start TLS QUIT QUIT Connection closed by foreign host. Si alguna cosa no resultara correcta.pem Y ejecutaremos los comandos siguientes.pem /etc/ssl/certs/cyrus−global.1). Sistema de correo con Postfix.key tls_ca_file: /etc/ssl/certs/cyrus-imapd-ca.key #chown cyrus:mail /etc/ssl/certs/cyrus−global. 3.pem /etc/ssl/certs/cyrus−imapd−ca. un servidor de páginas web en el mismo sitio. no permitirían el correcto funcionamiento de web-cyradm. sería posible el uso de otros servidores de bases de datos como PostgreSQL. Cyrus y MySQL 30 .dist. El fichero . php-pear-1.2-5 Librería de objetos que añaden soporte MySQL a php. crear nuevos dominios virtuales. usaremos MySQL. 'ADMIN' => 'cyrus'. web-cyradm necesita un intérprete/servidor de php corriendo en la parte administrativa y. teniendo en cuenta que postfix no ofrece soporte nativo para este servidor. como pudieran ser dar de alta o baja a nuevos usuarios. llega a ser una necesidad poder usar un frontend que simplifique lo máximo posible las tareas básicas del administrador.2-5 Paquete contenedor del generador de páginas php 5. administrar contraseñas. que habrá de ser renombrado o copiado con el nombre de . No es el objetivo de este manual ayudar a la configuración de ninguno de los dos servidores./config/conf.php. aunque habrá que tener en cuenta la instalación de ciertos paquetes bajo una distribución de Fedora Core que. 'PORT' => 143. Comprobando las librerías Tal y como ya explicamos en el Capítulo II. 'PASS' => 'secret' ). A partir de su versión 5.Web-Cyradm Llegados a este punto.1.4. En nuestro caso.1.6-2 Colección de clases de autenticación sobre servidores web PEAR. La primera opción con la que nos encontramos es la opción del lenguaje a utilizar: $DEFAULTLANG = "es_ES".. Los paquetes a instalar son los siguientes: • • • • php-5. obviamente. crear nuevos alias.7./config/conf. Fedora Core se distribuye con este componente separado del paquete de PEAR principal. entraremos en la configuración de acceso al servidor Cyrus (las opciones son bastante explícitas y no necesitan de explicación adicional): #The Cyrus login stuff $CYRUS = array( 'HOST' => 'localhost'.php La distribución por defecto de web-cyradm nos deja un fichero de configuración por defecto llamado . php-pear-DB-1. php-mysql-5. Dado que web-cyradm usa PEAR como capa de abstracción durante el acceso a las bases de datos. web-cyradm hará exactamente esto por nosotros desde un amigable interface escrito en php. Inmediatamente después./config/conf.6-4 (Sólo sobre Fedora Core 5) Clase oficial de abstracción de acceso a bases de datos de php. de no estar presentes. Sistema de correo con Postfix. El siguiente apartado se refiere a la configuración de la base de datos. etc.php.IX ... el programa nos propone un valor de 1000.dominio. // set to "tcp" for TCP/IP 'localhost'. Para establecer este nivel de encriptación. La opción $SESS_TIMEOUT establece el tiempo de inactividad necesario para considerar una sesión finalizada. habremos de tener muy en cuenta esta configuración y usar la función crypt() a la hora de introducir la contraseña correspondiente. por lo que se recomienda pensar bien la configuración antes de empezar a añadir usuarios o. 'secret'. 'mail'. los nombres de usuario se asignarán sobre la base de un prefijo predeterminado (por ejemplo. test001. Por defecto. así como una opción para el usuario que permitirá el acceso al correo a través de la web. igualaremos el parámetro $CRYPT del fichero . usábamos la opción crypt=1. Nombres de usuarios web-cyradm nos propone dos modos de introducción de usuarios.). A partir de este prefijo..apellido. test002. web-cyradm irá asignando nombres de usuario por defecto siguiendo el patrón prefijo00 + 1 (en el ejemplo anterior. En este punto habremos terminado la configuración completa de un servidor de correo con postfix. dar por válida la configuración por defecto. tendremos que añadir o descomentar una línea en el fichero /etc/imapd. $DEFAULT_QUOTA establece la cuota a asignar por defecto a los buzones cuando creamos un nuevo dominio. Por defecto (valor 0). Si preferimos crear manualmente los usuarios a través de MySQL. 'mail' Seguidamente igualaremos la opción $LOG_DIR a la ruta donde creamos el archivo de log durante la instalación del programa. En los capítulos posteriores comprobaremos el funcionamiento correcto de nuestra configuración y añadiremos a nuestro servidor la capacidad de filtrado de spam y virus.conf tal que: unixhierarchysep: yes Hay que tener en cuenta que no se pueden mezclar ambos tipos de usuario../config/conf. 'unix'..net.php al valor "crypt". La otra opción a nuestra disposición (valor 1) sería el uso de nombres de usuario del tipo nombre. Cyrus y MySQL 31 . dependiendo del valor que asignemos a la opción $DOMAIN_AS_PREFIX.. test). 'mysql'. Encriptación de contraseñas web-cyradm soporta el almacenamiento de contraseñas encriptadas y desde aquí se recomienda encarecidamente su uso. Recordemos que en los ficheros que creamos en el capítulo correspondiente a la configuración de PAM. que se corresponde con la encriptación requerida. En nuestro caso "/var/log/web-cyradm/". Sistema de correo con Postfix. en caso de duda. Si optamos por esta opción. El valor por defecto es 20000. que no tocaremos a no ser que fuera necesario.$DB = array( 'TYPE' => 'USER' => 'PASS' => 'PROTO' => 'HOST' => 'NAME' => ). cyrus y mysql con una interface de administración web con web-cyradm. 0:* LISTEN tcp 0 0 0. [root@server ~]# service mysqld status Se está ejecutando mysqld (pid 1822). Para continuar. las instrucciones a introducir): [root@server ~]# service postfix status Se está ejecutando master (pid 2065).0. [root@server ~]# service saslauthd status Se está ejecutando saslauthd (pid 2217 2215 2214 2213 2212).0.0.0. Para hacer esto.0. quedan como sigue: 993 995 3306 imap-ssl pop3-ssl MySQL 32 Sistema de correo con Postfix. todos los componentes esenciales para el funcionamiento correcto de un servidor de correo están instalados.0:25 0... Cyrus y MySQL .0.0. nos aseguraremos de que todos los servicios que nos interesan están a la escucha (del listado original.0. [root@server ~]# service cyrus-imapd status Se está ejecutando cyrus-master (pid 1946)..1:143 0.0.0. A pesar de todo.0:993 0. el comando service.0. Comprobando servicios Llegados a este punto del manual.0.0. [root@server ~]# service httpd status Se está ejecutando httpd (pid 25873 17834 17833 17832 15284 21796 21795 21794 21793 21792 21791 21790 21789 2124).0.0.0:* LISTEN tcp 0 0 :::993 :::* LISTEN tcp 0 0 :::995 :::* LISTEN tcp 0 0 :::110 :::* LISTEN tcp 0 0 :::80 :::* LISTEN tcp 0 0 :::2000 :::* LISTEN tcp 0 0 :::443 :::* LISTEN Los puertos. suponiendo que no se han cambiado las asignaciones por defecto de los mismos.0:3306 0.0:* LISTEN tcp 0 0 0.0:* LISTEN tcp 0 0 0.0. en Fedora Core. utilizaremos. comprobaremos el funcionamiento correcto de nuestro servidor de correo.. comprobaremos que cada uno de los servicios está corriendo.Probando la configuración Antes de continuar con la instalación de componentes adicionales..0:* LISTEN tcp 0 0 0.0.0:995 0.0...0... no está de más comprobar que la configuración de todos nuestros servidores funciona de forma adecuada.0.0. Mediante la herramienta telnet y un puñado de sencillos comandos.0. con el cual ejecutaremos las instrucciones que siguen a continuación (en negrita. sólo se muestran las líneas relativas a los servicios que nos interesan): [root@server ~]# netstat -an|grep LISTEN tcp 0 0 0.0. En el caso de que algún servicio estuviera caído.X .0:* LISTEN tcp 0 0 0..0.0.0.0:110 0. lo lanzaremos mediante la instrucción service <nombre del servicio> start.0.0:* LISTEN tcp 0 0 127.0.0:2000 0. Comprobando el canal de cifrado TLS La primera acción a realizar es la comprobación de la existencia del canal cifrado en nuestro servidor de correo: Sistema de correo con Postfix. crearemos un nombre de dominio nuevo y alguna cuenta. En caso de error. Tambien habremos de definir el servidor introducido como local en el fichero /etc/postfix/main. Escape character is '^]'. que nos ofrecerá información muy valiosa sobre todo el proceso de manipulación de correos.110 143 2000 25 80 443 pop3 imap sieve smtp http https Testeando Web-cyradm Conectaremos con el programa Web-cyradm mediante la cadena http://localhost/web-cyradm.mailserver. 220 mail.0. 250 Ok: queued as D78BD469F7B QUIT 221 Bye Connection closed by foreign host. Testeando postfix Para comprobar funcionamiento de postfix.com 250 Ok RCPT TO: [email protected] 250 Ok DATA 354 End data with <CR><LF>.com (127.0.com MAIL FROM: [email protected]. En caso contrario.0..<CR><LF> Mensaje de prueba para probar la configuración de postfix. .. Los dominios han de pertenecer a nuestro servidor. los comandos a introducir): [root@server ~]# telnet localhost 25 Trying 127. si hemos mantenido la configuración por defecto.mailserver. Acto seguido.1).cf (mydestination = domain). Haremos login mediante el uso de las credenciales que asignamos en el capítulo anterior.1. intetaremos la conexión al servicio de smtp e intentaremos mandar un e-mail (en negrita.com ESMTP Postfix (Fedora Core 5) helo localhost 250 mail. introduciremos la ruta asignada. Cyrus y MySQL 33 .0. es bastante recomendable tener abierta una consola con la salida del fichero /var/log/maillog. El correo habrá quedado enviado al buzón probe. Connected to mail. aunque podemos saltarnos el posible error validando el servidor en el fichero /etc/hosts. . mediante la herramienta saslpasswd2: saslpasswd2 -c cyrus Password: Again (for verification): Ahora probaremos la autenticación bajo cyradm: [root@server ~]# cyradm --user cyrus --server localhost --auth plain Password: IMAP Password: localhost> La primera contraseña se refiere a la contraseña introducida en la tabla sasldb2.1. Ya que Cyrus se autentica primero a través de SASL y después a través de IMAP.1). Esto lo haremos.[root@server ~]# telnet localhost 25 Trying 127.0. Connected to mail. antes de probar la configuración con las herramientas de Cyrus. se refiere a la de la tabla de MySQL accountusers. haremos unas pruebas que nos aseguren el correcto funcionamiento del servidor de IMAP.mailserver. La segunda contraseña. Ante cualquier complicación o error inesperado. probaremos la autenticación mediante TLS a través de nuestro cliente de correo.mailserver.12.0. Por último.mailserver. acudiremos al fichero /var/log/maillog y estudiaremos la salida. utilizaremos imtest. 220 mail. Cyrus y MySQL 34 .fc5 server ready Sistema de correo con Postfix. será necesario.0. asegurándonos de marcar la opción correspondiente cuando se nos pregunte acerca de si queremos o no usar un canal cifrado SSL: Probando Cyrus-Imap Para finalizar. una herramientamuy útil que nos devolverá información sobre el servidor de IMAP: [root@server ~]# imtest -m login -a <usuario> -s localhost -w <contraseña> verify error:num=20:unable to get local issuer certificate verify error:num=21:unable to verify the first certificate TLS connection established: TLSv1 with cipher AES256-SHA (256/256 bits) S: * OK mail.6. Escape character is '^]'. asegurarse de que el usuario cyrus está cargado en la base de datos sasldb2.mailserver.3.0. Acto seguido.com Cyrus IMAP4 v2.1-Invoca-RPM-2.com (127.. tal y como se vio en el capítulo dedicado a Cyrus.com ESMTP Postfix (Fedora Core 5) EHLO localhost 250-mail.3.com 250-PIPELINING 250-SIZE 20480000 250-ETRN 250-STARTTLS 250 8BITMIME STARTTLS 220 Ready to start TLS QUIT QUIT Connection closed by foreign host. Sistema de correo con Postfix. Saldremos de imtest mediante la pulsación de las teclas Control y C. Security strength factor: 256 C: Q01 LOGOUT Connection closed.C: C01 CAPABILITY S: * CAPABILITY IMAP4 IMAP4rev1 ACL RIGHTS=kxte QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE IDLE AUTH=PLAIN SASL-IR LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH S: C01 OK Completed C: L01 LOGIN probe {9} S: + go ahead C: <omitted> S: L01 OK User logged in Authenticated. Cyrus y MySQL 35 . if header :contains "Subject" "[SPAM]" { fileinto "INBOX. Al final de este extenso capítulo.sieve > ls prueba. a la instalación y la configuración de una interfaz que nos permita una generación de estos filtros mucho más amena. probaremos el filtrado con el envío de mensajes infectados y con cabeceras que simularán spam. stop. Es necesario para la activación de un script de Sieve que un comando sea ejecutado sobre el mismo servidor mediante la herramienta sieveshell. lenguaje con el cual compondremos filtros en la entrega final del correo. } elseif Sistema de correo con Postfix. Sieve. programa con el que filtraremos el correo no deseado y ClamAV. aunque sea de manera somera. Para tener una idea más clara de cuáles y para qué sirven estos comandos. entre otras cosas. Dicho ejemplo atiende a la cabecera de los mensajes para filtrar según el remitente o el asunto del mensaje: #Script de Sieve require ["fileinto". no llegando a la decena el número de comandos a nuestra disposición.ascii-numeric". Cyrus y MySQL 36 . en el siguiente capítulo atenderemos. potente antivirus que evitará la entrega de correo infectado.Spam"."regex". Como ejemplo de uso. siendo imprescindible que el script haya sido escrito y guardado en un archivo simple de texto. al uso de este lenguaje para la composición de filtros. } if header :contains "From" "proveedores.net" { fileinto "INBOX.sieve: $ sieveshell -user info -authname usuario001 localhost connecting to localhost Please enter your password: > put prueba."relational". "imapflags". adjuntaremos un ejemplo del uso del lenguaje utilizado por Sieve en los scripts de filtrado.).sieve <− active script > quit El uso de la consola de sieveshell es muy sencillo. El uso de Sieve Aunque la forma más sencilla de utilizar Sieve es mediante algún tipo de interfaz que nos facilite la tarea y componga el script por nosotros (de hecho. A continuación. vamos a atender a la activación de un script de ejemplo llamado prueba. SpamAssassin. "comparator-i. no está de más acercarnos."notify"]."vacation". La herramienta puede ser usada por cualquier usuario que pretenda filtrar o redirigir la entrega de correo."reject". ejecutaremos man sieveshell en la consola del sistema.XI – Filtrado Tres son las herramientas fundamentales que habremos de configurar para obtener un filtrado de los correos de nuestro servidor.sieve > activate prueba.Proveedores". Para ello. Para tener un elevado número de aciertos con el filtrado de spam. cargaremos SpamAssassin a través de Amavisd-new. y esto lo conseguiremos mediante el uso de la herramienta sa-learn (ejecutaremos man sa-learn para documentarnos adecuadamente acerca de este programa).header :contains "From" "proveedor01" { fileinto "INBOX. el riesgo de tener corriendo un servidor en un puerto siempre está sujeto a posibles vulnerabilidades por errores en el código. como la lectura de directorios por lotes. que hará de interfaz entre los programas y el servidor. } #Fin del script SpamAssassin Tanto SpamAssassin como ClamAV serán utilizados desde Postfix y a través de Amavisd-new. que llamará al programa mediante el módulo de Perl Mail::SpamAssassin. Con sa-learn --ham <directorio> haremos todo lo contrario: instruiremos al programa en la recolección de correo que no es spam. esto no es más que una recomendación. habremos de proporcionar a SpamAssassin un elevado número de mensajes. ClamAV Al igual que nos ocurría con SpamAssassin. utilizaremos los llamados filtros bayesianos. tanto de spam como de ham (no-spam). El principal inconveniente es relativo a la seguridad: aunque bajo. ya que las comunicaciones se establecen a través del puerto 783 y evitan el tener que cargar un ejecutable cada vez que se hagan las comprobaciones referentes al spam. Es necesario leerse las páginas del manual para ejecutar otras opciones. quedando a gusto del usuario su aplicación. Como SpamAssassin será llamado por Amavisd-new. como hemos dicho anteriormente. la ejecución de sa-learn preferiblemente tendrá que ser a través del usuario amavis. En un sistema con una distribución de Fedora Core. Sin embargo. hay que aclarar un punto que puede ser modificado a gusto del usuario y que optimizará el funcionamiento del programa: No es necesaria la ejecución del servidor spamd sobre nuestro sistema. la simple instalación del paquete RPM correspondiente a SpamAssassin dejará este programa completamente instalado y configurado para su uso. la configuración por defecto de ClamAV es más que suficiente para el filtrado de virus sobre el servidor. obteniendo una eficiencia similar a la de la ejecución de spamd. Básicamente. Este tipo de filtrado requiere un entrenamiento para que sea eficaz en un alto porcentaje de los casos. En un sistema con Fedora Core y para nuestros propósitos.amavisd se ejecuta correctamente al inicio del sistema. En nuestro caso. Ejecutaremos los comandos siguientes para conseguir nuestros propósitos: Sistema de correo con Postfix.Proveedor01". Con esto conseguiremos que el motor con las reglas siempre quede cargado en memoria. Cyrus y MySQL 37 . ejecutaremos salearn --spam <directorio> para la recolección de mensajes que sabemos a ciencia cierta son spam. tendremos que asegurarnos de que el demonio clamd. No obstante. por lo que evitaremos la misma mediante el siguiente comando: #chkconfig --del spamassassin La principal ventaja de spamd es su eficiencia. 0.dominio.?$'i. el usuario revisará el contenedor en busca de falsos positivos y borrará el resto. Sistema de correo con Postfix.conf y tiene alrededor de quinientas líneas.0. a través de un filtro con Sieve. etc.amavisd start De esta forma evitaremos el siguiente error registrado en /var/log/maillog: ClamAV-clamd av-scanner FAILED: Too many retries to talk to /var/spool/amavisd/clamd. Cyrus y MySQL 38 . Veamos ahora las líneas del fichero /etc/amavisd/amavisd. $MIN_EXPANSION_QUOTA = 100*1024. instruiremos a SpamAssassin mediante la opción forget de sa-learn. #Rechazamos ficheros adjuntos de los tipos siguientes $banned_filename_re = new_RE( qr'\.net'. $final_spam_destiny = D_PASS. $MAXFILES = 1500.1]:10025'.net'. $final_bad_header_destiny = D_PASS. $MAX_EXPANSION_QUOTA = 300*1024*1024.conf que hemos cambiado para adaptarlo a los propósitos de este manual: $mydomain = 'dominio. Amavisd-new El fichero de configuración de Amavisd-new se encuentra en la ruta /etc/amavisd/amavisd. #$warnbadhsender = 1. lugar donde. En caso de encontrarnos con falsos positivos. La configuración por defecto puede verse en /etc/cron. lo haremos desde el fichero /etc/freshclam. $forward_method = 'smtp:[127.0.sock (Can't connect to UNIX socket /var/spool/amavisd/clamd.conf. $myhostname = 'mail.amavisd on #service clamd.) y se deja llegar a su destino.0. La idea para el procesamiento de los correos es la siguiente: Un correo se marca como spam o como contenedor no deseado (virus. #El siguiente directorio tiene que pertenecer #al usuario amavis $QUARANTINEDIR = "/var/virusmails".sock El demonio freshclam-sleep. aunque no es recomendable. archivos exe. #Descomentar si se quieren enviar avisos al remitente #$warnbannedsender = 1. $final_virus_destiny = D_DISCARD./]*[A-Za-z][^./]*\. Si necesitamos realizar modificaciones a la configuración de freshclam. #$virus_quarantine_to = "virus−quarantine\@$mydomain".d/clamav-update. Para nuestros propósitos solamente será necesario cambiar una decena de ellas.#chkconfig clamd. #Sólo en caso de necesidad $notify_method = 'smtp:[127. será redirigido hacia un contenedor que alojará todos estos correos. $MAXLEVELS = 14.(exe|vbs|pif|scr|bat|cmd| com|cpl|dll)\. $final_banned_destiny = D_DISCARD. Periódicamente. #Adjuntamos una cabecera al spam $sa_spam_subject_tag = '[SPAM] '.[^.1]:10025'. incluido con el paquete clamav-update será el encargado de actualizar el antivirus mediante cron. #Se activa el reenvio a un directorio de los mensajes #infectados. Obviamente. ).0/8 -o strict_rfc821_envelopes=yes Sistema de correo con Postfix. qr'^application/x−msdownload$'i.n . banned_filename_re: Se rechazan los correos que contengan ficheros adjuntos con las extensiones mostradas. el fichero final dependerá de las necesidades de cada administrador. final_bad_header_destiny: Mediante D_DISCARD o D_PASS permitiremos que un correo detectado se descarte o siga su curso. siendo lo anterior un mero ejemplo que adapta unas necesidades concretas.n .(mim|b64|bhx|hqx|xxe|uu|uue)$'i.0. o o o o Cuando hagamos algún cambio al fichero de Amavisd-new.0.smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks.\. warnbannedsender. warnbadhsender: Se activa el envío de un mensaje de aviso al remitente si éste ha sido baneado o las cabeceras de su mensaje están mal formadas. qr'^\. final_banned_destiny. En principio. qr'. qr'^message/partial$'i.\. qr'.cf: # Amavisd-New filtrado smtp-amavis unix . sa_spam_subject_tag: Se añade un texto a la cabecera para su posterior filtrado mediante Sieve.1:10025 inet n .(ade|adp|bas|bat|chm|cmd|com|cpl|crt| exe|hlp|hta|inf|ins|isp|js| jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg| scr|sct|shs|shb|vb| vbe|vbs|wsc|wsf|wsh)$'ix. donde veremos los módulos cargados y los posibles errores. Modificaciones en Postfix En primer lugar. respectivamente. virus.d/amavisd restart y será bastante recomendable observar su carga en el fichero /var/log/maillog. spam_quarantine_to bad_header_quarantine_to: Se activa la cuarentena de los tipos detectados y se mandan al directorio especificado. Cyrus y MySQL 39 . qr'^application/x−msdos−program$'i.0.. final_virus_destiny.2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookup=yes 127. banned_quarantine_to.exe$'i.0. y sea enviado al directorio de cuarentena especificado.. Los mensajes descartados se guardarán con las etiquetas spam. añadiremos las líneas siguientes al fichero /etc/postfix/master. habremos de reiniciar el servicio con /etc/init.reject -o mynetworks=127. qr'^message/external−body$'i.qr'[{}]'. los cambios más importantes a realizar son los siguientes: o final_spam_destiny. banned o badh más un código de control. virus_quarantine_to. Cyrus y MySQL 40 . #reject_rbl_client relays. check_client_access pcre:/etc/postfix/client_checks.org. Filtrado de correo sobre Postfix (anti-UCE) Vamos a habilitar una serie de mecanismos sobre el servidor Postfix que nos permitirán filtrar usos abusivos o malintencionados del mismo. permit_sasl_authenticated. teniendo en cuenta que el orden de las instrucciones es siempre relevante: • La primera y segunda sentencias aseguran que el proceso de HELO/EHLO y el envoltorio del mensaje son correctos. que procesará el mensaje y lo redigirá hacia el puerto 10025. reiniciaremos Postfix con /etc/init.pcre. Una vez hechas las modificaciones. reject_unknown_recipient_domain. Para llevar a cabo nuestros propósitos. reject_unknown_sender_domain. reject_non_fqdn_hostname. check_recipient_access pcre:/etc/postfix/recipient_checks. check_sender_access hash:/etc/postfix/sender_checks. habremos de añadir varias líneas al fichero /etc/postfix/main. check_helo_access hash:/etc/postfix/helo_checks. check_client_access hash:/etc/postfix/client_checks. las restricciones aquí mencionadas deberán ser ajustadas a las necesidades de cada servidor de correo. reject_non_fqdn_recipient. Se deshabilita la verificación de las direcciones de correo. permit_mynetworks. permit Tal y como hicimos anteriormente con SpamAssassin.-o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 Y al fichero /etc/postfix/main.cf: smtpd_helo_required = yes disable_vrfy_command = yes smtpd_recipient_restrictions = reject_invalid_hostname. reject_non_fqdn_sender.d/postfix restart.pcre. Sistema de correo con Postfix.cf le añadiremos la siguiente línea: #Amavisd-New content_filter = smtp-amavis:[localhost]:10024 Con estas modificaciones haremos que Postfix redirija el tráfico hacia el puerto de loopback de Amavisd-new. Expliquemos con algo de detalle qué se pretende con las líneas adjuntadas. permit smtpd_data_restrictions = reject_unauth_pipelining. Intentaremos denegar el uso del servidor a todo aquello que creamos que no ha sido solicitado. reject_unauth_destination.ordb. donde hemos habilitado smtpd. El fichero /etc/postfix/recipient_checks.com 554 Spam not tolerated here [email protected]. En /etc/postfix/sender_checks se incluyen los remitentes a rechazar..com REJECT You are not in dominio. remitente (origen en el envoltorio) y cliente (servidor que envía)).*\@/ 550 This server disallows weird address syntax. Con permit_mynetworks se acepta cualquier cosa que haya pasado las restricciones de más arriba. que creará la base de datos Berkeley DB correspondiente. Un ejemplo válido sería el siguiente: # A compilar con postmap . será el siguiente: #Comprobaciones de HELO/EHLO liberaliatempus.com localhost REJECT You are not me :C Este y todos los ficheros de tipo hash. las listas blancas locales y las listas negras y blancas combinadas (comnprobación de HELO/EHLO. Comprobaremos entonces las listas negras locales. sin importar el destino. Permitimos a continuación a los clientes autenticados mediante SASL.. Veamos un ejemplo: # A compilar con postmap .pcre contendrá parámetros para revisar la sintaxis de las direcciones a filtrar. spammers. una vez escritos.16 OK Sistema de correo con Postfix.com :C webmail.com OK 172. cuyo cometido es comprobar que el comando HELO/EHLO no utilice ni nuestro dominio ni localhost al conectarse. Es necesario tener activado el soporte PCRE (Perl Compatible Regular Expressions) en Postfix para su correcto funcionemiento (por defecto en los sistemas con Fedora Core): # Soporte PCRE requerido en Postfix /^\@/ 550 Invalid address format. Con check_recipient_access comprobaremos ciertas direcciones de destinatarios antes de aplicar las listas negras locales. /[!%\@]. spammers.• • • • • • Seguidamente se deshabilitará la concatenación de comandos (reject_unauth_pipelining) para evitar ataques de diccionario por parte de spammers. Cyrus y MySQL 41 . /^postmaster\@/ OK /^hostmaster\@/ OK /^abuse\@/ OK El contenido de /etc/postfix/helo_checks.com REJECT You are not mail. serán compilados. rechazando a los que no se hayan autenticado.liberaliatempus.com OK morespammers.com 554 Spam not tolerated here 10 554 Go away! myfriendsdomain..org). con el comando postmap <fichero>.com REJECT El fichero /etc/postfix/client_checks contiene clientes no deseados. Con reject_rbl_client se especifican servidores de listas negras que añadiremos a nuestro gusto (como el especificado ordb. fc5) with LMTPA. Para empezar.pcre : # Soporte PCRE requerido en Postfix /10\. the Generic Test for Unsolicited Bulk Email If your spam filter supports it.8\.domain.1-2. mandaremos dos mensajes de correo: uno con spam y otro con el virus de muestra EICAR. si hemos dejado en la configuración de Amavisd-new la línea $final_spam_destiny = D_PASS. Comprobaciones finales Para comprobar el correcto funcionamiento de nuestros filtros de contenido.([89]|10)\. You can send yourself a test mail containing the following string of characters (in upper case and with no white spaces and line breaks): XJS*C4JDBQADN1.domain.3 Received: from localhost (pegasus. mandaremos.0.net.278 Sistema de correo con Postfix. reiniciaremos Postfix para aplicar cualquier cambio con /etc/init. se recibirá con el siguiente contenido en su cabecera (variando según los servidores y el gestor de correo utilizado): Return-Path: [email protected] Received: from murder ([unix socket]) by pegasus.net (Postfix) with ESMTP id 5656C469F7B for user001@mail. un mensaje que contendrá lo siguiente en el cuerpo del mismo (el asunto es de libre elección y el destinatario.9\.34X You should send this test mail from an account outside of your network.0.3. una cuenta del dominio): This is the GTUBE. Cyrus y MySQL 42 .net X-Spam-Flag: YES X-Spam-Score: 1005. Sun.domain.9\.net [127. preferiblemente desde una cuenta ajena a nuestro dominio. Sun. 26 Jun 2005 15:05:10 +0200 (CEST) X-Quarantine-ID: <dfa8PpZIr6jP> X-Virus-Scanned: amavisd-new at domain. We don't want any! Como hemos hecho hasta ahora. 26 Jun 2005 15:05:10 +0200 X-Sieve: CMU Sieve 2.1]) by mail.net (Cyrus v2. the GTUBE provides a test by which you can verify that the filter is installed correctly and is detecting incoming spam.\d+/ 554 Go away.1-Invoca-RPM-2.d/postfix restart.3.7/ OK /10\.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C. El correo.Lo mismo para /etc/postfix/client_checks. 246. size=3227.domain.plus.net.domain.941. mbx=/var/virusmails/virus-ijhiU5Tsb3nO Apr 30 18:28:15 pegasus postfix/qmgr[2070]: 9A958469FB3: from= [email protected] y adjuntaremos en un correo nuevo que se enviará a una cuenta de nuestro dominio.domain.domain.com (smtp109.yahoo.31 tests=[AWL=4.net Subject: [SPAM] Prueba de spam .9.net [127. Continuaremos con el envío de un archivo adjunto que contendrá la cadena de comprobación EICAR.net. GTUBE=1000. Para el correcto funcionamiento de esta prueba.278 al análisis (contra un valor requerido de 6.2900..2869 Observemos las líneas marcadas en azul. tiene un nivel de spam bastante largo (****) y se ha adjuntado la cabecera X-Spam-Flag: YES para orientar al gestor de correo sobre su naturaleza. se le ha dado un valor de 1005. una simulación de virus que probará la correcta configuración de ClamAV. En vez de eso. crearemos un archivo de texto plano con esta única línea en su interior: X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* Que guardaremos con el nombre probe_av. score=1005. 26 Jun 2005 13:05:04 0000 From: "Probe" [email protected] -> [email protected] -> [email protected] para ser considerado spam). HTML_MESSAGE=0. id=12544-05. from MTA([127. Atendamos al fichero /var/log/maillog para observar qué ha pasado cuando Amavisd-new ha terminado de procesar un mensaje con un virus en su interior: Apr 30 18:28:15 pegasus amavis[12544]: (12544-05) local delivery: <> > <virus-quarantine>.com [206. Sun. Cyrus y MySQL 43 .. quarantine: virus-ijhiU5Tsb3nO.0. Como hemos configurado Amavisd-new con $final_virus_destiny = D_DISCARD. donde se puede comprobar cómo se ha modificado el asunto del mensaje.6. 26 Jun 2005 15:05:07 +0200 (CEST) Received: from smtp109.net ([127.domain.net.re2.00.34]) by mail.mail. con el nombre virus-<cadenaID>. [88.1]) by localhost (pegasus.190.278 tagged_above=2 required=6. Sun. que.0 Ok.mail.2.134. será /var/virusmails.2900. Message-ID: Sistema de correo con Postfix.001] Received: from mail.HTML_50_60=0.X-Spam-Level: ************************************************************* X-Spam-Status: Yes. port 10024) with ESMTP id dfa8PpZIr6jP for [email protected]]:10025): 250 Ok: queued as 9A958469FB3 Apr 30 18:28:15 pegasus amavis[12544]: (12544-05) Blocked INFECTED (Eicar-Test-Signature). BAYES_50=0. el mensaje nunca llegará a su destino.001.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.1]) (amavisd-new.es To: user001@domain. X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6. 250 2. 26 Jun 2005 15:05:06 +0200 (CEST) Received: (qmail 92799 invoked from network).0.0. en nuestro caso. DNS_FROM_RFC_ABUSE=0.0.net. quedará guardado en la ruta del parámetro $QUARANTINEDIR.plus.net (Postfix) with SMTP id 8D0BD478F59 for [email protected]] [email protected]. nrcpt=1 (queue active) Apr 30 18:28:15 pegasus amavis[12544]: (12544-05) SEND via SMTP: [email protected]. 1].1 Ok. dejaremos que cada administrador haga las pruebas pertinentes o esperaremos al siguiente capítulo. Hits: -. status=sent (250 2.0. entre otras cosas.0.es X-Envelope-To: [email protected] X-Quarantine-ID: <ijhiU5Tsb3nO> X-Amavis-Alert: INFECTED.net[127. Cyrus y MySQL 44 . id=12544-05 . message contains virus: Eicar-Test-Signature Como la prueba del funcionamiento de Sieve es bastante personal y depende de los contenedores creados para cada usuario.domain. mail_id: ijhiU5Tsb3nO.domain.1] Apr 30 18:28:15 pegasus postfix/smtp[14137]: 63BCA469FA9: to= user001@mail. donde configuraremos Squirrelmail y.<001001c66c73$470b9ca0$6400a8c0@home001>.net. orig_to= user@domain. delay=3. el front-end avelsieve. 2351 ms Apr 30 18:28:15 pegasus postfix/smtpd[14141]: disconnect from pegasus.domain.7. relay=localhost[127.net. discarded.VIRUS: Eicar-Test-Signature) Apr 30 18:28:15 pegasus postfix/qmgr[2070]: 63BCA469FA9: removed Y observemos alguna /var/virusmails: de las cabeceras de ese mismo mensaje guardado en Return-Path: <> Delivered-To: virus-quarantine X-Envelope-From: [email protected]. Sistema de correo con Postfix. 4.XII – Squirrelmail Con el servidor de correo ya funcionando. Server Settings 3. gestionar su contraseña. General Options 5. Themes 6. La primera opción del menú principal se refiere a los datos de nuestra compañía y generelmente sirve para rellenar los datos de la página de bienvenida: Sistema de correo con Postfix. Address Books 7. vamos a repasar los puntos del menú que requieren alguna explicación. Languages D.php (1. preparar mensajes de auto respuesta y muchas otras cosas de utilidad. Ejecutaremos dicho script tecleando lo siguiente en nuestra consola: # /usr/share/squirrelmail/config/conf. Configuración de Squirrelmail La instalación por defecto del paquete de Squirrelmail queda bajo la ruta /usr/share/squirrelmail. atenderemos a la parte del frontend del usuario. Organization Preferences 2.0) --------------------------------------------------------Main Menu -1. tenemos a nuestra disposición un script escrito en Perl que nos facilitará enormemente la tarea. Cyrus y MySQL 45 . Todo ello bajo un entorno seguro con cifrado de la conexión. Y es ahí donde nos dirigiremos para comenzar con la configuración del programa. C S Q Set pre-defined settings for specific IMAP servers Turn color off Save data Quit Command >> A continuación. Se acompañará con la pantala de configuración por defecto para el funcionamiento del servidor de correo instalado a partir de las indicaciones de este manual. Database 10. Aunque podríamos modificar el fichero de configuración a mano. Ya sea porque no queremos usar un gestor de correo o bien porque necesitamos acceder al correo vía web. A través de este potente programa de webmail y además de poder acceder a todas las posibilidades del servidor de correo.pl Lo cual nos devolverá una interfaz de texto bastante intuitiva que se parecerá bastante a lo siguiente: SquirrelMail Configuration : Read: config. el usuario podrá construir filtros de Sieve de forma casi automática. la instalación de un programa como Squirrelmail que nos permita realizar las tareas más comunes se hace casi imprescindible. Plugins 9. Message of the Day (MOTD) 8. Folder Defaults 4. php (1. R C S Q Update IMAP Settings Update SMTP Settings Return to Main Menu Turn color off Save data Quit : servermail.Drafts 6.4. Default Sub.Trash 4.com $version 5. Provider link : http://www.Sent 5.servermail.0) --------------------------------------------------------Server Settings General ------1.com : false : SMTP : localhost:993 (cyrus) : localhost:25 Command >> El punto 3 se refiere a la configuración de las carpetas de correo. move to sent : true 8. Top Frame : _top 7. Show Special Folders Color : true 11.com 2. Default Folder Prefix : 2. El autor recomienda dejar la configuración como sigue: SquirrelMail Configuration : Read: config. Organization Title : Webmail de servermail. Trash Folder : INBOX. Cyrus y MySQL 46 .4. Auto Expunge : true 12. Invert Time 3.com R C S Q Return to Main Menu Turn color off Save data Quit Command >> El segundo punto se refiere a la configuración del servidor de correo: SquirrelMail Configuration : Read: config. of INBOX : true 13. Sent Folder : INBOX.com/LT. Drafts Folder : INBOX. Organization Logo : http://www.php (1. Signout Page : 6. By default. B.php (1. Show 'Contain Sub. Provider name : servermail. Logo Width/Height : (135/94) 4.com 8.SquirrelMail Configuration : Read: config.4.0) --------------------------------------------------------Folder Defaults 1. Sendmail or SMTP A. save as draft : true 9. By default.' Option : false Sistema de correo con Postfix. Show Folder Prefix Option : false 3. Domain 2. move to trash : true 7.servermail.gif 3. By default. Organization Name : servermail. Org. List Special Folders First : true 10.0) --------------------------------------------------------Organization Preferences 1. Para ello. Para terminar con la configuración. 18. según sea su estado. grabaremos los datos mediante la opción S y saldremos a la consola con la opción Q. lo cual nos dejará una pantalla similar a esta: Podemos terminar de probar la configuración de Squirrelmail mediante el añadido de /webmail/src/configtest. El resto de puntos se dejarán con su valor por defecto o. lo instalaremos o desinstalaremos. probaremos que Squirrelmail esté configurado de forma adecuada (el paquete por defecto deja instalada la extensión para apache. de momento. el punto 10 se adaptará a nuestras preferencias de idioma). Cyrus y MySQL 47 .14. 15. 16. Sistema de correo con Postfix. 17. Suponiendo lanzado el servidor de apache. los adaptaremos a nuestras necesidades concretas (por ejemplo. en su caso. lo cual realizará una conexión al servidor de correo y dará una información de estado del programa. teclearemos la dirección del servidor en el navegador seguida de /webmail. así que. no tenemos que modificar ningún fichero del servidor de web para lanzar Squirrelmail).php a la dirección del servidor. R C S Q Default Unseen Notify Default Unseen Type Auto Create Special Folders Folder Delete Bypasses Trash Enable /NoSelect folder fix Return to Main Menu Turn color off Save data Quit : : : : : 2 1 true false false Command >> El punto 8 nos va a servir para la instalación/desinstalación de los plugins que añadirán distintas funcionalidades a Squirrelmail. Tecleando el número correspondiente al plugin. Cualquier plugin para Squirrelmail se instalará bajo la rama /usr/share/squirrelmail/plugins/<nombre_del_plugin>. borrar la extensión . veremos como una nueva opción llamada Filtros se ha añadido al menú superior de nuestro gestor de mail..tar.sample. Si pulsamos sobre esta opción./avelsieve/config/config. ejecutaremos Squirrelmail desde nuestro navegador y. Cyrus y MySQL 48 .6. Sistema de correo con Postfix. Hecho esto.php.gz El programa creará un directorio llamado avelsieve con todos los ficheros necesarios para su ejecución. nos situaremos a la altura de /usr/share/squirrelmail/plugins y descomprimiremos el archivo tar: # tar xvzf avelsieve-1. posteriormente. Tendremos que cargar el plugin en Squirrelmail desde la opción correspondiente del programa de configuración y. tras validarnos como un usuario de correo. tendremos una pantalla parecida a esta: Pulsando sobre el botón "Añadir una nueva regla" entraremos al menú de edición de reglas.9.sample al fichero .Instalación y configuración de avelsieve Para instalar el plugin. es necesaria la descarga y aplicación del parche compatibility.6. con Acciones adicionales. etc. $csp_secure_port. Cyrus y MySQL 49 . $csp_non_standard_http_port. $csp_debug. $lookup_password_query. Esto es muy útil si no queremos tener que estar accediendo a web-cyradm constantemente o deseamos que el usuario cree su propia contraseña para cumplir con determinados requisitos legales. Instalación y configuración de change_sqlpass Con change_sqlpass permitiremos que un usuario de nuestro sistema de correo gestione su propia contraseña.El menú. por lo que descomprimiremos el archivo tar a la altura de /usr/share/squirrelmail/plugins: # tar xvzf change_sqlpass-3. $min_password_length. El campo Acción ejecutará la acción correspondiente si las reglas se cumplen. Por último. aplicaremos el parche de la forma siguiente: # patch -p0 < compatibility/patches/compatibility_patch-1.6.4. La instalación del plugin es similar al anterior. es muy intuitivo. como puede observarse en la imagen.4. que asegurará la compatibilidad de change_sqlpass con nuestra versión de Squirrelmail. Seguidamente. Sistema de correo con Postfix.php en el directorio /usr/share/squirrelmail/plugins/change_sqlpass. el archivo config. $password_update_queries. pulsaremos sobre el botón Añadir una nueva regla y la regla quedará añadida y habilitada.2. en este caso la 1. $csp_delimiter. En el apartado Condición introduciremos los campos sobre los que aplicaremos las distintas condiciones.tar Para el correcto funcionamiento de este plugin. tendremos la opción de seguir comprobando reglas sobre el mismo mensaje.3-1. almacenarlo. Una vez terminada la definición de la regla. Esto aplicará el parche y ya podremos crear nuestro archivo config. $csp_salt_query. $max_password_length. $include_digit_in_password. La instalación de este plugin empezará con la extracción del correspondiente archivo tar sobre /usr/share/squirrelmail/plugins de la misma forma que hicimos con change_sqlpass. $force_change_password_check_query. $csp_salt_static. El archivo diff a cargar debe de corresponderse con nuestra versión de Squirrelmail.diff Suponiendo que estamos situados en el directorio plugins de Squirrelmail.php quedaría como sigue: <?php global $csp_dsn. Podemos añadir tantos campos como sea necesario. $password_encryption. Para una configuración similar a la seguida por este manual. $include_lowercase_letter_in_password. $include_digit_in_password = 0. en el último capítulo de este manual. $lookup_password_query = 'SELECT count(*) FROM accountuser WHERE username = "%2" AND password = %4'. Con esta acción. Aquí hemos explicado la instalación de dos de ellos.sample. $csp_non_standard_http_port = 0. la verdadera potencia de Squirrelmail reside en la capacidad de adoptar plugins de terceros que añadirán casi cualquier tipo de funcionalidad a nuestro gestor webmail. tendremos. $include_nonalphanumeric_in_password. un link llamado Cambiar Contraseña. Tras introducir la contraseña anterior y la nueva. "$". $max_password_length = 0. 1) FROM accountuser WHERE username = "%2"'. como explicamos al principio de este capítulo. $include_uppercase_letter_in_password = 0. $csp_debug = 0. por si nuestra configuración difiere de la aquí mostrada. una vez en el interior de Squirrelmail y bajo el menú Opciones. Cyrus y MySQL 50 . el cambio de clave quedará realizado sobre la base de datos.org/) y rebuscar por el directorio de plugins a nuestra disposión. $include_nonalphanumeric_in_password = 0. nuestro sistema de correo queda configurado por completo y ofrece funcionalidad a los usuarios para poder acceder vía web. deberíamos abrir y leer las indicaciones que se dan en el fichero de ejemplo config.squirrelmail. $password_update_queries = array( 'UPDATE accountuser SET password = %4 WHERE username = "%2"'. Conclusión Como hemos visto. En él encontraremos casi cualquier cosa que permitirá adaptar el programa a nuestras necesidades.$include_uppercase_letter_in_password. $password_encryption = 'MYSQLENCRYPT'. veremos cómo añadir una nueva funcionalidad a nuestro sistema de correo: aprenderemos a crear un sistema de listas para dar soporte a los usuarios o crear plataformas de información que repartirán correo y comentarios a todo aquel que esté registrado y se una a dicha lista. $min_password_length = 6. pero es recomendable visitar la página oficial del proyecto (http://www. $csp_delimiter = '@'. añadiremos el plugin en el menú de configuración de Squirrelmail. Sistema de correo con Postfix. $csp_secure_port = 443. ?> Para una mejor comprensión de todos los parámetros. Sin embargo. $include_lowercase_letter_in_password = 0.php. $csp_dsn = 'mysql://useradmin:password@localhost/mail'. $csp_salt_static = ''. ). Con la puesta en funcionamiento de Squirrelmail. Una vez creado y guardado el archivo. $csp_salt_query = 'SELECT SUBSTRING_INDEX(password. $force_change_password_check_query = ''. de anuncios. Dicho fichero será automáticamente actualizado mediante los comandos newlist y rmlist. Por supuesto.liberaliatempus. que. Mailman está orientado a mantener las listas atendiendo a los suscriptores. sería conveniente añadir las líneas siguientes a dicho fichero.db (en distribuciones de Fedora Core 5. de soporte técnico. el mantenimiento de los mismos se hace relativamente sencillo y automatizado a la vez que se ofrecen opciones de privacidad ajustadas a cada necesidad. nos aseguraremos de que en el fichero /etc/aliases existe un alias para el usuario root que apunte a un usuario real de correo. aunque no imprescindibles.XIII . lo añadiremos de la forma siguiente: # echo -e root:usuario >> /etc/aliases Una vez hecho esto. Como vamos a tener que añadir lineas a este fichero y no nos interesa. por cuestiones de agilidad. Cyrus y MySQL 51 .Mailman Con el programa Mailman crearemos y administraremos listas de correo electrónico de casi cualquier tipo: de discusión general. usaremos un fichero de alias propio de Mailman. el primer paso antes de usarlo. aprenderemos a integrar Mailman en nuestro sistema de correo con Postfix.cf: alias_maps = hash:/etc/aliases hash:/etc/mailman/aliases Además. En las líneas que siguen. a los cuales tendremos que hacer refrencia en el fichero de configuración de Postfix /etc/postfix/main.com' DEFAULT_EMAIL_HOST = 'liberaliatempus. etc. de distribución. tendremos que indicar a Mailman que el MTA por defecto es Postfix y lo haremos añadiendo la línea siguiente al final del fichero de configuración /etc/mailman/mm_cfg. pudiendose generar en otros sistemas sobre /usr/lib/mailman/data/ u otras rutas). a la larga ayudarán a la gestión de Mailman: mailman_destination_recipient_limit = 1 unknown_local_recipient_reject_code = 550 owner_request_special = no Sistema de correo con Postfix.com' Postfix nos deja el parámetros alias_maps apuntando a /etc/aliases. Así. tener que estar ejecutando el comando newaliases de Postfix cada vez que lo retoquemos.py: MTA = 'Postfix' Tampoco es mala idea retocar un par de parámetros de este mismo fichero. para ajustar los envíos a las listas de forma correcta: DEFAULT_URL_HOST = 'www. Configuración inicial En primer lugar. Si no es así. será generarlo: [root@server ~]# cd /usr/lib/mailman [root@server mailman]# bin/genaliases Esto generará los ficheros /etc/mailman/aliases y /etc/mailman/aliases. que crearemos de la forma siguiente (seguimos sobre el directorio /usr/lib/mailman): [root@server mailman]# bin/newlist mailman Indique la dirección de correo de la persona que gestionará la lista: user@server. Ahora podemos iniciar el servicio de Mailman sin ningún contratiempo mediante el siguiente comando: [root@server mailman]# /etc/init.d/postfix reload Recargando postfix: [ OK ] El siguiente paso necesario para arrancar de forma correcta Mailman. Para finalizar. teniendo en cuenta que Postfix tardará un par de minutos en reconocer los nuevos ficheros de alias. Cyrus y MySQL 52 . recargaremos la configuración de Postfix: [root@server ~]# /etc/init. recibiremos en el e-mail introducido cuando ejecutamos el comando newlist. habrá que repasar los ficheros /var/log/maillog y /var/log/mailman/errors y encontrar el fallo.d/mailman start Iniciando mailman: [ OK ] Si todo ha ido bien. configuraremos el servicio de Mailman para su ejecución desde el inicio del sistema: [root@server ~]# chkconfig mailman on Configurar Apache En los sistemas con Fedora Core. Mediante la forma que hemos indicado.. Si no hubieramos configurado los alias como hemos indicado más arriba.. nos deja un fichero de configuración en la ruta /etc/httpd/conf. la salida del comando nos mostraría un listado con los alias necesarios a añadir en el fichero /etc/aliases. un correo de bienvenida a la nueva lista de correo. Ésta ha de ser necesariamente una lista llamada mailman. del cual habremos de quitar el comentario a la última línea para adaptar el dominio a nuestras necesidades: RedirectMatch ^/mailman[/]*$ http://[dominio]/mailman/listinfo Una vez realizado el cambio. a los cuales podemos echar un vistazo para observar las líneas que se han añadido. El resto de listas de correo se crearán mediante el comando newlist <nombre de la lista> y seguiremos los mismos pasos que seguimos durante la creación de la lista mailman.recipient_delimiter = + Realizados los cambios. Si algo no ha salido bien. la instalación del paquete que contiene el programa Mailman.liberaliatempus. será crear una primera lista de correo. reiniciaremos el demonio de Apache: Sistema de correo con Postfix. todos esos alias quedan registrados en los ficheros indicados.conf.com Clave inicial de mailman: Presione el retorno de carro para notificar al propietario de la lista mailman.d/mailman. la aparición de determinadas listas. Un buen punto para comenzar debería ser la página web de Mailman (http://www. Cyrus y MySQL 53 .list. Mailman ya estará instalado y los usuarios podrán acceder sin mayor problema a las diferentes listas que vayamos creando.d/httpd restart Parando httpd: [ OK ] Iniciando httpd: [ OK ] Ahora ya podemos acceder a las listas de correo. como la página principal. Para terminar Si hemos seguido los pasos de configuración de forma correcta. Si no especificamos lista.[root@anna mailman]# /etc/init. bien en modo administrador mediante http://dominio/mailman/admin/lista. la de registro. Sistema de correo con Postfix. Mailman devolverá un listado con todas las listas de corro accesibles. bien en modo usuario con http://dominio/mailman/lista. Como se puede uno imaginar. este trabajo ha de ser realizado por cada administrador y quedará a su discrección el realizarlos o no. Sin embargo. la traducción del programa. como hemos podido observar al acceder por primera vez al interface de Mailman. hay muchas cosas que pueden ser personalizadas. etc. que habitualmente estarán ubicados en la rama /usr/share/doc/mailman.org) y los manuales del programa. Apéndice Agradecimientos El autor de este manual quiere agradecer sinceramente el trabajo de las siguietes personas. www. 23-05-2005. Bibliografía • • • • • • Configuración de un completo servidor de correo seguro con Postfix y Cyrus.web-cyradm. Cyrus y MySQL 54 . de Jaume Sabater.org. 30-03-2004. www. Wietse Venema. Luc de Louw. escritor del artículo Postfix-Cyrus-Web-cyradm-HOWTO y programador de web-cyradm.XIV . creador y mantenedor del programa postfix. Postfix-Cyrus-Web-cyradm-HOWTO.postfix. de Luc de Louw. Sistema de correo con Postfix. The Web-cyradm Archives. • • • Jaume Sabater. sin el cual la redacción éste manual no hubiera sido posible.org.org. www.squirrelmail. escritor del artículo Configuración de un completo servidor de correo seguro con Postfix y Cyrus.
Copyright © 2024 DOKUMEN.SITE Inc.