Cómo configurar tu propio servidor de correo electrónico
Un servidor de correo es un sistema que gestiona el envío y la recepción correcta de correos electrónicos entre el remitente y el destinatario. Por ejemplo, cuando envías un correo desde Gmail, estás utilizando el servidor de correo de Google.
Un cliente de correo, en cambio, es un programa que permite leer, enviar y almacenar correos. Ejemplos comunes son Microsoft Outlook, Thunderbird y otros.
Protocolos para recibir y enviar correos Copiar enlace
SMTP (Simple Mail Transfer Protocol) Copiar enlace
El servidor de salida utiliza el protocolo SMTP, siglas de Simple Mail Transfer Protocol.
Sus funciones principales son:
-
Verificar la configuración del remitente y permitir que el dispositivo envíe el mensaje.
-
Transmitir el correo y recibir el código de respuesta.
Los servidores SMTP usan los puertos 25 (sin cifrar) y 465 (cifrado).
POP3 (Post Office Protocol) Copiar enlace
POP3 es un protocolo para recibir correos electrónicos. Permite que el cliente de correo se conecte al servidor y descargue los mensajes al dispositivo local, haciéndolos accesibles incluso sin conexión. Normalmente, los correos se eliminan del servidor tras la descarga (aunque se puede conservar una copia).
POP3 usa los puertos 110 (sin cifrar) y 995 (con cifrado SSL/TLS).
IMAP (Internet Message Access Protocol) Copiar enlace
Como POP3, IMAP sirve para recibir correos, pero permite gestionarlos directamente en el servidor sin descargarlos. Esto resulta útil si accedes al correo desde varios dispositivos.
IMAP usa los puertos 143 (sin cifrar) y 993 (con cifrado SSL/TLS).
¿Por qué configurar tu propio servidor de correo? Copiar enlace
La respuesta más habitual es:
“Para usar mi propio dominio en la dirección de correo.”
Es cierto, pero no del todo. Puedes usar tu dominio sin configurar un servidor propio: muchos servicios permiten vincular tu dominio a sus servidores. El mayor beneficio es que ya disponen de un SMTP configurado, con reenvíos, filtros antispam y cifrado. Solo necesitas definir correctamente los registros NS (Name Server), lo cual es mucho más simple que montar un servidor completo.
Sin embargo, los servicios de terceros presentan limitaciones:
-
Menor control: no podrás gestionar todos los aspectos del correo.
-
Límites de envío: cada proveedor impone un número máximo de correos por día o por hora. Si envías grandes volúmenes (por ejemplo, en entornos corporativos o newsletters), estos límites pueden ser problemáticos.
Si decides crear tu propio servidor, deberás ocuparte de:
-
Cuotas y límites de envío
-
Copias de seguridad
-
Evitar listas negras de spam
-
Permisos de acceso si hay varios usuarios
Un servidor de correo propio ofrece control total, pero exige mayor conocimiento técnico y responsabilidad.
Configuración del servidor de correo Copiar enlace
En esta guía crearemos un servidor de correo en un servidor en la nube de Hostman, usando Ubuntu 20.04 como sistema operativo.
El servidor soportará cifrado, protección antispam y dispondrá de un panel web de administración para gestionar las cuentas.
Preparación del servidor Copiar enlace
Cambia al modo superusuario:
sudo suActualiza los paquetes:
apt update && apt upgradeVerifica el nombre de host del servidor:
hostnameSi no coincide con el dominio deseado:
hostnamectl set-hostname mail.hostname.comConfigura la zona horaria e instala chrony para la sincronización de tiempo:
apt install chrony
timedatectl set-timezone Europe/Athens
Lista de zonas horarias disponibles:
timedatectl list-timezonesHabilita chrony:
systemctl enable chronyAbrir los puertos necesarios Copiar enlace
Usa iptables para abrir los puertos:
-
25, 465 — SMTP (envío)
-
110, 995 — POP3 (recepción)
-
143, 993 — IMAP (recepción)
- 80, 443 — HTTP/HTTPS (acceso web)
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995,80,443 -j ACCEPTGuarda las reglas para que sean persistentes:
netfilter-persistent saveAhora, con el servidor correctamente configurado, podemos proceder a instalar el software necesario para crear un servidor de correo completamente funcional.
Instalación y configuración de Postfix Copiar enlace
Postfix es un MTA (Mail Transfer Agent) de código abierto con arquitectura modular.
Instálalo junto al módulo de integración con MySQL:
apt install postfix postfix-mysqlDurante la instalación: Selecciona Internet Site y define tu FQDN.
Crea un usuario y grupo dedicados:
addgroup -gid 1080 vmailA continuación, cree el usuario vmail y asigne el directorio de inicio a /home/mail:
adduser --home /home/mail -gid 1080 -uid 1080 vmailVerifica los permisos:
ll /homeConfiguración principal de Postfix Copiar enlace
Edita el archivo de configuración:
nano /etc/postfix/main.cfAgrega o modifica:
# Domains we accept mail for
mydestination = localhost.$mydomain, localhost, localhost.localdomain
# Postfix protocol
inet_protocols = ipv4
# Path to the public certificate
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
# Path to the private certificate
smtpd_tls_key_file = /etc/ssl/mail/private.key
Then, add additional options required for Postfix to function correctly:
# Mail storage location
virtual_mailbox_base = /home/mail
# Path to alias maps
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Domain storage format
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
# Mailbox storage format
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Minimum virtual user ID
virtual_minimum_uid = 1080
# UID for the main user handling mail
virtual_uid_maps = static:1080
# GID for the group handling mail
virtual_gid_maps = static:1080
# Register Dovecot as the mail delivery agent
virtual_transport = dovecot
# Enable secure authentication
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
# Enable TLS encryption for outgoing SMTP connections
smtp_use_tls = yes
# Enable TLS support for incoming connections
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
Archivos de mapeo MySQL Copiar enlace
Alias:
nano /etc/postfix/mysql_virtual_alias_maps.cfAñade el siguiente contenido:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Dominios:
nano /etc/postfix/mysql_virtual_domains_maps.cfAgregar:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
Buzones:
nano /etc/postfix/mysql_virtual_mailbox_maps.cfAgregar:
user = postfix
password = postfixPa$$w0rd
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Modificación de master.cf:
nano /etc/postfix/master.cfAgrega:
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}
Generación de certificados de seguridad Copiar enlace
Crea el directorio:
mkdir -p /etc/ssl/mailGenera los certificados:
openssl req -new -x509 -days 1000 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=CY/ST=Limassol/L=Limassol/O=Global Security/OU=IT Department/CN=mail.devnullhost.com"Activa y reinicia Postfix:
systemctl enable postfix && systemctl restart postfixInstalación y configuración de Dovecot Copiar enlace
Dovecot es un servidor IMAP y POP3 de código abierto.
Instálalo junto al módulo MySQL:
apt install dovecot-imapd dovecot-pop3d dovecot-mysqlEdita:
nano /etc/dovecot/conf.d/10-mail.confEn el archivo, especifique la estructura de directorios para almacenar el correo. Usaremos una jerarquía de dominio → usuario:
mail_location = maildir:/home/mail/%d/%u/Configuración de sockets:
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
}
}
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
Edite el archivo de configuración de autenticación de Dovecot:
nano /etc/dovecot/conf.d/10-auth.confReemplace la línea !include auth-system.conf.ext con !include auth-sql.conf.ext, lo que indica que se debe utilizar la autenticación basada en SQL.
Cifrado SSL:
nano /etc/dovecot/conf.d/10-ssl.confssl = required
ssl_cert = </etc/ssl/mail/public.pem
ssl_key = </etc/ssl/mail/private.key
Creación automática de buzones:
nano /etc/dovecot/conf.d/15-lda.confAñade la siguiente línea:
lda_mailbox_autocreate = yesConexión a MySQL:
nano /etc/dovecot/dovecot-sql.conf.extAgregue las siguientes líneas para configurar MySQL:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfixPa$$w0rd
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1080 AS uid, 1080 AS gid FROM mailbox WHERE username = '%u'
Abra el archivo de configuración principal de Dovecot para configurar la interfaz del servidor:
nano /etc/dovecot/dovecot.confEn este archivo, agregue la siguiente línea para escuchar en todas las interfaces de red disponibles:
listen = *Habilita y reinicia Dovecot:
systemctl enable dovecot && systemctl restart dovecotInstalación y configuración de PostfixAdmin Copiar enlace
Requisitos: servidor web, PHP y MySQL.
Instala las extensiones PHP necesarias:
apt install php-mysql php-mbstring php-imapDescarga PostfixAdmin:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gzCree un directorio para PostfixAdmin y extraiga el contenido del archivo:
mkdir -p /var/www/html/postfixadmin && tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1Luego, crea un directorio para almacenar cachés de plantillas:
mkdir /var/www/html/postfixadmin/templates_cEstablezca los permisos correctos para que el servidor web acceda al directorio PostfixAdmin:
chown -R www-data:www-data /var/www/html/postfixadminCrea la base de datos:
mysql -u root
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixPa$$w0rd';
exit;
Configura PostfixAdmin:
nano /var/www/html/postfixadmin/config.local.phpEl contenido del archivo debe ser:
<?php
$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_password'] = 'postfixPa$$w0rd';
$CONF['emailcheck_resolve_domain']='NO';
?>
Abre /postfixadmin/public/setup.php, genera el hash de contraseña, insértalo en el archivo y accede a /postfixadmin/public/login.php.
nano /var/www/html/postfixadmin/config.local.phpActualice la página /postfixadmin/public/setup.php e inicie sesión con la contraseña que usó para generar el hash. Si todo está configurado correctamente, debería ver una página de comprobación de la configuración.
Al final de esta página, encontrará un formulario para crear una cuenta de administrador. Tras crearla correctamente, vaya a /postfixadmin/public/login.php e inicie sesión con las credenciales que acaba de configurar.
Será redirigido al panel de administración de PostfixAdmin.
Crear un buzón en PostfixAdmin Copiar enlace
Desde el panel web:
-
Domain List → New Domain
-
Luego Overview → Create Mailbox
Parámetros de conexión en el cliente de correo:
-
Server: El nombre de host de su servidor
-
IMAP: Port
143, STARTTLS -
POP3: Port
110, STARTTLS -
SMTP: Port
25, STARTTLS -
Login and Password: Las credenciales que especificó al crear el buzón
Conclusión Copiar enlace
En esta guía vimos cómo crear un servidor de correo autogestionado y configurarlo completamente. Un servidor propio te da control total: puedes crear buzones ilimitados, alias y gestionar usuarios libremente.
Todo esto es posible en un servidor en la nube de Hostman, siguiendo paso a paso esta guía para obtener un sistema de correo seguro y funcional.