LinuxParty
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 :
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:
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 :
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:
Cuando elige PRIMARIO bajo Índice para DomainId , acepte los valores predeterminados y haga clic en Aceptar :
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;
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:
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;
Debería obtener un mensaje de confirmación (de lo contrario, phpMyAdmin solicitará errores de sintaxis):
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:
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
-
Comunicaciones
- ¿Tesla hará un teléfono? Sí, dice Morgan Stanley
- La ley de radio AM a la que se oponen las industrias tecnológica y automotriz está a punto de aprobarse
- WhatsApp agrega opción para usar la misma cuenta en varios teléfonos
- Geary: un atractivo cliente de correo electrónico moderno para Linux
- La BBC resucita las transmisiones de onda corta de la era de la Segunda Guerra Mundial mientras Rusia bloquea las noticias sobre la invasión de Ucrania
- Cómo ver la Televisión gratis en Linux
- Revelado las misteriosas grabaciones de voz humana hechas 3 décadas antes de Thomas Edison
- Está el Ping de los blog nuevamente de moda?
- PostmarketOS, La distro Linux para tu teléfono móvil Smartphone
- Activar el modo oscuro de WhatsApp para iPhone y Android.
- Fallo en el WhatsApp podría secuestrar tu teléfono, actulización urgente.
- ¿Qué es la tecnología 5G y cómo cambiará nuestras vidas?
- TeamViewer inaugura su comunidad de usuarios en español
- Cómo grabar la pantalla en Linux
- ¿En qué gastamos la batería de nuestro móvil?