Descripción del problema
Cuando tienes un servidor Plesk que gestiona el hosting y DNS de un dominio, pero el correo electrónico está alojado en un servicio externo (como Office 365, Google Workspace, etc.), puedes encontrarte con este error al intentar enviar correos desde otros dominios del mismo servidor:
User unknown in virtual alias tableEscenario típico
- Servidor Plesk: Gestiona hosting y DNS para
dominio.com - Correo externo: Office 365/Outlook maneja los buzones de
dominio.com - Problema: Otros dominios en el mismo Plesk no pueden enviar correos a
dominio.com - Causa: Postfix intenta entregar el correo localmente en lugar de consultar los registros MX externos
¿Por qué ocurre este error?
Postfix (el servidor de correo de Plesk) considera que si un dominio está alojado en el servidor (aunque solo sea para hosting/DNS), debe entregar el correo localmente. Esto ocurre porque:
- El dominio existe en las tablas virtuales de Postfix (
/var/spool/postfix/plesk/virtual) - Postfix consulta
virtual_alias_domainsantes quetransport_maps - Encuentra el dominio como «local» y no consulta los registros MX externos
- Intenta buscar el buzón localmente y falla con «User unknown»
Diagnóstico
1. Verifica si el dominio está en las tablas virtuales:
postmap -q tudominio.com hash:/var/spool/postfix/plesk/virtualSi devuelve algo (como «1»), el dominio está registrado como virtual local.
2. Verifica la configuración actual:
postconf virtual_alias_domainsSi muestra virtual_alias_domains = $virtual_alias_maps, ese es el problema.
3. Verifica que los MX externos estén configurados:
dig tudominio.com MX +shortDebe mostrar los servidores de correo externos (ej: tudominio-com.mail.protection.outlook.com)
Solución completa
Paso 1: Desactivar el servicio de correo en Plesk
- Accede a Plesk → Sitios web y dominios → tudominio.com
- Ve a Correo → Configuración de correo
- Selecciona «No configurado»
- Guarda los cambios
Paso 2: Configurar transport maps
Añade el dominio al archivo de transporte para forzar entrega externa:
echo "tudominio.com smtp:" >> /var/spool/postfix/plesk/transport
postmap /var/spool/postfix/plesk/transportPaso 3: Modificar virtual_alias_domains
Edita la configuración principal de Postfix:
vi /etc/postfix/main.cfBusca la sección de configuraciones virtuales (cerca de estas líneas):
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailboxAñade esta línea justo después:
virtual_alias_domains =Importante: Déjala vacía (sin valor después del =). Esto desactiva el comportamiento por defecto donde Postfix trata todos los dominios en virtual_alias_maps como locales.
Paso 4: Verificar y recargar
# Verifica la nueva configuración
postconf virtual_alias_domains
# Debe mostrar:
# virtual_alias_domains =
# Verifica que el transport esté activo
postmap -q tudominio.com hash:/var/spool/postfix/plesk/transport
# Debe devolver:
# smtp:
# Recarga Postfix
postfix reloadPaso 5: Prueba el envío
Intenta enviar un correo desde cualquier dominio del servidor hacia el dominio con correo externo. Debería funcionar correctamente.
Casos especiales
Si el dominio es tu servidor DNS maestro
Si el dominio (ej: merakia.es) es utilizado como servidor DNS maestro con subdominios como ns1.merakia.es y ns2.merakia.es, NO intentes eliminarlo de las tablas de Plesk. La solución de virtual_alias_domains = es la correcta en este caso.
Si tienes múltiples dominios con correo externo
Añade cada dominio al archivo transport:
echo "dominio1.com smtp:" >> /var/spool/postfix/plesk/transport
echo "dominio2.com smtp:" >> /var/spool/postfix/plesk/transport
echo "dominio3.com smtp:" >> /var/spool/postfix/plesk/transport
postmap /var/spool/postfix/plesk/transport
postfix reloadSi tienes subdominios con correo
Si subdominios como subdominio.tudominio.com también usan correo externo, añádelos también al transport:
echo "subdominio.tudominio.com smtp:" >> /var/spool/postfix/plesk/transport
postmap /var/spool/postfix/plesk/transportVerificación de que funciona
Después de aplicar los cambios, envía un correo de prueba y verifica los logs:
tail -f /var/log/maillogDeberías ver algo como:
postfix/smtp[12345]: Connecting to tudominio-com.mail.protection.outlook.com[X.X.X.X]:25
postfix/smtp[12345]: 1234ABCD: to=<usuario@tudominio.com>, relay=tudominio-com.mail.protection.outlook.com[X.X.X.X]:25, status=sentEsto confirma que Postfix está entregando el correo a los servidores externos correctamente.
Troubleshooting
El dominio sigue apareciendo en las tablas virtuales
Esto es normal y no es un problema. Lo importante es que virtual_alias_domains = esté vacío, lo que hace que Postfix ignore esas tablas para el enrutamiento.
Los correos se quedan en cola
Verifica la cola de correos:
mailqSi hay correos atascados, verifica:
- Conectividad con los servidores MX externos:
telnet tudominio-com.mail.protection.outlook.com 25 - Que el firewall permita conexiones salientes al puerto 25
- Que tu servidor no esté en listas negras (RBL)
Error: «Relay access denied»
Si recibes este error, verifica que relay_domains esté correctamente configurado:
postconf relay_domainsDebe estar vacío o no incluir el dominio problemático.
Resumen de la solución
La clave está en dos configuraciones fundamentales:
- Transport maps: Indica a Postfix que use SMTP externo para el dominio
echo "tudominio.com smtp:" >> /var/spool/postfix/plesk/transport postmap /var/spool/postfix/plesk/transport - Virtual alias domains vacío: Fuerza a Postfix a consultar transport_maps primero
# En /etc/postfix/main.cf virtual_alias_domains =
Con estas dos configuraciones, Postfix dejará de intentar entregar localmente y consultará los registros MX externos correctamente.
Configuración final en main.cf
Tu configuración debe quedar así:
# Configuración de dominios virtuales
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailbox
virtual_alias_domains =
# Transport maps para dominios externos
transport_maps = hash:/var/spool/postfix/plesk/transportNotas importantes
- ✅ Esta configuración NO afecta otros dominios con correo en Plesk
- ✅ NO necesitas eliminar el dominio de Plesk
- ✅ El hosting y DNS del dominio siguen funcionando normalmente
- ✅ Solo cambia el comportamiento del enrutamiento de correo
- ⚠️ Asegúrate de hacer backup de
main.cfantes de modificarlo
Aplicable a: Plesk Obsidian, Postfix 3.x





