| Login | Tour | Inicio | Chat | Descargas | Wallpapers | Páginas recientes | FAQ | | ||
Custom Search
![]() Darwin no perdió la fe por desarrollar la teoría d blacksoul El Dalai Lama dice: vendaval Religión, fanatísmo o Terrorismo? blacksoul Dani people's vaio chilicuil Una Canción Triste vendaval ¡Lo hemos conseguido! der_teufel Log continuacion del curso de BD.. rnstux F.A.Q. del borracho mandrake Logotipo de Apple mandrake Hola mundo en 366 lenguajes de programación mandrake Continuación del Curso de DB rnstux Primer Curso de BD en IRC rnstux FreeBSD hacking (Kernel Modules Programming) vendaval Powered by Blender! rnstux Seguimiento de Cuba... vendaval ZFS - A Smashing Hit asarch Libro de Servidores GNU/LINUX Licencia CC vendaval Screencast aarkerio Manda al diablo a Telcel asarch Nokia liberará a Symbian asarch ![]() GNU/Linux ![]() Hacktivismo ![]() Debian ![]() NetBSD ![]() WWW ![]() Guia Linux ![]() Server Side ![]() Ofimatica ![]() Despabilando... ![]() Mundo Maya ![]() Literatura ![]() Agora ![]() Psicologia ![]() Economia ![]() Ambientalismo ![]() Desarrollo Biologia ![]() |
Server Side \ Postfix, Courier y MySQL Este artículo ha sido consultado en 722 ocasiones. Alvaro Marín Illera alvaro at rigel.deusto.es
5 de Abril del 2002 Instalación y configuración de Postfix, Courier y MySQL para operar juntos y conseguir un completo servidor de correo (SMTP e IMAP) con usuarios "virtuales" en una Base de Datos. IntroducciónDesde hace tiempo uso Postfix para el envío de correos con el fin de depender lo menos posible de otros servidores, que daban más de un problema (autentificación, caídas...). Por ejemplo, cuando algún amigo nuestro nos quiere enviar un mail, se conecta al servidor de correo de terra (mailhost.terra.es) y mediante el protocolo SMTP, manda los comandos necesarios para que coja su mensaje. Posteriormente, mailhost.terra.es se conecta con rigel.deusto.es y le entrega dicho mail, con lo que éste lo guarda en el buzón del usuario al que iba dirigido el mensaje. Si bajamos al aula de correo de la Universidad, mediante el protocolo pop3 nos comunicamos con rigel.deusto.es para que nos devuelva los mensajes que hay en nuestro buzón y así recibir el mensaje que nuestro amigo nos había enviado. Otro protocolo para poder "ver" los mensajes que tenemos en nuestro servidor, es IMAP (Internet Message Access Protocol), el cual es mucho más potente que el pop3 anteriormente citado. Permite entre otras muchas cosas, acceder a los mensajes del servidor como si fueran locales, creación de carpetas en el buzón del servidor, buzones accesibles por varias personas... He elegido courier-imap para implementarlo y poder ver así, toda su potencia :) Por último, pero no por ello menos importante, ante cuestiones del estilo de "cómo se podría hacer para tener usuarios solo para el correo?", "cómo podría gestionar los usuarios del correo sin tener un /etc/passwd de 5000 líneas?"... decidí introducir también en la pareja postfix-courier, MySQL para tener una Base de Datos en la que se podrían ir guardando los usuarios "virtuales" (ya que no van a existir en el sistema y por tanto en /etc/passwd) de correo electrónico. Como resumen a esta pequeña introducción, tenemos que Postfix se encargará de las labores de MTA, Courier de dar servicio IMAP y MySQL de almacenar los usuarios "virtuales". Todo esto ha sido implementado sobre GNU/Linux Debian Woody en un Pentium75 con 32MB de RAM. Todos los comentarios de instalación y configuración los haré en base a esto, así que os instalais Debian (qué mejor disculpa que esta, no? ;P) o le dais a google y rpm como loc@s. :) Configurando PostfixPostfix es muy sencillo de ponerlo a andar. Con la configuración que viene por defecto (si no recuerdo mal), ya es capaz de enviar mensajes. Para instalarlo en Woody, basta con:
También vamos a instalar el soporte que tiene postfix para mysql:
Para l@s que no usen debian, este soporte hay que darselo recompilando postfix con las opciones necesarias de la forma que muestro a continuación:
Sustituyendo /usr/local por la ruta donde tengais dichos archivos en vuestra máquina. A continuación copiamos el archivo virtual del src de postfix al directorio de éste:
Una vez instalado, vamos a /etc/postfix y con vuestro editor favorito, abrimos el archivo principal de configuración llamado main.cf, el cual está estupendamente comentado. Además, existen en Internet numerosos y muy buenos documentos sobre cómo configurar postfix desde cero. Os pego a continuación el mío para que podais ir comparando y comento solamente los cambios importantes:
La siguiente opción nos permite elegir en qué tipo de "formato" postfix va a guardar los mensajes en el buzón de cada usuario. Si elegimos Mailbox, los mensajes se guardan en un único archivo en el que se van encolando los mensajes según van llegando al buzón. El formato Maildir, consiste en un directorio en el que hay tres subdirectorios en el que se van guardando los mensajes en diferentes archivos. Courier-IMAP necesita de esto, por lo que este es el que elegimos (nótese la "/" final):
Es a partir de aquí donde cambia un poco la cosa. Vamos a ir comentando línea por línea: Este parámetro, es lo que se le va a poner delante de un valor que tendremos en la BD para conseguir llegar hasta el lugar donde se guarda el buzón del usuario. Vamos a dejarlo con "/" Señalamos a postfix que los UserIDs y GroupIDs de los usuarios de correo los obtendrá por medio del archivo indicado, que accederá a MySQL A continuación indicamos que mediante el archivo mysql_virt.cf vamos a acceder a MySQL para ver dónde están los buzones de los usuarios:
Pasamos a continuación a mostrar el contenido de los ficheros antes referenciados en el main.cf llamados mysql_virt.cf, ids.cf y gids.cf. Todos ellos hacen referencia a una Base de Datos implementada en MySQL, que más adelante detallaremos. En este ejemplo, tanto postfix como MySQL está en la misma máquina, por ello el primero se conectará a la base de datos por medio de los sockets internos de unix/linux. Para ello ponemos el parametro hosts con el valor unix:mysqld.sock. Si estuviesen en máquinas distintas, habría que poner el nombre de la máquina en la que se encuentra MySQL.
mysql_virt.cf
ids.cf
gid.cf
También debemos modificar el archivo master.cf, añadiendo la línea: Antes de que se nos olvide, debemos de cambiar también el archivo /etc/login.defs , descomentando la línea "QMAIL_DIR Mailidir" para indicar, que todos los usuarios que hagan login en nuestro sistema, usarán también el formato Maildir. Debemos de comentar las 2 que aparezcan a su lado, lógicamente. Configurando MySQLHemos visto como Postfix va a hacer uso de MySQL. Vamos pues a instalarlo y configurarlo: # apt-get install mysql-server No hay que tocar nada reseñable en la configuración del MySQL. Únicamente, si el servidor va a estar en otra máquina distinta a la máquina donde está postfix, tendremos que abrir un puerto para que pueda "escuchar". Por defecto, esto no es así debido a temas de seguridad. Para hacerlo, basta con comentar la línea skip-networking del fichero /etc/mysql/my.cfg y rearrancar el servidor. Bien, una vez que lo tenemos instalado, vamos a crear la Base de Datos y la tabla necesaria para guardar toda la información de. Voy a mostrar cómo hacerlo paso por paso:
#Vemos cómo ha quedado la tabla recién creada: +---------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+------------------+------+-----+---------+-------+ | id | char(128) | | MUL | | | | clear | char(128) | | | | | | name | char(128) | | | | | | uid | int(10) unsigned | | | | | | gid | int(10) unsigned | | | | | | home | char(255) | | | | | | maildir | char(255) | | | | | +---------+------------------+------+-----+---------+-------+
### NOTA: para cambiar la password root, basta con hacer lo siguiente: Bien, vamos a explicar todo esto un poco más despacio. Vemos que en la tabla hemos creado una serie de campos, entre ellos id que será el mail del usuario, clear que es su contraseña para autentificarse (puede cifrarse añadiendola de la forma password("contraseña")), uid que es el UserID y al que podemos ir asignándole números secuencialmente (para ello mirar antes /etc/passwd para ver a partir de cuál no está "ocupado"), el gid que en mi caso lo he puesto a 8 y que corresponde con el grupo de "mail" (lo he hecho así para que el usuario pueda escribir en el directorio /var/spool/mail que tiene como grupo propietario a "mail"), home que por ser usuarios "virtuales" lo dejamos a "/" mismo y el maildir o lugar donde se guardará el Maildir del usuario en cuestión. A esta ruta se le añade por delante el valor que habíamos puesto en /etc/postfix/main.cf como virtual_mailbox_base y que era "/". Se puede jugar combinando ambas, pero de esta forma aseguramos la ruta. Vamos a hacer una pequeña modificación al script de arranque de MySQL, que se situa en /etc/init.d/mysql.
Esto es debido a que el proceso smtpd de Postfix corre en una "jaula" o chroot y no puede acceder al socket, por ellocreamos el enlace. Configurando CourierNos disponemos a configurar a continuación Courier. En sí, este programa es también un MTA, pero como hemos dicho, para esta función ya tenemos a Postfix. Vamos a usar solamente el courier-imap (también tiene courier-pop), para lo que hacemos:
Con lo que se nos instalará la aplicación y el demonio de autentificación, la autentificación por MySQL... Los archivos de configuración, están situados en /etc/courier/ por lo que debemos dirigirnos allí. Lo primero que debemos de cambiar es el modo de autentificación de los usuarios al usar IMAP. Para ello, editamos el archivo authdaemonrc y sustituimos la línea authmodulelist="authpam" por authmodulelist="authmysql", por lo que a partir de ahora, ya no se utilizará el módulo PAM, sino MySQL. Lógicamente hay que indicar a courier dónde debe mirar los usernames y passwords; para ello tenemos el archivo authmysqlrc, que queda de la siguiente forma:
En el archivo imapd, tan solo hay que cambiar la última entrada y ponerla a YES (IMAPDSTART), que por defecto viene a NO. Poniendo en marcha todo esto
Debemos asegurarnos que todos los demonios necesarios están corriendo en la máquina: courier-authdaemon,
courier-imap, postfix y mysqld. Desde un cliente que soporte IMAP, podemos probar también que se leen bien los mensajes. Al autentificarse, el nombre de usuario, será el id de la tabla passwd de la Base de Datos y la contraseña será el campo clear. ConclusionesCon todo esto, en teoría ya deberías poder estar usando Postfix con MySQL y Courier, pero seguramente te encontrarás con más de un problema. Para poder solucionarlos, hay que estar continuamente mirando los logs para ver cuál puede ser la causa. En /var/log/mail.log aparece bastante información cada vez que se manda un mail y puede ayudar bastante.
A modo de resumen, podemos decir que el proceso es el siguiente: Todo el tema de usuarios puede ser gestionado fácilmente mediante shell script o por PHP accediendo directamente a la Base de Datos, pudiendo añadir, eliminar, modificar...Lógicamente, a la tabla de usuarios se la puede añadir más campos de información sobre el usuario. Postfix, Courier y MySQL: ¿hasta dónde quiere llegar hoy? ;) Links
Mysql www.mysql.com PD: gracias a pep-e del canal #debian-es de irc.freenode.net, por enviarme el mail escrito por Diego Berrueta en la lista de "debian-user-spanish" que comentaba el tema del chroot :) Este documento ha sido escrito por un miembro de e-GHOST, y su contenido es libre de ser reproducido en otros medios bajo las condiciones de la Licencia FDL (GNU Free Documentation License). Última actualización: 2007-04-29 10:56:58-05 |
![]() Leyendo sobre servidores gnu/linux 49 minutes ago Comprendiendo el proceso de instalacion del ArchLinux con QEMU en NetBSD... 5 hours, 51 minutes ago Reviviendo mi primer compu (Celeron 400 Mhz)con NetBSD 4.0 7 hours, 44 minutes ago bambi, bambi, te espero 11 hours, 16 minutes ago ayer lo baje y estuve jugando el wesnoth, deja le agarro la onda y vemos 13 hours, 37 minutes ago entonces que pedo, quien se rifa la reta de wesnoth conmigo? 1 day, 1 hour ago Que estuvimos haciendo >> 13590 lecturas Anticoncepción de Emergencia 11352 lecturas Sexualidad infantil y juvenil 11018 lecturas Rompiendo cualquier clave WEP en unos pocos minutos 8575 lecturas Sinapsis y exocitosis 8035 lecturas Mi primer CakePHP, mmmmm cakeee 6283 lecturas Evolución filética en las hepáticas 5891 lecturas BASH y Primeros Comandos 4854 lecturas CakePHP II Active Record 4613 lecturas Cómo convertirse en hacker 4209 lecturas
|
| ||
| Los niños son fuertes, puede resistirlo todo, hasta la educación privada. A. Riviereé | ||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: | ||