Welcome to the Slackware Documentation Project

Base de datos del servidor de correo virtual

Esta página es complementaria al artículo principal:Creando un servidor de correo virtual con Postfix, Dovecot y MySQL

La base de datos se utiliza para proporcionar configuración y autenticación para sus dominios de correo virtual y buzones de correo. El contenido del correo electrónico no se almacena en la base de datos en esta configuración.

Si tiene una instalación completa de Slackware con MySQL ya funcionando, puede pasar a la siguiente sección.

Si necesita instalar MySQL (MariaDB), tome el paquete y el archivo de archivo de un repositorio, verifíquelo y luego instálelo:

# For 32 bit package #
wget http://slackware.osuosl.org/slackware-14.1/patches/packages/mariadb-5.5.40-i486-2_slack14.1.txz
wget http://slackware.osuosl.org/slackware-14.1/patches/packages/mariadb-5.5.40-i486-2_slack14.1.txz.asc
# For 64 bit package #
wget http://slackware.osuosl.org/slackware64-14.1/patches/packages/mariadb-5.5.40-x86_64-2_slack14.1.txz
wget http://slackware.osuosl.org/slackware64-14.1/patches/packages/mariadb-5.5.40-x86_64-2_slack14.1.txz.asc
gpg --verify mariadb-5.5.40...txz.asc {path to your downloaded package sigfile}
installpkg mariadb-5.5.40...txz
Si instala en un VPS de Linode.com, es posible que también deba instalar el paquete libaio para su versión de Slackware.

A continuación, deberá inicializar el servidor de base de datos e iniciarlo. Siga las instrucciones que se encuentran en los comentarios principales del script de inicio, /etc/rc.d/rc.mysqld. Aquí hay un breve resumen …

mysql_install_db --user=mysql
...
chmod +x /etc/rc.d/rc.mysqld
/etc/rc.d/rc.mysqld start
...
mysql_secure_installation

Creación de usuario de base de datos de correo y base de datos

Su servidor de base de datos ahora debería estar ejecutándose y tener una contraseña de usuario de mysql establecida.

Luego, debemos crear una base de datos y un usuario para acceder a ella en nombre de nuestro servidor de correo.

Usaremos los nombres altamente originales mailserver para nuestra base de datos, y mailuser para nuestro usuario.

Puede crear fácilmente ambos, como root (proporcione la contraseña de usuario de mysql de root cuando se le solicite):

mysql -p -e "CREATE DATABASE mailserver"
mysql -p -e "GRANT ALL ON mailserver.* TO mailuser@localhost IDENTIFIED BY 'your-password'"

Recuerde la contraseña del usuario de correo para cuando configuremos postfix y dovecot más tarde.

Creando tablas de bases de datos de correo

Ni Postfix ni Dovecot imponen restricciones en las estructuras de datos que debe usar para admitir las funciones de correo virtual. Sus únicos requisitos son que debe proporcionar un conjunto de consultas que devuelven campos específicos según sea necesario.

Esto le brinda total flexibilidad para integrar su sistema de correo en cualquier entorno operativo arbitrario. También significa que no hay una estructura de base de datos predeterminada, por lo que debemos proporcionarla nosotros mismos.

Crearemos solo un esquema de base de datos mínimo, suficiente para que el sistema funcione. Si necesita servir varios dominios o muchos usuarios virtuales, probablemente querrá ampliarlo agregando otras columnas o tablas que satisfagan sus necesidades específicas.

La figura 2 a continuación, muestra el esquema de nuestra base de datos de correo virtual.

  • virtual_domains - Contiene una entrada para cada nombre de dominio servido por correo electrónico virtual
  • virtual_users: contiene una entrada para cada buzón de correo virtual servido
  • virtual_aliases: asigna alias (origen) a los buzones de correo reales (destino)

para crear estas tablas, escriba

mysql --user="mailuser" -p -e "CREATE TABLE virtual_domains( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY ( id ) );" mailserver

mysql --user="mailuser" -p -e "CREATE TABLE virtual_users( id INT NOT NULL AUTO_INCREMENT, domain_id INT NOT NULL , password VARCHAR(106) NOT NULL, email VARCHAR(100) NOT NULL, PRIMARY KEY ( id ) ,FOREIGN KEY (domain_id) REFERENCES virtual_domains(id));" mailserver

mysql --user="mailuser" -p -e "CREATE TABLE virtual_aliases( id INT NOT NULL AUTO_INCREMENT, domain_id INT NOT NULL, source VARCHAR(100) NOT NULL, destination VARCHAR(100) NOT NULL, PRIMARY KEY ( id ),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) );" mailserver

Cada vez que ingrese la contraseña que tiene para el usuario msoluser de mysql.

Adición de entradas de dominio

Para agregar entradas a la tabla virtual_domains usando el cliente mysql:

mysql -p mailserver
mysql> INSERT INTO virtual_domains SET id=NULL, name='my-domain.com';
quit

Esta tabla debe incluir entradas para cada dominio dado por su servidor de correo virtual.

Debes agregar al menos las siguientes filas:

  • El nombre de dominio - my-domain.com
  • El nombre de host - darkstar
  • El FQDN del host - darkstar.my-domain.com
  • La variante localhost.domain - localhost.my-domain.com

Para ver las filas actuales en esta tabla usando el cliente mysql:

mysql> SELECT * FROM virtual_domains;
+----+-------------------------+
| id | name                    |
+----+-------------------------+
|  1 | my-domain.com           |
|  2 | darkstar                |
|  3 | darkstar.my-domain.com  |
|  4 | localhost.my-domain.com |
+----+-------------------------+

Tenga en cuenta el valor de identificación generado automáticamente para el propio dominio, my-domain.com, que se utilizará cuando ingresemos a los buzones de correo de usuario y alias de buzón de correo.

Adición de entradas de buzón de correo de usuario

Para agregar entradas para cada casilla de correo, necesitará el ID de dominio del paso anterior para el nombre de dominio correspondiente.

No almacenamos las contraseñas de usuario como texto sin formato en la base de datos, en lugar de eso, generaremos un hash SHA512 de las contraseñas, que usa dovecot para la autenticación.

Para insertar un buzón de usuario virtual desde el cliente mysql, sustituya el ID de dominio, la contraseña real y el correo electrónico en la siguiente consulta:

mysql> INSERT INTO virtual_users SET
id=NULL,
domain_id=1,
password=ENCRYPT('user-password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))),
email='me@my-domain.com';

Para ver los buzones de correo actualmente asignados para un dominio (con la columna de contraseña suprimida):

mysql> SELECT U.id, domain_id, email FROM virtual_domains D
JOIN virtual_users U ON(U.domain_id=D.id) WHERE name='my-domain.com';
+----+-----------+-------------------+
| id | domain_id | email             |
+----+-----------+-------------------+
|  1 |         1 | me@my-domain.com  |
|  2 |         1 | you@my-domain.com |
|  3 |         1 | us@my-domain.com  |
+----+-----------+-------------------+

Para restablecer la contraseña de un usuario de correo electrónico, sustituya la nueva contraseña y los valores de correo electrónico en esta consulta:

mysql> UPDATE virtual_users SET
password=ENCRYPT('new-password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16)))
WHERE email='me@my-domain.com';

Adición de entradas de alias de buzón

Para agregar entradas para cada alias de buzón de correo, necesitará nuevamente el ID de dominio correspondiente al nombre de dominio del alias.

Para insertar un alias de buzón virtual utilizando el cliente mysql:

mysql> INSERT INTO virtual_aliases SET
id=NULL,
domain_id=1,
source='alias@my-domain.com',
destination='you@my-domain.com';

En el ejemplo dado, el correo enviado a alias@my-domain.com será aceptado y entregado a you@my-domain.com.

Para ver los alias actuales en la base de datos:

mysql> SELECT A.id, domain_id, source, destination FROM virtual_domains D 
JOIN virtual_aliases A ON(A.domain_id=D.id) WHERE name='my-domain.com';
+----+-----------+---------------------+-------------------+
| id | domain_id | source              | destination       |
+----+-----------+---------------------+-------------------+
|  1 |         1 | alias@my-domain.com | you@my-domain.com |
+----+-----------+---------------------+-------------------+

Continúe e ingrese algunos usuarios virtuales de correo electrónico, y tal vez uno o dos alias, para que tenga cuentas de trabajo para probar después de configurar postfix y dovecot.

Para solucionar problemas, use las consultas que se muestran arriba para verificar los dominios, usuarios de correo electrónico y alias en la base de datos en cualquier momento y para restablecer las contraseñas de los usuarios virtuales. Volver a la página principal del artículo

Fuentes


En otros idiomas
Traducciones de esta página?:
QR Code
QR Code es:howtos:network_services:postfix_dovecot_mysql:database (generated for current page)