Configuración de Alias y Dominios Virtuales en Postfix: Guía Completa
Introducción
La gestión de alias de correo electrónico y dominios virtuales en Postfix le permite crear infraestructuras de correo electrónico flexibles y escalables. Ya sea que necesite reenviar correos electrónicos desde múltiples direcciones a un solo buzón, alojar correo electrónico para múltiples dominios en un servidor o crear direcciones catch-all, las capacidades de alias y dominios virtuales de Postfix proporcionan soluciones poderosas.
Los alias de correo electrónico redirigen mensajes de una dirección a otra sin crear buzones separados. Por ejemplo, puede tener [email protected], [email protected] y [email protected] que entreguen todos a un solo buzón [email protected]. Esto simplifica la gestión mientras presenta una estructura de correo electrónico profesional y organizada al mundo exterior.
Los dominios virtuales llevan esto más allá al permitir que un solo servidor de correo maneje correo electrónico para múltiples dominios independientes. Puede alojar correo electrónico para example.com, example.net y client-domain.com todo en un servidor, con cada dominio manteniendo cuentas de usuario y alias completamente separados. Esto es esencial para proveedores de hosting, agencias que gestionan correo electrónico de clientes u organizaciones con múltiples marcas.
Esta guía completa cubre todo, desde alias simples hasta configuraciones complejas de dominios virtuales, incluyendo buzones virtuales, alias virtuales, direcciones catch-all, extensiones de dirección y configuraciones avanzadas de enrutamiento.
Requisitos Previos
Antes de configurar alias y dominios virtuales, asegúrese de tener:
Requisitos del Sistema
- Servidor de correo Postfix funcionando
- Ubuntu 20.04/22.04, Debian 10/11, CentOS 8/Rocky Linux 8 o similar
- Acceso root o sudo
- Configuración básica de Postfix completada
Requisitos del Servidor de Correo
- Postfix instalado y enviando/recibiendo correo
- Dovecot configurado (para buzones virtuales)
- Registros DNS configurados correctamente para todos los dominios
- Comprensión de la configuración actual de correo
Requisitos de Conocimiento
- Competencia en línea de comandos de Linux
- Conocimiento básico de configuración de Postfix
- Comprensión de enrutamiento de correo electrónico
- Habilidades de editor de texto (nano, vim)
Comprensión de Alias vs Dominios Virtuales
Alias Locales
Propósito: Redirigir correo dentro del mismo dominio
Ámbito: Usuarios del sistema y entrega local
Configuración: /etc/aliases
Caso de uso: Configuraciones pequeñas de un solo dominio
Ejemplo:
admin: root
support: admin
sales: admin, sales-team
Alias Virtuales
Propósito: Redirigir correo para dominios virtuales
Ámbito: Múltiples dominios, usuarios virtuales
Configuración: /etc/postfix/virtual
Caso de uso: Hosting multidominio
Ejemplo:
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
Buzones Virtuales
Propósito: Almacenamiento real de buzones para dominios virtuales
Ámbito: Buzones independientes para cada dirección
Configuración: /etc/postfix/vmailbox
Caso de uso: Solución completa de hosting virtual
Ejemplo:
[email protected] example.com/user/
[email protected] example.net/admin/
Paso 1: Configurar Alias Locales
Los alias locales son la forma más simple de reenvío de correo electrónico.
Editar Archivo de Alias
sudo nano /etc/aliases
Sintaxis Básica de Alias
# Format: alias: destination
# One destination
postmaster: root
# Multiple destinations
admin: user1, user2, user3
# Forward to external email
webmaster: [email protected]
# Chain aliases
support: admin
admin: root
root: [email protected]
# Pipe to program
devnull: /dev/null
backups: |"/usr/local/bin/backup-handler.sh"
# Include file
team: :include:/etc/postfix/team-members.txt
Alias Predeterminados Comunes
Agregue estos alias estándar:
# Required aliases
postmaster: root
hostmaster: root
webmaster: root
abuse: root
# Administrative aliases
root: [email protected]
mailer-daemon: postmaster
# Department aliases
sales: [email protected]
support: [email protected]
info: [email protected]
Aplicar Cambios de Alias
Después de editar /etc/aliases:
# Rebuild alias database
sudo newaliases
# Or
sudo postalias /etc/aliases
# Reload Postfix
sudo systemctl reload postfix
Probar Alias Locales
# Send test email
echo "Testing alias" | mail -s "Alias Test" postmaster
# Check delivery
sudo tail -f /var/log/mail.log
Ver Alias Actuales
# List all aliases
cat /etc/aliases | grep -v "^#" | grep -v "^$"
# Search for specific alias
grep "postmaster" /etc/aliases
# Test alias resolution
postmap -q postmaster /etc/aliases
Paso 2: Configurar Dominios de Alias Virtuales
Los dominios de alias virtuales reenvían todo el correo a otras direcciones.
Editar Configuración Principal de Postfix
sudo nano /etc/postfix/main.cf
Agregue o modifique:
# Virtual alias domains
virtual_alias_domains = example.net example.org
virtual_alias_maps = hash:/etc/postfix/virtual
Crear Archivo de Alias Virtuales
sudo nano /etc/postfix/virtual
Agregue alias:
# Format: virtual-address real-address
# Simple forwarding
[email protected] [email protected]
[email protected] [email protected]
# Multiple destinations
[email protected] [email protected], [email protected]
# Forward entire domain
@example.org [email protected]
# User-specific aliases
[email protected] [email protected]
[email protected] [email protected]
# Department aliases
[email protected] [email protected]
[email protected] [email protected]
# External forwarding
[email protected] [email protected]
Compilar y Aplicar
# Compile virtual alias database
sudo postmap /etc/postfix/virtual
# Reload Postfix
sudo systemctl reload postfix
Probar Alias Virtuales
# Send test email
echo "Testing virtual alias" | mail -s "Test" [email protected]
# Check logs
sudo grep "example.net" /var/log/mail.log
# Test alias lookup
postmap -q [email protected] /etc/postfix/virtual
Paso 3: Configurar Dominios de Buzones Virtuales
Los dominios de buzones virtuales proporcionan buzones independientes para cada dirección.
Crear Usuario de Almacenamiento de Correo
# Create virtual mail user
sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail/vmail -m -s /usr/sbin/nologin
# Create mail directory
sudo mkdir -p /var/mail/vmail
sudo chown -R vmail:vmail /var/mail/vmail
sudo chmod -R 770 /var/mail/vmail
Configurar Ajustes Principales de Postfix
sudo nano /etc/postfix/main.cf
Agregue configuración de buzón virtual:
# Virtual mailbox settings
virtual_mailbox_domains = example.com example.net
virtual_mailbox_base = /var/mail/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
# Delivery method
virtual_transport = lmtp:unix:private/dovecot-lmtp
# Mailbox size limits
virtual_mailbox_limit = 0
message_size_limit = 52428800
Crear Archivo de Buzones Virtuales
sudo nano /etc/postfix/vmailbox
Agregue buzones:
# Format: email-address mailbox-path
# Domain: example.com
[email protected] example.com/admin/
[email protected] example.com/user1/
[email protected] example.com/user2/
[email protected] example.com/sales/
# Domain: example.net
[email protected] example.net/admin/
[email protected] example.net/contact/
[email protected] example.net/info/
Las rutas de buzones son relativas a virtual_mailbox_base.
Ruta completa: /var/mail/vmail/example.com/admin/
Crear Archivo de Dominios Virtuales
sudo nano /etc/postfix/vdomains
Liste dominios virtuales:
example.com OK
example.net OK
example.org OK
Actualice main.cf:
sudo nano /etc/postfix/main.cf
Cambie:
virtual_mailbox_domains = hash:/etc/postfix/vdomains
Compilar Bases de Datos
# Compile mailbox database
sudo postmap /etc/postfix/vmailbox
# Compile domains database
sudo postmap /etc/postfix/vdomains
# Compile virtual aliases
sudo postmap /etc/postfix/virtual
# Reload Postfix
sudo systemctl reload postfix
Integrar con Dovecot
Dovecot debe configurarse para usuarios virtuales:
sudo nano /etc/dovecot/conf.d/10-mail.conf
Establecer:
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_uid = vmail
mail_gid = vmail
first_valid_uid = 5000
last_valid_uid = 5000
Variables:
%d= dominio (example.com)%n= nombre de usuario (admin)- Ruta completa:
/var/mail/vmail/example.com/admin/Maildir
Crear Usuarios Virtuales
Para autenticación, cree usuarios en Dovecot:
sudo nano /etc/dovecot/users
Agregue usuarios con contraseñas encriptadas:
[email protected]:{SHA512-CRYPT}$6$rounds=100000$...
[email protected]:{SHA512-CRYPT}$6$rounds=100000$...
[email protected]:{SHA512-CRYPT}$6$rounds=100000$...
Generar contraseñas:
# Generate encrypted password
doveadm pw -s SHA512-CRYPT -p 'SecurePassword123'
# Add user
echo "[email protected]:$(doveadm pw -s SHA512-CRYPT -p 'Password')" | sudo tee -a /etc/dovecot/users
# Set permissions
sudo chmod 640 /etc/dovecot/users
sudo chown root:dovecot /etc/dovecot/users
Paso 4: Configurar Direcciones Catch-All
Las direcciones catch-all reciben correo enviado a cualquier dirección inexistente en un dominio.
Catch-All de Dominio Virtual
sudo nano /etc/postfix/virtual
Agregue:
# Catch-all for example.com
@example.com [email protected]
# Catch-all for example.net
@example.net [email protected]
# Catch-all forwarding to external
@example.org [email protected]
Catch-All de Usuario Específico
# Catch all mail for user
user+*@example.com [email protected]
# Catch all subaddresses
admin+*@example.com [email protected]
Compilar y Aplicar
sudo postmap /etc/postfix/virtual
sudo systemctl reload postfix
Probar Catch-All
# Send to non-existent address
echo "Test catch-all" | mail -s "Test" [email protected]
# Check delivery
sudo tail -f /var/log/mail.log
Deshabilitar Catch-All
Para deshabilitar catch-all para un dominio:
sudo nano /etc/postfix/virtual
Elimine la línea @example.com, o coméntela:
# @example.com [email protected]
Compilar y recargar:
sudo postmap /etc/postfix/virtual
sudo systemctl reload postfix
Paso 5: Configurar Extensiones de Dirección
Las extensiones de dirección (también llamadas plus addressing o subaddressing) permiten a los usuarios crear variaciones ilimitadas de su dirección de correo electrónico.
Formato: [email protected]
Habilitar en Postfix
sudo nano /etc/postfix/main.cf
Agregue:
# Enable address extensions
recipient_delimiter = +
Configurar en Dovecot
sudo nano /etc/dovecot/conf.d/15-lda.conf
Agregue:
protocol lda {
# Enable address extensions
recipient_delimiter = +
# Deliver extensions to main mailbox
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
}
Recargar Servicios
sudo systemctl reload postfix
sudo systemctl reload dovecot
Casos de Uso
Organización de correo electrónico:
[email protected] # Newsletter signups
[email protected] # Online shopping
[email protected] # Social media
[email protected] # Work-related
Rastreo de spam:
[email protected] # Track which companies leak addresses
[email protected]
Filtrado: Cree filtros en el cliente de correo electrónico para ordenar automáticamente los mensajes:
If To contains "user+newsletter"
Move to "Newsletters" folder
Probar Extensiones de Dirección
# Send to extended address
echo "Testing extension" | mail -s "Test" [email protected]
# Verify delivery to main mailbox
# Check [email protected] inbox
Paso 6: Configuración Avanzada de Dominios Virtuales
Múltiples Mapas de Alias Virtuales
Para mejor organización, divida los alias en múltiples archivos:
sudo nano /etc/postfix/main.cf
Configure:
virtual_alias_maps =
hash:/etc/postfix/virtual,
hash:/etc/postfix/virtual-aliases-example-com,
hash:/etc/postfix/virtual-aliases-example-net
Cree archivos separados:
# Example.com aliases
sudo nano /etc/postfix/virtual-aliases-example-com
# Example.net aliases
sudo nano /etc/postfix/virtual-aliases-example-net
Compile todos:
sudo postmap /etc/postfix/virtual-aliases-example-com
sudo postmap /etc/postfix/virtual-aliases-example-net
sudo systemctl reload postfix
Alias Basados en Regex
Para patrones de coincidencia complejos:
sudo nano /etc/postfix/main.cf
Agregue:
virtual_alias_maps =
hash:/etc/postfix/virtual,
regexp:/etc/postfix/virtual-regexp
Cree archivo regex:
sudo nano /etc/postfix/virtual-regexp
Agregue patrones:
# Format: /pattern/ destination
# Catch all admin variants
/^admin[0-9]*@example\.com$/ [email protected]
# Catch all support variants
/^(support|help|assist)@example\.com$/ [email protected]
# Redirect old domain
/^(.+)@old-domain\.com$/ ${1}@new-domain.com
# Convert dots to plus
/^([^+]+)\.([^@]+)@example\.com$/ ${1}+${2}@example.com
No se necesita compilación para mapas regexp. Recargue:
sudo systemctl reload postfix
Catch-All por Dominio con Excepciones
sudo nano /etc/postfix/virtual
Configure:
# Specific addresses (processed first)
[email protected] [email protected]
[email protected] [email protected]
# Catch-all (processed after specific matches)
@example.com [email protected]
Postfix procesa las entradas en orden, por lo que las coincidencias específicas tienen precedencia.
Paso 7: Gestión de Dominios Virtuales
Agregar Nuevo Dominio
# 1. Add to virtual domains
echo "newdomain.com OK" | sudo tee -a /etc/postfix/vdomains
sudo postmap /etc/postfix/vdomains
# 2. Add mailboxes
sudo nano /etc/postfix/vmailbox
Agregue:
[email protected] newdomain.com/admin/
[email protected] newdomain.com/contact/
Compile:
sudo postmap /etc/postfix/vmailbox
Agregue usuarios:
# 3. Add Dovecot users
echo "[email protected]:$(doveadm pw -s SHA512-CRYPT -p 'Password')" | sudo tee -a /etc/dovecot/users
Cree directorio:
# 4. Create mail directory
sudo mkdir -p /var/mail/vmail/newdomain.com
sudo chown -R vmail:vmail /var/mail/vmail/newdomain.com
Configure DNS:
# 5. Add DNS records
# MX record: newdomain.com -> mail.example.com
# A record: mail.newdomain.com -> your-ip
# SPF record: v=spf1 mx a ip4:your-ip ~all
Recargue:
sudo systemctl reload postfix dovecot
Eliminar Dominio
# 1. Remove from virtual domains
sudo nano /etc/postfix/vdomains
# Remove or comment out the domain
sudo postmap /etc/postfix/vdomains
# 2. Remove mailboxes
sudo nano /etc/postfix/vmailbox
# Remove domain mailboxes
sudo postmap /etc/postfix/vmailbox
# 3. Remove users
sudo nano /etc/dovecot/users
# Remove domain users
# 4. Backup and remove mail
sudo tar czf domain-backup.tar.gz /var/mail/vmail/olddomain.com/
sudo rm -rf /var/mail/vmail/olddomain.com/
# 5. Reload
sudo systemctl reload postfix dovecot
Listar Todos los Dominios
# List virtual mailbox domains
postconf virtual_mailbox_domains
# List from file
cat /etc/postfix/vdomains | grep -v "^#"
# Count domains
cat /etc/postfix/vdomains | grep -v "^#" | wc -l
Listar Todos los Buzones
# List all virtual mailboxes
cat /etc/postfix/vmailbox | grep -v "^#"
# List mailboxes for specific domain
grep "@example.com" /etc/postfix/vmailbox
# Count mailboxes
cat /etc/postfix/vmailbox | grep -v "^#" | wc -l
Paso 8: Pruebas y Verificación
Probar Resolución de Alias
# Test local alias
postmap -q postmaster /etc/aliases
# Test virtual alias
postmap -q [email protected] /etc/postfix/virtual
# Test virtual mailbox
postmap -q [email protected] /etc/postfix/vmailbox
# Test domain
postmap -q example.com /etc/postfix/vdomains
Probar Entrega de Correo
# Send to alias
echo "Test alias" | mail -s "Alias Test" [email protected]
# Send to virtual mailbox
echo "Test mailbox" | mail -s "Mailbox Test" [email protected]
# Send to catch-all
echo "Test catchall" | mail -s "Catchall Test" [email protected]
# Send with extension
echo "Test extension" | mail -s "Extension Test" [email protected]
Verificar Logs
# Monitor mail log
sudo tail -f /var/log/mail.log
# Check specific delivery
sudo grep "[email protected]" /var/log/mail.log | tail -20
# Check bounces
sudo grep "bounced" /var/log/mail.log | tail -20
Verificar Creación de Buzones
# List mail directories
sudo ls -la /var/mail/vmail/
# Check specific mailbox
sudo ls -la /var/mail/vmail/example.com/admin/Maildir/
# Check mail files
sudo find /var/mail/vmail/ -name "cur" -type d -exec ls -la {} \;
Solución de Problemas Comunes
Problema 1: Alias No Funciona
Síntomas: El correo electrónico no se reenvía al destino
Diagnóstico:
# Test alias lookup
postmap -q [email protected] /etc/postfix/virtual
# Check logs
sudo grep "[email protected]" /var/log/mail.log
Soluciones:
# Recompile database
sudo postmap /etc/postfix/virtual
# Check syntax
cat /etc/postfix/virtual | grep [email protected]
# Reload Postfix
sudo systemctl reload postfix
Problema 2: Dominio Virtual No Recibe Correo
Síntomas: El correo al dominio virtual rebota
Diagnóstico:
# Check if domain is listed
postconf virtual_mailbox_domains
# Check domain file
grep "example.com" /etc/postfix/vdomains
# Check MX record
dig example.com MX +short
Soluciones:
# Add domain
echo "example.com OK" | sudo tee -a /etc/postfix/vdomains
sudo postmap /etc/postfix/vdomains
# Verify main.cf
sudo postconf | grep virtual_mailbox_domains
# Reload
sudo systemctl reload postfix
Problema 3: Permiso Denegado
Síntomas: Errores "permission denied" en los logs
Diagnóstico:
# Check ownership
sudo ls -la /var/mail/vmail/
# Check processes
ps aux | grep -E "postfix|dovecot"
Soluciones:
# Fix ownership
sudo chown -R vmail:vmail /var/mail/vmail/
# Fix permissions
sudo chmod -R 770 /var/mail/vmail/
# Restart services
sudo systemctl restart postfix dovecot
Problema 4: Catch-All No Funciona
Síntomas: El correo a direcciones inexistentes rebota en lugar de ir al catch-all
Diagnóstico:
# Check virtual aliases
grep "@example.com" /etc/postfix/virtual
# Test lookup
postmap -q [email protected] /etc/postfix/virtual
Soluciones:
# Add catch-all
echo "@example.com [email protected]" | sudo tee -a /etc/postfix/virtual
# Recompile
sudo postmap /etc/postfix/virtual
# Ensure no reject_unverified_recipient
sudo postconf | grep reject_unverified_recipient
# Reload
sudo systemctl reload postfix
Problema 5: Extensiones de Dirección No Se Entregan
Síntomas: El correo a [email protected] rebota
Diagnóstico:
# Check recipient delimiter
postconf recipient_delimiter
# Check Dovecot config
doveconf -n | grep recipient_delimiter
Soluciones:
# Set delimiter in Postfix
sudo postconf -e "recipient_delimiter = +"
# Set in Dovecot
sudo nano /etc/dovecot/conf.d/15-lda.conf
Agregue:
recipient_delimiter = +
Recargue:
sudo systemctl reload postfix dovecot
Mejores Prácticas
1. Organización
- Use nombres de alias descriptivos
- Agrupe alias relacionados
- Documente el propósito de alias complejos
- Mantenga archivos separados para diferentes dominios
2. Seguridad
# Restrict file permissions
sudo chmod 640 /etc/postfix/virtual
sudo chmod 640 /etc/postfix/vmailbox
sudo chmod 640 /etc/dovecot/users
# Set proper ownership
sudo chown root:postfix /etc/postfix/virtual
sudo chown root:postfix /etc/postfix/vmailbox
3. Mantenimiento
- Revise y limpie regularmente los alias no utilizados
- Elimine destinos que rebotan
- Actualice alias cuando cambie el personal
- Haga respaldo de archivos de alias antes de cambios
4. Documentación
Cree un inventario de alias:
sudo nano /etc/postfix/README-aliases.txt
Documente:
Domain: example.com
Purpose: Main company domain
Aliases:
- [email protected] -> forwards to admin-team
- [email protected] -> forwards to CRM system
- [email protected] -> forwards to ticket system
- @example.com -> catch-all to admin (temporary)
Last updated: 2026-01-11
Contact: [email protected]
5. Pruebas
Después de cualquier cambio:
# 1. Check syntax
sudo postfix check
# 2. Test lookups
postmap -q [email protected] /etc/postfix/virtual
# 3. Send test email
echo "Test" | mail -s "Test" [email protected]
# 4. Verify in logs
sudo tail -f /var/log/mail.log
Conclusión
Ahora tiene una configuración completa de alias y dominios virtuales para Postfix, permitiéndole gestionar enrutamiento de correo electrónico complejo, alojar múltiples dominios y crear esquemas de direccionamiento flexibles. Esta configuración proporciona la base para una infraestructura de correo electrónico profesional y escalable.
Logros Clave
- Alias Locales: Reenvío simple dentro del dominio principal
- Alias Virtuales: Reenvío entre dominios y multidominio
- Buzones Virtuales: Hosting completo de dominios virtuales
- Direcciones Catch-All: Flexibilidad en la recepción de correo
- Extensiones de Dirección: Organización y filtrado mejorados
Próximos Pasos
- Agregar más dominios: Expandir el hosting virtual según sea necesario
- Implementar automatización: Scripts para agregar usuarios/dominios
- Configurar cuotas: Limitar tamaños de buzón por usuario/dominio
- Configurar webmail: Acceso basado en navegador (Roundcube/Rainloop)
- Implementar respaldo: Respaldo automatizado de correo y configuraciones
Recordatorios Importantes
- Compilar después de cambios: Siempre ejecute
postmapdespués de editar archivos de mapas - Recargar servicios: Ejecute
systemctl reload postfixpara aplicar cambios - Pruebe exhaustivamente: Verifique que cada alias y dominio funcione correctamente
- Documente la configuración: Mantenga registros de alias y sus propósitos
- Respalde regularmente: Proteja configuraciones de alias y datos de buzones
Con estas configuraciones de alias y dominios virtuales en su lugar, tiene un sistema de correo electrónico flexible y escalable capaz de crecer con sus necesidades mientras mantiene la organización y manejabilidad.


