LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Configurar el servidor de correo Postfix en CentOS

Consideramos, que deberías antes de ver este artículo, previo a iniciar.

Instalar y configurar Postfix y Dovecot, con autenticación y TLS

Nuestro plan consiste en almacenar cuentas de correo electrónico y alias en una base de datos MariaDB que, para nuestra conveniencia, se gestionará a través de phpMyAdmin .

Si opta por no instalar phpMyAdmin, o está tratando con un servidor CLI-only, 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 de sistemas e ingenieros, también proporcionaremos algunos consejos para ejecutar de manera eficiente este servicio crítico en un entorno de producción.

Crear registros A y MX para el dominio en DNS

Antes de seguir adelante, 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.com , que se registró a través de ExtreHost .

2. Dicho dominio debe apuntar a la IP externa de su VPS o proveedor de alojamiento en la nube. Si usted es el anfitrión de su servidor de correo, puede usar el servicio ofrecido por FreeDNS (requiere registro).

Para ello, le vendrá bien leer el artículo:

Configuración del servidor DNS en Linux

En cualquier caso, también debe configurar registros A y MX para su dominio (puede obtener más información acerca de los registros MX en estas preguntas frecuentes de Google).

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

Importante : Tenga en cuenta que ésto, puede tomar un largo tiempo ( 1-2 días) hasta que los registros DNS se propaguen 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. 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

Por ejemplo

AAA.BBB.CCC.DDD pizarro.linuxnewz.com pizarro

donde yourhostname es el nombre de host del sistema que se estableció previamente utilizando el comando hostnamectl .

Instalación de paquetes de software requeridos

4. Para instalar los paquetes de software necesarios como Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, etc., debe habilitar el repositorio de EPEL :

 # yum install 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-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin

6. Comience 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 se complete la instalación 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.

Crear una base de datos de cuentas de correo Postfix

Para simplificar, utilizaremos phpMyAdmin, una herramienta destinada a administrar las 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 usar esta herramienta, debemos seguir estos pasos:

7. Habilite la cuenta MariaDB (puede hacerlo ejecutando la utilidad

mysql_secure_installation

Desde la línea de comando, asignando una contraseña para el usuario root y estableciendo la configuración predeterminada propuesta por la herramienta, EXCEPTO "¿Desactuvar el inicio de sesión root de forma remota? ":

Disallow root login remotely [Y/n] n

Deshabilitar inicio de sesión root de MySQL

de lo contrario cree un nuevo usuario de base de datos:

mysql -u root -p
MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'rootpassword'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES;

Asegure Apache con un Certificado

8. Ya 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, nuestras credenciales de phpMyAdmin viajarán en texto sin formato a través del cable.

Para configurar Transport Layer Security ( TLS puede crear ahora, un certificado autofirmado, o si quiere, directamente un certificado Lets Encrypt, aquí le indicamos los pasos.

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 .

Configure y asegure PhpMyAdmin

9. Pocas veces requerirá tocar estos ficheros, pero debe saber que en /etc/httpd/conf.d/phpMyAdmin.conf ( CentOS ) o /etc/phpmyadmin/apache.conf ( Debian y derivados), busque todas las ocurrencias de las siguientes líneas y asegúrese de que apuntan a la IP pública. de tu servidor:

Require ip AAA.BBB.CCC.DDD
Allow from 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 phpMyAdmin. Esto ayudará a proteger el sitio contra bots y atacantes externos que se dirigen a 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 <IfModule mod_authz_core.c> :

<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8

<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip *************
Require ip ::1
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from *************
Allow from ::1
</IfModule>
</Directory>

Asegurar PhpMyAdmin

Crear Apache VirtualHost para el dominio

10. Asegúrese de que su dominio se haya agregado a los sitios habilitados. Cree /etc/httpd/sites-available/linuxnewz.com.conf ( CentOS ) o /etc/apache2/sites-available/linuxnewz.com ( Debian ) con los siguientes contenidos (asegúrese de que DocumentRoot , sitios disponibles y sitios -directores habilitados existen):

<VirtualHost *:80>
    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/requests.log combined
    Options Indexes FollowSymLinks
</VirtualHost>

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 Está listo.

Configurar la base de datos de correo electrónico 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 (que puede deberse a un retraso en la propagación o 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.yourdomain.com :

Iniciar sesión en 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 una 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 :

Introduzca el nombre de la base

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 tarde) y la cantidad de campos que desee, luego haga clic en Aceptar . 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 elige PRIMARIO bajo Índice para DomainId , acepte los valores predeterminados y haga clic en Aceptar :

Agregar índice de base de datos

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

CREATE TABLE `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

Cuando esté listo, haga clic en Guardar para confirmar los cambios. A continuación, podrá hacer clic en Nuevo en EmailServer_db para seguir creando tablas:

Crear tablas en la base de datos

13. Ahora sigue 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 utilizando una consulta SQL debido a las relaciones que deben establecerse entre las 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,  
PRIMARY KEY (`UserId`),  
UNIQUE KEY `Email` (`Email`),  
FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE 
) ENGINE = InnoDB; 

Crear tabla de usuario Postfix

Debería obtener un mensaje de confirmación (de lo contrario, phpMyAdmin solicitará errores de sintaxis):

Confirmación de MySQL

Confirmación de 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) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

(Haga clic en Aceptar 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

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

Crear un dominio Postfix, usuarios y alias

14. Ahora insertaremos los siguientes registros en las tres tablas. Las contraseñas para Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. y Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. se cifrarán y la instrucción INSERT INTO Users_tbl .

Además, tenga en cuenta que los correos electrónicos enviados a Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. serán redireccionados a Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. :

INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.');
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.');
INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.', Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.');

Al haber 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 siguiente 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 Postfix en CentOS 7 VPS y hemos explicado 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 del correo electrónico para nuestro dominio ( Parte 2 ) y le mostraremos cómo agregar protección contra el correo no deseado y los virus ( Parte 3 ) para su servidor.

Hasta entonces, siéntase libre de contactarnos utilizando el siguiente formulario si tiene alguna pregunta o comentario.

CONTINÚA:

Cómo configurar el servidor de correo Postfix y Dovecot con base de datos (MariaDB) de forma segura: parte 2

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías