Abr 082012
 
Artículo Postfix

(Read this post in english)

En un artículo anterior hemos visto como se realizaba la instalación del servidor de correo postfix.

En este vamos a comentar el proceso de instalación de postfixadmin, que permite la cómoda administración del servicio desde la ventana de un navegador.

En primer lugar, descargamos el paquete en formato .tgz desde sourceforge. En nuestro caso, el nombre del fichero descargado es ‘postfixadmin-2.3.5.tar.gz’

Una vez descargado, lo descomprimimos (como usuario root) en el directorio /usr/share, y creamos un enlace simbólico:

# cd /usr/share
# tar -xvzf ~/downloads/postfixadmin-2.3.5.tar.gz
# ln -s postfixadmin-2.3.5 postfixadmin

A continuación editamos el fichero de configuración /usr/share/postfixadmin/config.inc.php para indicar los detalles de nuestra instalación. En particular, debemos indicar el nombre de la base de datos mysql que crearemos en el siguiente paso, y el usuario y contraseña de acceso a la misma:

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'escribe-aqui-tu-password';
$CONF['database_name'] = 'postfix';

Ahora, creamos la base de datos utilizada por postfixadmin:

root@openalfa:/usr/share/postfixadmin# mysql -u root -p
Welcome to the MySQL monitor.  Commands end with ; or g.

mysql> create database postfix;
Query OK, 1 row affected (0.00 sec)

mysql> create user postfix@localhost identified by 'escribe-aqui-tu-password';
Query OK, 0 rows affected (0.07 sec)

mysql> grant all privileges on postfix.* to postfix;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
root@openalfa:/usr/share/postfixadmin#

A continuación incluimos en el fichero de configuración del servidor web la línea:

Alias /postfixadmin /usr/share/postfixadmin

y reiniciamos el servidor web. Después accedemos desde el navegador web a la url http://localhost/postfixadmin/setup.php:

PostAdmin setup screen

En esta pantalla, introducimos la clave de setup que indicamos previamente en el fichero de configuración ($CONF[‘setup_password’] ), y la direccion de email y clave de acceso del usuario administrador a crear.

Al enviar el formulario por primera vez, nos da un mensaje diciendo que la clave de setup no coincide, y nos presenta una ‘hashed password’ que debemos copiar. Editamos de nuevo el fichero de configuración y ponemos la hashed password como valor de la variable “$CONF[‘setup_password’]”.

Al enviar por segunda vez el formulario, nos indica que el proceso ha finalizado correctamente con el mensaje “Admin has been added!”

Una vez hecho esto, ya podemos ir a la url http://www.openalfa.com/postfixadmin/login.php para comenzar a administrar nuestro servidor de correo:

Pantalla de login de postfixadmin

Despues de introducir el email y clave de login, la pantalla principal de administración a la que llegamos tiene el siguiente aspecto:

Pagina principal de postfixadmin

Cómo configurar Postfix para que lea la base de datos mysql de Postfixadmin

Con los pasos que hemos dado hasta ahora ya podemos acceder a la administración de Postfixadmin para definir dominios virtuales de correo y usuarios de dichos dominios.

Pero Postfixadmin almacena esta información en la base de datos mysql que hemos creado, y todavía tenemos que configurar Postfix para que lea esta información de la base de datos.

Para ello, hay que crear (con tu editor preferido) cuatro ficheros en el directorio /etc/postfix.

1. /etc/postfix/mysql_virtual_alias_maps.cf:

user = postfix
password = escribe-aqui-tu-password
hosts = 127.0.0.1
dbname = postfix
table = alias
select_field = goto
where_field = address

2. /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = escribe-aqui-tu-password
hosts = 127.0.0.1
dbname = postfix
table = domain
select_field = domain
where_field = domain
#additional_conditions = and backupmx = '0' and active = '1'

3. /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = escribe-aqui-tu-password
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'

4. /etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = postfix
password = escribe-aqui-tu-password
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = quota
where_field = username
#additional_conditions = and active = '1'

Para asegurarse de que estos ficheros sólo pueden ser leidos por el usuario root y por el grupo postfix, ejecutamos:

# chgrp postfix /etc/postfix/mysql_*.cf
# chmod 640 /etc/postfix/mysql_*.cf

 

Crear un usuario vmail

Para no tener que crear un user ID para cada uno de los usuarios de correo que demos de alta, debemos crear un usuario unix “vmail”, que será el propietario de todos los ficheros pertenecientes a los usuario virtuales de correo:

$ groupadd -g 5000 vmail
$ useradd -m -g vmail -u 5000 -d /home/vmail -s /bin/bash vmail

A continuación editamos el fichero /etc/postfix/main.cf para indicarle a postfix que lea los ficheros creados, añadiendo las siguientes líneas:

# Configuracion de mailbox virtuales
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit = 51200000
virtual_minimum_uid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_transport = virtual

# Para configurar el uso de limites de disco ocupado por los buzones
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Lo sentimos, su buzon de correo esta lleno.
virtual_overquota_bounce = yes

Como vemos, hemos especificado que el usuario vmail (con UID 5000 y directorio de login /home/vmail) que hemos creado previamente sea asignado a todos los usuarios virtuales de los dominios virtuales que se creen.

 Publicado por en 6:27 pm

  14 Respuestas a “Cómo instalar Postfixadmin para administrar un servidor de correo Postfix”

  1. Hola colega muy buen tutorial,tengo una implementacion igual que la que publico, pero necesito aplicar cuotas por usuarios ,ya tengo implementadas las cuotas de almacenamiento a traves de un parche de postfix que se llama postfix-vda ,pero ahora necesito hacer cuotas por usuarios, pero como seguro sabe Postfixadmin solo tiene modulo de cuotas de almacenamientos :(,entonces quisiera saber como lograr esto………quizas se pregunta pk no aplique las cuotas atraves del LDA (Dovecot) yes que no logre configurarlo no entendia bien el funcionamiento de (dict) , y bueno si tiene la amnera d ecomo configurar las cuotas atraves de Dovecot bien explicado se lo agadeceria,es que queria lograr los mismo que hice con el postfix-vda decirle aun usuario tu cuota de almacenamiento es de 50 MB y a otro usuario tu cuota es de 20MB pero con el Dovecot no pude lograr esto……espero que me puedas ayudar colega llevo meses en esto y nadie a sabido decirme ,incluso el FLISOL de aqui de mi pais no pudieron darme ayuda :(, muy buen tutorial espero que sigas publicando cosas asi 🙂

  2. Hola muy bueno el tutorial, solo queria hacerte una pregunta a ver si puedes ayudarme. Cuando voy a crear el superadmin en el formulario ya hice el cambio del password cuando me dio el primer error, luego cuando vuelvo a poner los datos para continuar me da un nuevo error y es el siguiente: Administrador no es un e-mail valido. Ya probe con diferentes email desde admin, administrador y otras diferentes con el @dominio y con todos me continua diciendo lo mismo.

    Agradeceria mucho la ayuda que me puedas brindar.
    Saludos y muchas gracias

    • Hola zelze, gracias por tu comentario.
      Postfixadmin valida la sintaxis del email, que debe ser de la forma “usuario@dominio”, y también comprueba que el dominio sea válido en DNS. Por eso, “Administrador” no es un email válido, pero “Administrador@gmail.com” si lo es.
      “Administrador@gmail.co” (sin la ‘m’ al final) tampoco sería válido, porque “gmail.co” es un dominio inexistente en DNS.
      La función que valida el email en postfixadmin se llama “check_email” y está en el fichero “functions.inc.php” de la instalación de postfixadmin.
      Con un pequeño script php Puedes comprobar la validación que realiza postfixadmin:

      Un saludo

  3. Hola soy nuevo en linux me quede en donde dice continuación incluimos en el fichero de configuración del servidor web la línea:

    Alias /postfixadmin /usr/share/postfixadmin

    perdon por la ignorancia me estoy iniciando

    • Hola Maximo,
      El artículo da por supuesto que en el equipo en donde se ha instalado Postfix se encuentra también instalado un servidor web Apache, que es el que se utiliza para servir las páginas de PostfixAdmin.

      En un servidor Linux, los ficheros de configuración de Apache se encuentran normalmente bajo el directorio /etc/apache2.

      Puedes conseguir más información sobre apache en la web del proyecto:
      http://httpd.apache.org/

  4. Hola, agradeceria demasiado tu ayuda…

    Tengo en función un servidor Postifx y la configuracion es la siguiente:

    El sistema operativo, los archivos de configuracion están en un disco y todo el /home/vmail esta en otro.

    El punto es que el disco en el cual se estan almacenando todos los buzones esta presentando fallas, aparentemente el disco esta a punto de “morir”, lo que quiero realizar es conectar otro disco duro con las mismas caracteristicas y direccionar al postfix la lectura de los buzones, hasta ahora solo veo que se pone en esa ruta en el mail.cof en la linea virtual_mailbox_base = /home/vmail

    Es en el unico archivo de configuracion para poder mandar los buzones a otra ubicacion?
    O podrias recomendarme alguna otra opcion?

    Gracias y espero poder darme a entender.

    • Buenos días Gabriela,
      Lo que yo te recomendaría en este caso es montar el nuevo disco en el mismo punto de montaje que el antiguo, y así evitas tener que tocar ninguna configuración del servicio de correo.
      Si el antiguo disco esta montado en /home:
      – Montar el nuevo disco como /home_new
      – Copiar toda la informacion de /home a /home_new
      – Desmontar /home
      – Desmontar /home_new, y montar el nuevo disco como /home

      En caso contario, tienes que tener en cuenta que, además de Postfix, deberás editar la configuración de los servicios POP3 / IMAP / WebMail,… con los que los usuarios acceden a sus buzones.

  5. saludos.

    Tengo un servidor con iredmail y quisiera hacer un filtro para que los correos que lleguen a cualuier usuario con un asunto que empieze con una palabra en especifico se guarden automaticamente un una carpeta.

    ¿que me recomienda?

    de ante manos muchas gracias por su ayuda.

    • iRedMail es un paquete que implementa un servicio de correo completo, utilizando distintos elementos: servidor SMTP Postfix, servidor POP3/IMAP2 Dovecot, servidor webmail RoundCube, etc.

      En el caso que comentas, se puede establecer un filtro en el servidor webmail RoundCube, para enviar el correo a una carpeta distinta en función del asunto.
      Puedes consultar la documentación de RoundCube que explica el detalle de esta operación en:

      http://www.its.hku.hk/documentation/guide/email/rcwebmail#16

  6. Buen día.
    Con: Cómo configurar Postfix para que lea la base de datos mysql de Postfixadmin, es la configuración con la que se puede trabajar para que al crear un usuario en postfixadmin pueda accesar a roundcube, sin tener que agregar el usuario desde una terminal?
    muchas gracias!!!

    • Hola Diana,
      – Postfix es el servidor de correo propiamente dicho, que puede utilizar una configuración almacenada en una base de datos mysql.

      – Postfixadmin es un frontend para editar la configuración de Postfix almacenada en mysql, incluyendo el alta de usuarios y dominios, etc.

      – RoundCube es un cliente webmail IMAP que permite a los usuarios accesar a su correo desde un navegador.
      RoundCube es compatible con Postfix, por lo que un usuario creado con Postfixadmin puede utilizar RoundCube para administrar su correo.

      • Hola,
        En verdad agradesco su respuesta, claro he estado leyendo y lo que pasa es que la parte de la administraciòn de usuarios a través de postfixadmin se ha complicado, lo que he entendido es que hay que configurar parte de postfix y a través de este se pueda realizar la configuración de mysql.
        En general, la instalación de postfixadmin esta lista, solo no śe por donde trabajar para que al crear un usuario (desde postfixadmin) este pueda ingresar a roundcube.

        • Hola Diana,
          RoundCube es simplemente un cliente IMAP, que no guarda información de contraseñas. En la base de datos de roundcube hay una tabla ‘users’, pero los registros en esta tabla se crean automáticamente cuando un usuario se valida con éxito por primera vez.
          Roundcube se conecta a un servidor IMAP (normalmente el servidor IMAP en una instalación Postfix es Dovecot), que realiza la validación del usuario, y le da acceso a sus buzones:
          RoundCube -> Dovecot -> Postfix.
          Lo que hay que asegurar es que Dovecot utiliza la base de datos de usuarios de Postfix, para lo cual hay que editar la configuración de Dovecot (en un sistema Linux, está en /etc/dovecot).
          Seguramente, deberás revisar los ficheros conf.d/10-auth.conf y dovecot-sql.conf.ext para ello.

 Deja un comentario

(requerido)

(requerido)