Relay SMTP para sistemas de facturación y aplicaciones legacy — cómo integrar envío serio sin tocar código de aplicación
Por Wilfred Teague · Publicado el 22 de abril de 2019 · Lectura aproximada 6 min
La conversación va así: "necesitamos mejorar el envío de facturas que sale de WHMCS". El equipo técnico empieza a estimar reescritura del módulo de email para usar API REST de algún proveedor moderno, presupuesta semanas de trabajo, planifica QA. La realidad es que la mayoría de sistemas de facturación, ERPs, tiendas Magento, plataformas de hosting cPanel/Plesk, y aplicaciones legacy hablan SMTP nativamente — están diseñados así desde sus orígenes. Migrar a un relay SMTP especializado es cambio de configuración de minutos, no proyecto de ingeniería de semanas. Este post cubre los casos típicos y cómo se hace.
Por qué los sistemas de facturación hablan SMTP de origen
WHMCS (estándar para hosting), Magento (e-commerce), Odoo (ERP open source), SAP (ERP enterprise), QuickBooks server edition, sistemas de gestión de farmacias, plataformas de citas médicas, software jurídico de tribunales — todos comparten una característica: fueron diseñados antes de que las APIs REST de email fueran ubicuas. La integración de envío en estos sistemas se construyó sobre SMTP estándar porque era — y sigue siendo — el protocolo universal.
Esto significa que estos sistemas tienen, por diseño, el campo de configuración SMTP en algún lugar de su panel de administración: host, port, username, password, encryption (TLS/SSL). Para apuntar el sistema a un relay SMTP especializado, basta con cambiar esos campos. La aplicación misma no necesita modificación.
Caso A — WHMCS (sistema de billing y soporte para hosting)
WHMCS es probablemente el sistema de billing más usado en hosting providers, dominio donde los emails de facturas, recordatorios de renovación, tickets de soporte y notificaciones de cuentas son críticos al negocio. La configuración SMTP en WHMCS está en Setup → General Settings → Mail:
- Mail Type: SMTP
- SMTP Host: relay.proveedor.com (el endpoint del proveedor)
- SMTP Port: 587
- SMTP SSL Type: TLS
- SMTP Username: el usuario de la cuenta del relay
- SMTP Password: la contraseña
Tras guardar, WHMCS envía todos sus emails (facturas, soportes, notifications de admin) vía el relay configurado. Es trabajo de minutos. Las funcionalidades específicas de WHMCS (templates, hooks, automation) siguen funcionando exactamente igual — el cambio es solo de capa de transporte.
Recomendación adicional para WHMCS: configurar también las cabeceras Return-Path y From correctamente desde admin para que SPF y DKIM aligneen. Authorize Hosting tiene experiencia específica con WHMCS por nuestra propia infraestructura — los detalles operativos están bien probados.
Caso B — Magento y e-commerce con plugins
Magento (ahora Adobe Commerce) tiene módulo de SMTP integrado. Para configurar relay externo, ir a Stores → Configuration → Advanced → System → Mail Sending Settings:
- Disable Email Communications: No
- Host: relay.proveedor.com
- Port (25): 587
- Set Return-Path: Yes (importante para alignment)
Para versiones de Magento sin SMTP nativo o configuración limitada, el ecosystem tiene módulos populares (Magento SMTP por Mageplaza, MagePlaza Free SMTP). Estos añaden la configuración completa: TLS, autenticación, templates de fallback, logs de envío.
WooCommerce (plugin de WordPress para e-commerce) tiene patrón similar pero a nivel WordPress: el plugin "WP Mail SMTP" o "FluentSMTP" añade la configuración SMTP a WordPress completo, lo que afecta a WooCommerce y a cualquier otro plugin que envíe emails. Configuración igual: host, port, encryption, credentials.
Caso C — Sistemas Java EE y Spring
Aplicaciones empresariales en Java EE típicamente usan javax.mail (legacy) o jakarta.mail (post-rename). La configuración va en application properties, server config (JBoss, WebLogic, WildFly), o environment variables. Ejemplo Spring Boot en application.properties:
spring.mail.host=relay.proveedor.com
spring.mail.port=587
spring.mail.username=usuario
spring.mail.password=contraseña
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
El código Java que usa JavaMailSender sigue funcionando idéntico. Solo cambia el transport. Para Java EE clásico (sin Spring), la configuración va en JNDI o en mail-session.xml según el container. Patrón idéntico.
Caso D — PHP legacy con scripts directos
Aplicaciones PHP que usan mail() directamente (la función nativa) son el escenario más común y problemático en hosting compartido. mail() envía vía sendmail/postfix local del servidor — significa que el envío sale desde la IP compartida del hosting, frecuentemente blacklisted, sin autenticación seria, sin tracking de bounces.
La solución limpia es reemplazar mail() con PHPMailer o Symfony Mailer apuntados al relay. PHPMailer ejemplo mínimo:
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'relay.proveedor.com';
$mail->SMTPAuth = true;
$mail->Username = 'usuario';
$mail->Password = 'contraseña';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('noreply@su-empresa.com', 'Sistema');
$mail->addAddress('cliente@example.com');
$mail->Subject = 'Confirmación de pedido';
$mail->Body = 'Su pedido ha sido procesado correctamente.';
$mail->send();
Para aplicaciones legacy con muchas llamadas a mail() dispersas por el código, hay wrappers que reemplazan mail() globalmente con PHPMailer manteniendo la misma interfaz. Útil para evitar refactor masivo.
Caso E — ERPs y sistemas de gestión empresarial
Odoo (ERP open source con presencia fuerte en mercado hispanohablante): configuración en Settings → General Settings → Email. Outgoing Mail Servers permite definir relay externo. Idéntico para envío de facturas, payslips, notificaciones de inventario, alertas a clientes.
SAP (Business One, ERP S/4HANA): configuración SMTP en SAP Mail Server settings. La complejidad del SAP no afecta la configuración de relay — es campo de configuración de transporte.
Software jurídico de tribunales, plataformas de gestión hospitalaria, sistemas de gestión académica universitaria: todos tienen módulos SMTP configurables. La búsqueda típica en su documentación es "SMTP configuration" o "outgoing mail server" — todos lo soportan porque es requisito básico operativo.
Las dos cosas que hay que verificar tras configurar
Independientemente del sistema, dos verificaciones son obligatorias después de cambiar el SMTP:
Verificación 1 — autenticación pasa. Enviar un email de prueba al sistema (registrar usuario nuevo, generar factura test, enviar notification manual). Comprobar que el destinatario lo recibe con SPF y DKIM pasando. Herramienta: mail-tester.com da puntuación inmediata. Si pasa con 8+ puntos, autenticación está alineada. Si pasa con menos, revisar custom DKIM del proveedor para que firme con el dominio del cliente (no del proveedor) — esto es el error más frecuente.
Verificación 2 — bounce processing funciona. Enviar un email a una dirección obviamente inválida (test@dominio-que-no-existe-12345.com). Verificar que el sistema captura el bounce, lo loguea, y la dirección queda marcada para no recibir futuros emails. Si el sistema no procesa bounces (típico en aplicaciones legacy), el relay especializado debería al menos absorber el procesamiento internamente y reportar vía dashboard. Sin bounce processing, las listas se degradan rápido.
Cuándo conviene relay simple y cuándo conviene capa adicional
Para sistemas de facturación y aplicaciones legacy, relay SMTP simple cubre el 90% de casos sin más. La aplicación habla SMTP, el relay entrega bien al receptor final, los bounces se procesan, deliverability es estable.
El 10% restante son casos donde la aplicación necesita observabilidad mensaje a mensaje que SMTP estándar no entrega: facturación que necesita confirmar al CFO que cada factura específica fue abierta, sistema de tickets de soporte que quiere alertar al agente cuando el cliente abrió la respuesta. En esos casos hay dos opciones: webhooks específicos del relay (la mayoría de relays serios los proporcionan configurables), o capa adicional de email API REST para los flujos específicos donde la observabilidad es funcional.
Para la mayoría de migraciones de billing/legacy a relay especializado, el camino es claro: cambiar configuración SMTP, verificar autenticación y bounce processing, monitorear deliverability durante 2 semanas, declarar la migración exitosa. Sin reescritura de código de aplicación. Sin proyecto de ingeniería. Esto es valor real del relay SMTP estándar — convierte una decisión que parece grande en cambio operativo trivial.
¿Necesita ayuda con infraestructura email seria?
Authorize Hosting opera infraestructura email para equipos que se toman en serio sus envíos desde 2003. Relay SMTP, Email API, PowerMTA gestionado, servidores dedicados y deliverability gestionada con soporte directo en español.