[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

¡Esta es una revisión vieja del documento!


En proceso de traducción. Victor

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.

Adding Domain Entries

To add entries to the virtual_domains table using the mysql client:

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

This table must include entries for each domain served by your virtual mail server.

You should add at least the following rows:

  • The domain name - my-domain.com
  • The hostname - darkstar
  • The FQDN of the host - darkstar.my-domain.com
  • The localhost.domain variant - localhost.my-domain.com

To see the current rows in this table using the mysql client:

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

Note the automatically generated id value for the domain itself, my-domain.com, it will be used when we enter user mail boxes and mail box aliases.

Adding User Mail Box Entries

To add entries for each mail box, you will need the domain id from the previous step for the corresponding domain name.

We do not store the user passwords as plain text in the database, instead we will generate an SHA512 hash of the passwords, used by dovecot for authentication.

To insert a virtual user mailbox from the mysql client, substitute the domain id, actual password and email into the following query:

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';

To see currently assigned mail boxes for a domain (with password column suppressed):

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  |
+----+-----------+-------------------+

To reset the password for an email user, substitute the new password and email values into this query:

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

Adding Mail Box Alias Entries

To add entries for each mail box alias, you will again need the domain id corresponding to the domain name of the alias.

To insert a virtual mailbox alias using the mysql client:

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

In the example given, mail sent to alias@my-domain.com will be accepted and delivered to you@my-domain.com.

To see current aliases in the database:

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 |
+----+-----------+---------------------+-------------------+

Go ahead and enter a few virtual email users, and maybe an alias or two, so that you will have working accounts to test with after we set up postfix and dovecot.

For troubleshooting, use the queries shown above to verify the domains, email users and aliases in the database at any time, and to reset virtual user passwords. Return to main article page

Sources

 es:howtos:network_services:postfix_dovecot_mysql:database ()