Instalación de un servidor de correo en UBUNTU 6.10
Instalación de un servidor de correo en UBUNTU 6.10
Software a Utilizar:
Database Server: MySQL 5.0
Mail Server: Postfix
DNS Server: BIND9
POP3/IMAP: Courier-POP3/Courier-IMAP.
Requerimientos
Ubuntu 6.10 Server installation CD
(http://www.ubuntu.com/download - http://ftp.cw.net/pub/linux/ftp.ubuntu.com/releases/6.10/ubuntu-6.10-server-i386.iso)
Instalación de softaware requerido
Ahora instalmos paquetes que vamos a necesitar posteriormente, corremos
apt-get install binutils cpp cpp-4.0 fetchmail flex gcc gcc-4.0 libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev linux-kernel-headers lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev
DNS Server
Correr
apt-get install bind9
Editamos el archivo /etc/default/bind9.
vi /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named" # Set RESOLVCONF=no to not run resolvconf RESOLVCONF=yes |
Iniciamos BIND, y revisamos /var/log/syslog en busca de errores:
/etc/init.d/bind9 start
Configurando Postfix | ||
Postfix 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: virtual unix - n n - - virtual 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 MySQL | ||
Hemos 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 Courier | ||
Nos 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. |
|
|
Conclusiones | ||
Con 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. |
Comentarios