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

Cómo configurar el servidor de correo Postfix y Dovecot con la base de datos (mariadb) de forma segura - Parte 1
Configuración del servidor de correo postfix en CentOS 7

En esto 3 artes serie discutiremos cómo configurar un Sufijo Servidor de correo con antivirus y protección contra spam 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 usuarios de dominio virtual en Linux Parte 3: Cómo agregar antivirus y protección de spam al servidor de correo postfix con clamav y spamassassin Parte 4: Cómo instalar y configurar el cliente RoundCube Webmail con usuarios virtuales en Postfix Parte 5: Cómo usar Sagator, una puerta de enlace antivirus/Antispam para proteger su servidor de correo

Nuestro plan consiste en almacenar cuentas de correo electrónico y alias en un Mariada base de datos que es para nuestra conveniencia, se administrará a través de phpmyadmin.

Si elige no instalar phpmyadmin, o están tratando con un servidor de CLI-solo, también proporcionaremos el código equivalente para crear las tablas de la base de datos 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 proporcionaremos algunos consejos para ejecutar eficientemente este servicio crítico en un entorno de producción.

Crear registros A y MX para el dominio en DNS

Antes de continuar, hay algunos requisitos previos que deben cumplirse:

1. Necesitará un dominio válido registrado a través de un registrador de dominio. En esta serie usaremos www.Linuxnewz.comunicarse, que fue registrado a través de Ve papi.

2. Dicho dominio debe señalarse a la IP externa de su VPS o proveedor de alojamiento de nubes. Si se autohaga su servidor de correo, puede usar el servicio ofrecido por Freedns (requiere el registro).

En cualquier caso, debes configurar A y Mx Registros para su dominio también (puede aprender más sobre los registros de MX en estas preguntas frecuentes de Google).

Una vez agregado, puede buscarlos usando una herramienta en línea como Mxteolbox o Viewdns para asegurarse de que estén configurados correctamente.

Importante: Tenga en cuenta que puede llevar un tiempo (1-2 días) hasta que se propagen 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 indicadas a continuación.

3. Configurar el FQDN (Nombre de dominio completo) de tu vps:

# hostnamectl set-hostname yourhostName 

Para establecer el nombre de host del sistema, luego edite /etc/huéspedes como sigue (reemplazar AAA.Bbb.CCC.Ddd, tu nombre de host, y Tu dominio con la IP pública de su servidor, su nombre de host y su dominio registrado):

AAA.Bbb.CCC.Ddd yourhostname.Tu dominio.com yourhostname 

dónde tu nombre de host es el nombre de host del sistema que se estableció previamente usando hostamectl dominio.

Instalación de paquetes de software requeridos

4. Para instalar paquetes de software requeridos como Apache, Postfix, Dovecot, MariadB, PhpMyadmin, Spamassassin, Clamav, etc., debe habilitar el Epel repositorio:

# yum instalación Epel-Lanzamiento 

5. Una vez que haya seguido los pasos anteriores, instale los paquetes necesarios:

En sistemas basados ​​en CentOS:

# Yum Update && Yum Instale Httpd Httpd-Devel Postfix Dovecot Dovecot-Mysql Spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server phpmyadmin 

En Debian y derivados:

# aptitude actualización && aptitude instalación apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpmyadmin 

6. Iniciar y habilitar los servidores web y de base de datos:

En sistemas basados ​​en CentOS:

# SystemCTL Habilitar httpd mariadb # systemctl iniciar httpd mariadb 

En Debian y derivados:

# SystemCTL Habilitar Apache2 Mariadb # SystemCTL Inicio APACHE2 Mariadb 

Cuando la instalación está completa y el servicio anterior está habilitado y ejecutado, comenzaremos configurando la base de datos y las tablas para almacenar información sobre las cuentas de correo postfix.

Creación de la base de datos de cuentas de correo postfix

Por simplicidad, usaremos phpmyadmin, una herramienta destinada a manejar la administración de Mysql / Mariada bases de datos 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 usar esta herramienta, debemos seguir estos pasos:

7. Habilitar el Mariada cuenta (puede hacer esto ejecutando el mysql_secure_installation Utilidad desde la línea de comando, asignando una contraseña para la raíz del usuario y configurar la configuración predeterminada propuesta por la herramienta excepto "No permitir el inicio de sesión de raíz de forma remota?":

Deshabilitar el inicio de sesión raíz mysql

o de lo contrario crear un nuevo usuario de la base de datos:

Mariadb [(ninguno)]> Crear usuario 'dba'@'localhost' identificado por 'YourPasswordHere'; Mariadb [(ninguno)]> otorgue todos los privilegios en * . * A 'dba'@'localhost'; Mariadb [(ninguno)]> privilegios de descarga; 
Crear un nuevo usuario de base de datos

Asegure Apache con un certificado

8. Dado que utilizaremos 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, nuestro phpmyadmin Las credenciales viajarán en texto plano a través del cable.

Para configurar Transport Layer Security (TLS) En su servidor, siga los pasos descritos en Parte 8 de la serie RHCE: Implementación de HTTP a través de TLS utilizando el Servicio de Seguridad de Red (NSS) para Apache antes de continuar.

Nota: Si no tiene acceso a la consola del servidor, deberá encontrar otra forma de generar la entropía necesaria durante la creación clave. En ese caso, es posible que desee considerar instalar Toolas RNG y corriendo rngd -r /dev /urandom.

Configurar y asegurar phpmyadmin

9. En /etc/httpd/conf.d/phpmyadmin.confusión (Cento) o /etc/phpmyadmin/apache.confusión (Debian y derivados), ubique todas las ocurrencias de las siguientes líneas y asegúrese de que apunten a la IP pública de su servidor:

Requerir IP AAA.Bbb.CCC.DDD Permitir de AAA.Bbb.CCC.Ddd 

Además, deshabilite los alias predeterminados y cree uno nuevo para acceder a su página de inicio de sesión de PhPMyAdmin. Esto ayudará a asegurar el sitio contra bots y atacantes externos que se dirigen www.Tu dominio.com/phpmyadmin o www.Tu dominio.com/phpmyadmin.

#Alias ​​/phpmyadmin /usr /share /phpmyadmin #alias /phpmyadmin /usr /share /phpmyadmin alias /gestedb /usr /share /phpmyadmin 

Además, agregue la línea de siguientes en el interior :

Requiere todos otorgados 
Asegurar phpmyadmin

Crear apache virtualhost para dominio

10. Asegúrese de que su dominio se agregue a los sitios habilitados. Crear /etc/httpd/sitios disponible/Linuxnewz.comunicarse.confusión (Cento) o /etc/apache2/sites disponible/LinuxNewz.comunicarse (Debian) con los siguientes contenidos (asegúrese de que el Raiz del documento, sitios disponibles, y sitios habilitados Existen directorios):

 Servername www.Linuxnewz.com serveralias linuxnewz.com documentroot/var/www/linuxnewz.com/public_html ErrorLog/Var/www/LinuxNewz.com/error.Log customLog/var/www/linuxnewz.com/solicitudes.registro de opciones combinadas índices de seguimiento  

y el enlace simbólico:

En CentOS:
# ln -s/etc/httpd/sites disponible/Linuxnewz.comunicarse.conf/etc/httpd/sites-habilitado/linuxnewz.comunicarse.confusión 
En Debian:
# A2ensite Linuxnewz.comunicarse 

y tu estas listo.

Configuración de la base de datos de correo electrónico Postfix

11. Ahora puedes abrir tu phpmyadmin interfaz en https: // www.Tu dominio.com/managedb (tenga en cuenta que gerenteb es el alias que configuramos anteriormente para el directorio de datos PhPMyAdmin).

Si eso no funciona (que puede ser causado por un retraso en la propagación o la falta de configuración de los registros DNS) por el momento, puede intentar usar la dirección IP pública de su servidor en lugar de www.Tu dominio.comunicarse:

Phpmyadmin Iniciar sesión

En cualquier caso, después de iniciar sesión en phpmyadmin, verá la siguiente interfaz. Hacer clic Nuevo En la sección izquierda:

Cree una nueva base de datos en PhPMyAdmin

Ingrese un nombre para la base de datos (Correos electrónicos servver_db En este caso, no es necesario seleccionar una recopilació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 almacenemos los dominios que este servidor de correo administrará.

Tenga en cuenta que incluso cuando en esta serie solo administremos un dominio, puede agregar más tarde) y la cantidad de campos que desea, luego haga clic en Ir. Se le pedirá que nombre y configure esos dos campos, donde puede continuar de manera segura como se indica en las siguientes imágenes:

Crear tabla de bases de datos

Cuando elijas PRIMARIO bajo Índice para Dominio de dominio, Acepte los valores predeterminados y haga clic Ir:

Agregar índice de base de datos

Alternativamente, puede hacer clic Vista previa SQL Para ver el código debajo del capó:

Crear tabla 'Correo electrónicoServer_DB'.'Domains_tbl' ('DomainId' int no nulo Auto_Increment, 'DomainName' Varchar (50) no nulo, Key primaria ('DomainId')) motor = innoDB; 
Código de índice de la tabla de bases de datos

Cuando esté listo, haga clic Ahorrar Para confirmar los cambios. Luego podrás hacer clic Nuevo bajo Correos electrónicos servver_db Para continuar creando tablas:

Crear tablas en la base de datos

13. Ahora siga estos pasos para crear el resto de las tablas. Clickea en el Sql pestaña e ingrese el código indicado para cada objeto de base de datos.

Tenga en cuenta que en este caso elegimos crear la tabla utilizando una consulta SQL debido a las relaciones que deben establecerse entre diferentes tablas:

Usuarios_tbl

Crear tabla 'Uss_tbl' ('UserId' int no nulo Auto_incement, 'DomainId' int no nulo, 'contraseña' varchar (100) no nulo, 'correo electrónico' varchar (100) no nulo, clave primaria ('userId), uniforme, único Clave 'Correo electrónico' ('correo electrónico'), Key Extraal (DomainId) Referencias Domains_tbl (DomainId) en Delete Cascade) Engine = innoDB; 
Crear tabla de usuario postfix

Debe recibir un mensaje de confirmación (si no, PhPMyAdmin solicitará errores de sintaxis):

Confirmación de MySQL

Alias_tbl

Crear tabla 'alias_tbl' ('aliasid' int no null auto_incement, 'domainid' int no null, 'fuente' varchar (100) no nulo, 'destino' varchar (100) no nulo, clave primaria ('aliasid'), extranjera Key (DomainId) Referencias Domains_tbl (DomainId) en Delete Cascade) Engine = innoDB; 

(Hacer clic Ir en la parte inferior para proceder con la creación de la tabla).

Hasta este punto, debe tener la siguiente estructura de la base de datos:

Estructura de base de datos

Lo que significa que está listo para comenzar a agregar algunos registros en la siguiente sección.

Creación de un dominio postfix, usuarios y alias

14. Ahora insertaremos los siguientes registros en las tres tablas. Las contraseñas para [correo electrónico protegido] y [correo electrónico protegido] estará encriptado y el Insertar en usuarios_tbl declaración.

Además, tenga en cuenta que los correos electrónicos enviados a [correo electrónico protegido] será redirigido a [correo electrónico protegido]:

Insertar en los valores de dominios_tbl (domainName) ('LinuxNewz.com '); Insertar en Uss_TBL (DomainId, Password, Correo electrónico) Valores (1, CiCrypt ('PasswordForFirStailAcCount', Concat ('$ 6 $', Substring (SHA (Rand ()), -16))), '[correo electrónico protegido]'); Insertar en Uss_TBL (DomainId, Password, Correo electrónico) Valores (1, CiCrypt ('PasswordForSecondErailAcCount', concat ('$ 6 $', subcadena (SHA (rand ()), -16))), '[correo electrónico protegido]'); Insertar en alias_tbl (dominio, fuente, destino) valores (1, '[correo electrónico protegido]', '[correo electrónico protegido]'); 

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 Palomar y Sufijo.

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 utilizando PhPMyAdmin.

En los próximos 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 mostrarle cómo agregar protección contra el spam y los virus (Parte 3) para su servidor.

Hasta entonces, no dude en contactarnos usando el formulario a continuación si tiene alguna pregunta o comentario.