Learning Center
Servicios de Webmail

Cómo configurar tu propio servidor de correo electrónico

27 oct 2025
Hostman Team
Hostman Team

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 su

Actualiza los paquetes:

apt update && apt upgrade

Verifica el nombre de host del servidor:

hostname

Si no coincide con el dominio deseado:

hostnamectl set-hostname mail.hostname.com

Configura 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-timezones

Habilita chrony:

systemctl enable chrony

Abrir 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 ACCEPT

Guarda las reglas para que sean persistentes:

netfilter-persistent save

Ahora, 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-mysql

Durante la instalación: Selecciona Internet Site y define tu FQDN.

Crea un usuario y grupo dedicados:

addgroup -gid 1080 vmail

A continuación, cree el usuario vmail y asigne el directorio de inicio a /home/mail:

adduser --home /home/mail -gid 1080 -uid 1080 vmail

Verifica los permisos:

ll /home

Configuración principal de Postfix
Copiar enlace

Edita el archivo de configuración:

nano /etc/postfix/main.cf

Agrega 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.cf

Añ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.cf

Agregar:

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.cf

Agregar:

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.cf

Agrega:

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/mail

Genera 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 postfix

Instalació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-mysql

Edita:

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

En 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.conf

Reemplace 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.conf
ssl = 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.conf

Añade la siguiente línea:

lda_mailbox_autocreate = yes

Conexión a MySQL:

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

Agregue 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.conf

En 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 dovecot

Instalació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-imap

Descarga PostfixAdmin:

wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz

Cree 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 1

Luego, crea un directorio para almacenar cachés de plantillas:

mkdir /var/www/html/postfixadmin/templates_c

Establezca los permisos correctos para que el servidor web acceda al directorio PostfixAdmin:

chown -R www-data:www-data /var/www/html/postfixadmin

Crea 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.php

El 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.php

Actualice 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.