Image

(Ultimo cambio: 06.11.2024)

Debian 12 Linux Mail Server (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Self-learning by Spam folder), Sieve, Quota, Fail2Ban, Roundcube (Calendar, Managesieve), Fetchmail, Imapsync)

Esta guía muestra cómo configurar un servidor de correo completo en un VPS con Linux Debian 12. La tarea es obtener un servidor corporativo listo para usar con la capacidad de administrar dominios y buzones de correo a través de una interfaz web. Instalaremos los servicios básicos de correo, la herramienta de administración postfixadmin con la que puede agregar dominios, direcciones de correo, así como la interfaz web de roundcube para trabajar cómodamente con el correo a través de un navegador. En esta guía, instalamos como raíz, si tener un uso normal del comando sudo.


Aspecto de la interfaz web del sistema de correo y administración:

Preguntas más frecuentes:

  • Quiero comprar Kaspersky Security para protegerme contra el spam y los virus. ¿Me lo instalarán?

    Sí, si solicita un ensamblado de servidor de correo y una licencia para Kaspersky Security, la instalación y la configuración son gratuitas. Agregue licencia en el formulario de pedido y especifique el número requerido de buzones.

  • ¿Este servidor tiene una herramienta de migración para transferir todos los correos y carpetas respetando toda la jerarquía de la estructura?

    Sí, imapsync está instalado en el servidor, lo que le permite transferir todos los buzones y todas las carpetas respetando la estructura original, solo necesitará configurar las reglas de clasificación en la interfaz web del buzón.

  • ¿Obtendré un servidor listo de inmediato y, después de crear buzones en la interfaz administrativa, funcionarán?

    Sí, el servidor está completamente configurado y listo para funcionar, todo lo que necesita hacer es ingresar un registro MX en el editor de DNS y especificar la dirección IP del servidor de correo para su dominio.

  • Si tiene preguntas sobre la configuración correcta de los registros DNS, la migración de buzones y otras preguntas, ¿puede realizar estas configuraciones?

    Sí, dado que todos tienen diferentes nombres de dominio, el servidor viene con un dominio de prueba como ejemplo, deberá agregar el suyo propio, no lleva mucho tiempo y, si es necesario, podemos realizar estas configuraciones por usted, solo necesita proporcionar nombres de dominio.

  • ¿Puedo cambiar la configuración de los servicios yo mismo, así como establecer la mía propia, por ejemplo, alojar varios sitios en el servidor de correo?

    Si seguro. Después del pago, recibirá un servidor configurado de acuerdo con la descripción, nombre de usuario y contraseña para administrar buzones de correo, así como acceso completo a la raíz. La guía proporcionada reduce significativamente el tiempo tanto para la configuración como para la prueba, y en la descripción se proporciona exactamente lo que configuramos. La principal ventaja es una configuración de servidor de correo funcional sin restricciones.

  • Queremos que todos los datos estén con nosotros. ¿Puedes hacer todo este ajuste en nuestro equipo?

    Sí, puedes solicitar la instalación y configuración de esta configuración en tu equipo mediante el enlace.

  • Según tenemos entendido, el ensamblaje terminado se ofrece solo en un servidor VPS, pero nos gustaría solicitarle un servidor VDS por varias razones.

    Esta descripción la podemos configurar pagando un servidor VDS (Debian 12) durante un año de una sola vez. La configuración tardará entre 2 y 3 días a partir de la fecha de pago.

La configuración del servidor preconfigurado está disponible en el formulario de pedido.

1. Actualizar paquetes de software

apt update
apt upgrade

2. Instalar LEMP

Instalación de LEMP descrito en una de las asambleas, necesitaremos este paquete para el funcionamiento de la interfaz web de correo, el sistema de gestión y administración de buzones, así como la base de datos para almacenar configuraciones.

3. Configurar un cortafuegos para los servicios de correo

iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

Mantengamos las reglas 

apt install iptables-persistent
netfilter-persistent save

4. Instalar y configurar PostfixAdmin

Este paquete le permite administrar nuestro servidor de correo a través de la interfaz web sin tener que recurrir a la consola.

4.1 Instale el paquete en sí

apt install php-mysql php-mbstring php-imap
systemctl restart php8.2-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /usr/share/nginx/html/postfixadmin
tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /usr/share/nginx/html/postfixadmin/templates_c
chown -R www-data:www-data /usr/share/nginx/html/postfixadmin

4.2 Ahora vamos a crear la base de datos:

mysql -u root -p

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q

4.3 Vamos a crear un archivo de configuración con el siguiente contenido:

vi /usr/share/nginx/html/postfixadmin/config.local.php


$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';

?>

Abra un navegador e ingrese la dirección http://host-ip/postfixadmin/public/setup.php

Debe crear una contraseña y luego hacer clic en el botón Generate setup_password hash, para generar un hash.

Copie toda la línea y agréguela al archivo:

 vi /usr/share/nginx/html/postfixadmin/config.local.php

Debe actualizar la página después de guardar http://host-ip/postfixadmin/public/setup.php e inicie sesión con la contraseña proporcionada. Se instalará PostfixAdmin.

A continuación, debemos agregar un superusuario (un usuario con todos los derechos). En el campo Admin, debe especificar el usuario en forma de correo root@mail-domain.tld

Ahora vamos a la pagina http://host-ip/postfixadmin/public/login.php e ingrese los datos del usuario creado:

5. Instalar y configurar el servicio Postfix

apt install postfix postfix-mysql

Durante la instalación, aparecerá la ventana Configuración de Postfix; deje el elemento Sitio de Internet

5.1 Vamos a crear un grupo y usuarios para trabajar con carpetas de sweatbox

groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
chown vmail:vmail /home/mail

5.2 Hagamos cambios en el archivo de configuración 

 vi /etc/postfix/main.cf

mydestination = localhost.$mydomain, localhost, localhost.localdomain

...

inet_protocols = ipv4

...

smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key

A continuación, agregue las siguientes líneas al final del archivo de configuración:

 /etc/postfix/main.cf

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Cree un archivo con la configuración de alias para acceder a la base de datos

vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Cree un archivo con la configuración del dominio para acceder a la base de datos

vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

Vamos a crear un archivo con la configuración del buzón para acceder a la base de datos.

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

Abra el archivo de configuración principal y agréguelo al final de la línea:

vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
smtps   inet  n  -  n  -  -  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot   unix  -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Vamos a crear certificados de seguridad usando el comando: 

mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"

En este caso, creamos un certificado autofirmado, para que funcione sin una advertencia de seguridad, debe comprar certificado SSL.

Configuración final del servicio:

systemctl enable postfix
systemctl restart postfix

6. Instalar y configurar Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 Configuración del almacenamiento de correo

vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/mail/%d/%u/

6.2 Configuración de autorización

vi /etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
}

Cambiar la configuración de autorización de la base de datos

vi /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

Comentemos la línea predeterminada y activemos la línea con la palabra sql en el texto.

6.3 Configuración de certificados SSL

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert =
ssl_key =

Configuremos la creación automática de carpetas cuando el usuario autorice por primera vez en el correo.

vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

6.4 Configurar una conexión de base de datos

vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

6.5 Agregar ajustes al archivo de configuración

vi /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

6.6 Configurar la interfaz en la que se ejecutará el servicio

vi /etc/dovecot/dovecot.conf

listen = *

Configuración del servicio final

systemctl enable dovecot
systemctl restart dovecot

7. Configuración de un dominio y buzones

Vayamos a la interfaz web y configuremos el dominio para que funcione con el correo: http://host-ip/postfixadmin/public/.

A continuación, agregue un dominio al menú superior:

Después de agregar el dominio, creemos un buzón.

8. Instalar y configurar el servicio de correo web, Roundcube

Descargue la última versión LTS del paquete e impleméntela en nuestro servidor

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz
mkdir /usr/share/nginx/html/webmail
tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
chown -R www-data:www-data /usr/share/nginx/html/webmail

Abra el archivo de configuración y edite

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;

Busquemos también el parámetro y dejemos que quede vacío: $config['smtp_pass'] = '';  

Agreguemos tiempo a este archivo de configuración:

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;

Vamos a crear una base para roundcubemail en MariaDB, especificada en el archivo de configuración:

mysql -uroot -p

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit

Importación de la base de datos:

mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

Instale los paquetes php necesarios:

apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt

Si ocurrió un error durante la instalación de php-mcrypt, instálelo manualmente

apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5

vi /etc/php/8.2/fpm/conf.d/99-mcrypt.ini

extension=mcrypt.so

Configurar el servicio php:

vi /etc/php/8.2/fpm/php.ini

date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M

Los límites de 50 megabytes se muestran como ejemplo, puede establecer los suyos propios, le permitirán adjuntar archivos adjuntos más grandes a la carta.

systemctl restart php8.2-fpm

Arreglemos los límites en nginx mismo

vi /etc/nginx/nginx.conf

http {

    ...
    client_max_body_size 50M;
    ...
systemctl restart nginx

A continuación, continuaremos la instalación en el navegador mediante el enlace http://host-ip/webmail/installer/

Siguiendo las instrucciones, instale rouncube y luego, en la página siguiente, verificamos que todos los elementos estén en buen estado. Instalación completa.

Elimine el instalador y deshabilite la instalación en el archivo de configuración

rm -rf /usr/share/nginx/html/webmail/installer
vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['enable_installer'] = false;

Sigamos el enlace http://host-ip/webmail/ y vaya al correo web utilizando la dirección de correo electrónico completa y la contraseña como inicio de sesión.

9. Último paso de configuración

Nuestro servidor VPS está configurado para funcionar con correo, ahora necesitamos registrar o reemplazar el registro MX con la dirección IP de nuestro servidor en la configuración del nombre de dominio:

В Editor de DNS las líneas se verán así:

Una vez registradas las entradas, es necesario especifique la zona inversa para la dirección IP (PTR)

El servidor de correo empresarial Linux Debain 12 está listo para funcionar, la compilación también incluye la configuración de los servicios y las opciones que se enumeran a continuación:




Sin comentarios aún