Table of Contents
Cómo configurar el servidor de correo Postfix y Dovecot con la base de datos (MariaDB) de forma segura-Parte 1


En esta serie de 3 artículos. discutiremos cómo configurar un servidor de correo Postfix. con protección antivirus y contra correo no deseado en un CentOS 7. caja. Tenga en cuenta que estas instrucciones también funcionan en otras distribuciones como RHEL. Fedora. y Debian. Ubuntu.
Parte 1 : Cómo crear y configurar la base de datos del servidor de correo Postfix (MariaDB) de forma segura Parte 2 : Cómo configurar Postfix y Dovecot con dominio virtual Usuarios en Linux Parte 3 : Cómo agregar protección antivirus y contra correo no deseado al servidor de correo Postfix con ClamAV y SpamAssassin Parte 4 : Cómo instalar y configurar el cliente de correo web RoundCube con usuarios virtuales en Postfix Parte 5 : Cómo utilizar Sagator, una puerta de enlace antivirus/antispam para proteger su servidor de correoNuestro plan consiste en almacenar cuentas de correo electrónico y alias en una base de datos MariaDB. que es para nuestra conveniencia, se administrará a través de phpMyAdmin.
Si elige no instalar phpMyAdmin. o está tratando con un servidor solo CLI, también proporcionaremos el código equivalente para crear el dat abase tablas que se utilizarán a lo largo de esta serie.
Dado que mantener un servidor de correo en funcionamiento es una de las tareas esenciales que generalmente se asignan a los administradores e ingenieros del sistema, también brindaremos algunos consejos para ejecute este servicio crítico en un entorno de producción.
Cree registros A y MX para el dominio en DNS
Antes de continuar, hay algunos requisitos previos que deben cumplirse:
freestar.config.enabled_slots.push
1.. Necesitará un dominio válido registrado a través de un registrador de dominios. En esta serie usaremos www.linuxnewz.com, que fue registrado a través de GoDaddy.
2.. Dicho dominio debe apuntar a la IP externa de su VPS o proveedor de alojamiento en la nube. Si tiene su propio servidor de correo, puede utilizar el servicio ofrecido por FreeDNS (requiere registro).
En cualquier caso, también debe configurar los registros A y MX para su dominio (usted puede obtener más información sobre los registros MX en estas preguntas frecuentes de Google).
Una vez agregados, puede buscarlos utilizando una herramienta en línea como MxToolbox. o ViewDNS. para asegurarse de que estén configurados correctamente.
Importante. tenga en cuenta que puede llevar un tiempo ( 1-2. days) hasta que se propaguen los registros DNS y su dominio esté disponible. Mientras tanto, puede acceder a su VPS a través de su dirección IP para realizar las tareas que se indican a continuación.
3.. Configure el FQDN. ( Nombre de dominio completo. de su VPS:
# hostnamectl set-hostname yourhostname
para establecer el nombre de host del sistema, luego edite /etc/hosts. de la siguiente manera (reemplace AAA.BBB.CCC.DDD. yourhostname. y yourdomain. con la IP pública de su servidor, su nombre de host y su dominio registrado):
AAA.BBB.CCC.DDD yourhostname.yourdomain.com yourhostname
donde yourhostname. es el nombre de host del sistema que se estableció previamente mediante el comando hostnamectl.
Instalación de los paquetes de software necesarios
4.. Para instalar los paquetes de software necesarios, como Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, etc., debe habilitar el repositorio EPEL.
# yum ins tall epel-release
5.. Una vez que haya seguido los pasos anteriores, instale los paquetes necesarios:
En sistemas basados en CentOS: # yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin En Debian y derivados: # aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-l3d dopdcot dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin
6.. Inicie y habilite los servidores web y de base de datos:
En sistemas basados en CentOS: # systemctl enable httpd mariadb # systemctl start httpd mariadb En Debian y derivados: # systemctl enable apache2 mariadb # systemctl start apache2 mariadb
Cuando la instalación esté completa y el servicio anterior esté habilitado y en ejecución, comenzaremos configurando la base de datos y las tablas para almacenar información sobre las cuentas de correo de Postfix.
Creación de la base de datos de cuentas de correo de Postfix
Para simplificar, usaremos phpMyAdmin. una herramienta destinada a manejar la administración de bases de datos MySQL. MariaDB. a través de una interfaz web, para crear y administrar la base de datos de correo electrónico.
Sin embargo, para iniciar sesión y utilizar esta herramienta, debemos seguir estos pasos:
7.. Habilite la cuenta MariaDB. (puede Haga esto ejecutando la utilidad mysql_secure_installation desde la línea de comando, asignando una contraseña para la raíz del usuario y estableciendo la configuración predeterminada propuesta mediante la herramienta EXCEPTO “ ¿Deshabilitar el inicio de sesión de root de forma remota?. :
Desactive el inicio de sesión raíz de MySQL
o cree un nuevo usuario de base de datos:
MariaDB [(none)]> CREAR USUARIO ‘dba’ @ ‘localhost’ IDENTIFICADO POR ‘YourPasswordHere’; MariaDB [(ninguno)]> OTORGAR TODOS LOS PRIVILEGIOS EN *. * PARA ‘dba’ @ ‘localhost’; MariaDB [(ninguno)]> DESCARGAR PRIVILEGIOS;
Crear nuevo usuario de base de datos
Proteger Apache con un certificado
8.. Dado que usaremos una aplicación web para administrar la base de datos del servidor de correo electrónico, debemos tomar las precauciones necesarias para proteger las conexiones al servidor. De lo contrario, nuestras credenciales de phpMyAdmin. viajarán en texto sin formato a través del cable.
Para configurar Seguridad de la capa de transporte. ( TLS. ) en su servidor, siga los pasos descritos en la Parte 8. de la serie RHCE: Implementación de HTTPS a través de TLS usando Network Security Service (NSS) para Apache antes de continuar.
Nota. si no tiene acceso a la consola del servidor, necesitará encontrar otra forma de generar la entropía necesaria durante la creación de la clave. En ese caso, puede considerar instalar rng-tools. y ejecutar rngd-r/dev/urandom.
Configurar y proteger PhpMyAdmin
9.. En /etc/httpd/conf.d/phpMyAdmin.conf. ( CentOS. o /etc/phpmyadmin/apache.conf. ( Debian. y derivados), ubique todas las apariciones de las siguientes líneas y asegúrese de que apunten a la IP pública de su servidor:
Require ip AAA.BBB.CCC.DDD Permitir desde AAA.BBB.CCC.DDD
Además, desactive los alias predeterminados y cree uno nuevo para acceder a su página de inicio de sesión de phpMyAdmin. Esto ayudará a proteger el sitio contra bots y atacantes externos que tengan como objetivo www.yourdomain.com/phpmyadmin. o www.yourdomain.com/phpMyAdmin.
#Alias/phpMyAdmin/usr/share/phpMyAdmin #Alias /phpmyadmin/usr/share/phpMyAdmin Alias /managedb/usr/share/phpMyAdmin
Además, agregue la siguiente línea dentro de
Requiere todas las
Secure PhpMyAdmin
Crear Apache VirtualHost para dominio
10.. Make asegúrese de que su dominio se agregue a los sitios habilitados. Cree /etc/httpd/sites-available/linuxnewz.com.conf. ( CentOS. o /etc/apache2/sites-available/linuxnewz.com ( Debian. con el siguiente contenido (asegúrese de que DocumentRoot. sitios disponibles. y sitios habilitados. directorios existen):
y el enlace simbólico:
En CentOS: # ln-s/etc/httpd/sites-available/linuxnewz. com.conf/etc/httpd/sites-enabled/linuxnewz.com.conf En Debian: # a2ensite linuxnewz.com
y listo.
Configurar la base de datos de correo electrónico de Postfix
11.. Ahora puede abrir su interfaz phpMyAdmin. en https://www.yourdomain .com/managedb (tenga en cuenta que managedb. es el alias que configuramos anteriormente para el directorio de datos phpMyAdmin).
Si eso no funciona (lo que puede deberse a un retraso en la propagación o falta de configuración de registros DNS) por el momento puede intentar usar la dirección IP pública de su servidor en lugar de www.yourdomain.com.
Inicio de sesión de PhpMyAdmin
En cualquier caso, después de iniciar sesión en phpMyAdmin, verá la siguiente interfaz. Haga clic en Nuevo. en la sección de la izquierda:
Crear nueva base de datos en PhpMyAdmin
Introduzca un nombre para la base de datos ( EmailServer_db. en este caso, no es necesario seleccionar una intercalación) y haga clic en Crear.
Ingrese el nombre de la base de datos
12.. En la siguiente pantalla, elija un nombre. para la primera tabla (donde almacenaremos los dominios que administrará este servidor de correo.
Tenga en cuenta que incluso cuando en esta serie solo administraremos un dominio, puede agregar más más adelante) y la cantidad de campos que desee en él y, a continuación, haga clic en Ir. Se le pedirá que nombre y configure esos dos campos, donde puede proceder de manera segura como se indica en las siguientes imágenes:
Crear tabla de base de datos
Cuando elija PRIMARIO. en Índice. para DomainId. acepte los valores predeterminados y haga clic en Ir. :
Agregar índice de base de datos
Alternativamente, puede hacer clic en Vista previa de SQL. para ver el código bajo el capó:
CREAR TABLA `EmailServer_db“Domains_tbl` (` DomainId` INT NOT NULL AUTO_INCREMENT, `DomainName` VARCHAR (50) NOT NULL, PRIMARY KEY (` DomainId`)) ENGINE = InnoDB;
Código de índice de tabla de base de datos
Cuando esté listo, haga clic en Guardar. para confirmar cambios. Luego podrá hacer clic en Nuevo. en EmailServer_db. para continuar creando tablas:
Crear tablas en la base de datos
13.. Ahora siga estos pasos para crear el resto de las tablas. Haga clic en la pestaña SQL. e ingrese el código indicado para cada objeto de la base de datos.
Tenga en cuenta que en este caso elegimos crear la tabla usando una consulta SQL debido a las relaciones que deben establecerse entre diferentes tablas:
Users_tbl CREATE TABLE `Users_tbl` (` UserId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL,` password` VARCHAR (100) NOT NULL, `Email` VARCHAR (100) NOT NULL, CLAVE PRINCIPAL (`UserId`), CLAVE ÚNICA` Email` (`Email`), CLAVE EXTRANJERA (DomainId) REFERENCIAS Domains_tbl (DomainId) ON DELETE CASCADE) ENGINE = InnoDB;
Crear tabla de usuarios de Postfix
Debería recibir un mensaje de confirmación (si no es así, phpMyAdmin solicitará la sintaxis errores):
Confirmación MySQL Alias_tbl CREATE TABLE` Alias_tbl` (`AliasId` INT NOT NULL AUTO_INCREMENT,` DomainId` INT NOT NULL, `Source` varchar (100) NOT NULL, `Destination` varchar (100) NOT NULL, PRIMARY KEY (` AliasId`), FOREIGN KEY (DomainId) REFERENCIAS Domains_tbl (DomainId) ON DELETE CASCADE) ENGINE = InnoDB;
(Haga clic en Ir. en la parte inferior para continuar con la creación de la tabla).
Hasta este punto, debe tener la siguiente estructura de base de datos:
Estructura de la base de datos
Lo que significa que está listo para comenzar a agregar algunos registros en la siguiente sección.
Creando un Dominio Postfix, Usuarios y Alias
14.. Ahora insertaremos los siguientes registros en las tres tablas. Las contraseñas de [correo electrónico protegido]. y [correo electrónico protegido]. se cifrarán y la declaración INSERT INTO Users_tbl.
Además, tenga en cuenta que los correos electrónicos enviados a [email protected]. serán redirigidos a [email protected].
INSERT INTO Domains_tbl (DomainName) VALUES (‘linuxnewz .com ‘); INSERT INTO Users_tbl (DomainId, contraseña, correo electrónico) VALUES (1, ENCRYPT (‘PasswordForFirstEmailAccount’, CONCAT (‘$ 6 $’, SUBSTRING (SHA (RAND ()),-16))), ‘[correo electrónico protegido]’); INSERT INTO Users_tbl (DomainId, contraseña, correo electrónico) VALUES (1, ENCRYPT (‘PasswordForSecondEmailAccount’, CONCAT (‘$ 6 $’, SUBSTRING (SHA (RAND ()),-16))), ‘[correo electrónico protegido]’); INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, ‘[email protected]’, ‘[email protected] linuxnewz.com’);
Habiendo agregado nuestro dominio, dos cuentas de usuario y un alias de correo electrónico, estamos listos para continuar configurando nuestro servidor de correo electrónico en el próximo artículo de esta serie, donde configuraremos Dovecot. y Postfix.
Resumen
En este artículo hemos enumerado los paquetes necesarios para instalar un servidor de correo electrónico Postfix en un CentOS 7 VPS, y explicamos cómo administrar la base de datos subyacente usando phpMyAdmin.
En los siguientes dos artículos revisaremos la configuración de los dos programas que se encargarán de la distribución de correo electrónico para nuestro dominio ( Parte 2. y te mostraremos cómo para agregar protección contra spam y virus ( Parte 3. para su servidor.
Hasta entonces, no dude en contactarnos usando el formulario a continuación si tiene alguna pregunta o comentario.