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:
Servidor de correo corporativo
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:
- Instalación y configuración del filtro antispam SpamAssasin y agrupación de mensajes en la carpeta Spam para el servicio Postfix Debian
- Instalación y configuración de cuotas de buzón en un servidor de correo Dovecot
- Configuración del calendario para Roundcube Webmail
- Protegiendo su servidor de correo de adivinar contraseñas con Fail2Ban
- Configuración del filtro de correo electrónico ManageSieve para el correo web de Roundcube
- Eliminación de carpetas de buzones a través de PostfixAdmin
- Configuración de un recolector de correo en postfixAdmin
- Transferencia y sincronización de correo a través de imapsync
- Configuración de la comprobación de SPF en Postfix
- Configuración de una firma digital DKIM en Postfix
- Protección contra spam con Postfix
- Spamassassin de autoaprendizaje en la carpeta Spam
- Supervisión del servidor de correo Postfix con informe en PDF