- ¿Cómo puedes automatizar una campaña de correo electrónico personalizada con LLM en un VPS?
- Arquitectura general: automatización de la generación de campañas de correo electrónico personalizadas con LLM ejecutándose en VPS
- Requisitos previos y selección del servidor
- Implementación práctica: paso a paso
- Configuración de correo electrónico y capacidad de entrega
- Seguridad y privacidad
- Monitoreo, manejo de rebotes y métricas
- Escalabilidad y optimización de modelos
- Comparar ubicaciones y recomendar campañas
- Lista de verificación de implementación (paso a paso)
- Consejos prácticos para diferentes equipos
- Conclusión
- Preguntas frecuentes
¿Cómo puedes automatizar una campaña de correo electrónico personalizada con LLM en un VPS?
Esta guía técnica paso a paso muestra cómo implementar un LLM en un servidor VPS o en la nube, generar textos de correo electrónico personalizados y ejecutar campañas de envío a escala de manera segura y confiable configurando correctamente los registros MTA y DNS.
Arquitectura general: automatización de la generación de campañas de correo electrónico personalizadas con LLM ejecutándose en VPS
La arquitectura típica incluye los siguientes componentes, cada uno de los cuales tiene una función específica en la generación, puesta en cola y envío de correos electrónicos:
- Servidor de inferencia LLM (en VPS/GPU Cloud) — Implementar el modelo para producir contenido personalizado.
- API de aplicación (FastAPI/Flask) — Interfaz entre el banco de datos, LLM y la cola de envío.
- Cola de mensajes y trabajador (Redis + Celery o RabbitMQ) — Envío de fondo y gestión de precios.
- Retransmisión MTA o SMTP (Postfix/Haraka o servicio externo como Mailgun/Sendgrid) — Envío de correo electrónico real.
- Monitoreo y registro (Prometheus + Grafana + ELK) y gestión de rebotes.
- registros DNS:SPF, DKIM, DMARC y PTR para IP dedicada.
Ventajas de implementar en un servidor VPS o en la nube:
- Control total sobre los datos y el modelo — Importante para la privacidad y el cumplimiento.
- Capacidad de utilizar GPU Cloud Para inferir modelos grandes.
- Gestión de asignación de IP y calentamiento Para mejorar la capacidad de entrega.
- Distribución geográfica Utilizando más de 85 ubicaciones para reducir la latencia.
Requisitos previos y selección del servidor
Selección de hardware y ubicación
Para modelos grandes (7B/13B+) Se recomienda utilizar una GPU de servidor con 16–48 GB de VRAM (p. ej., A100/RTX 3090/4090). Para modelos más pequeños o cuantizados, como Llama-2-7B q4_0 Puedes utilizar una CPU con 32+ GB de RAM.
Ubicación: Para aumentar la entrega en la bandeja de entrada local, la IP de la misma región geográfica puede ayudar; pero para la capacidad de entrega general, el bloqueo de IP y su historial son más importantes.
Software
Elementos de software sugeridos:
- Docker, Docker Compose o Kubernetes (para escalar).
- inferencia de generación de texto (TGI) o vLLM para inferencia; rutas más ligeras como GGML/llama.cpp para servidores de CPU.
- FastAPI para API, Celery + Redis para cola, Postfix/Haraka o relé SMTP para envío.
Implementación práctica: paso a paso
Instalación básica (ejemplo Ubuntu)
Instrucciones para instalar Docker en Ubuntu:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now dockerEjemplo de Docker Compose para LLM + API + Redis
Una versión simple que ejecuta TGI como inferencia y una aplicación FastAPI:
version: "3.8"
services:
tgi:
image: ghcr.io/oobabooga/text-generation-inference:latest
ports:
- "8080:8080"
volumes:
- ./models:/models
environment:
- MODEL_ID=/models/your-model
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
api:
image: yourrepo/email-llm-api:latest
build: ./api
ports:
- "8000:8000"
environment:
- TGI_URL=http://tgi:8080
- REDIS_URL=redis://redis:6379
depends_on:
- tgi
- redis
redis:
image: redis:6
ports:
- "6379:6379"Ejemplo de API simple (Python + FastAPI): Llamada y formato LLM
Fragmento de código de muestra para generar contenido desde TGI y ponerlo en cola para enviarlo en segundo plano:
from fastapi import FastAPI, BackgroundTasks
import requests, smtplib
from jinja2 import Template
app = FastAPI()
def send_email(smtp_host, smtp_port, user, password, to, subject, body):
import smtplib
from email.mime.text import MIMEText
msg = MIMEText(body, "html")
msg["Subject"] = subject
msg["From"] = user
msg["To"] = to
with smtplib.SMTP(smtp_host, smtp_port) as s:
s.starttls()
s.login(user, password)
s.sendmail(user, [to], msg.as_string())
@app.post("/generate-and-send")
def generate_and_send(payload: dict, background_tasks: BackgroundTasks):
tgi_resp = requests.post("http://tgi:8080/generate", json={
"prompt": f"Create a personalized marketing email for {payload['name']} about {payload['product']}",
"max_new_tokens": 200
}).json()
email_body = tgi_resp["generated_text"]
template = Template(email_body)
final = template.render(**payload)
background_tasks.add_task(send_email, "smtp.local", 587, "[email protected]", "smtp-pass", payload["email"], "پیشنهاد ویژه", final)
return {"status": "queued"}Configuración de correo electrónico y capacidad de entrega
SPF, DKIM, DMARC
Registros de muestra y pasos clave:
- FPS: Registro TXT en DNS con valor de muestra:
"v=spf1 ip4:YOUR.IP.ADD.RESS include:spf.yourrelay.com -all" - DKIM: Generación de claves con OpenDKIM:
opendkim-genkey -t -s mail -d example.com - DMARC: Registro de muestra:
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"
PTR, IP dedicada y calentamiento
PTR (DNS inverso) Debería devolver el nombre de host del correo electrónico.
Calentamiento: Utilice una IP dedicada y un programa de calentamiento: envíe inicialmente cantidades limitadas (por ejemplo, 50 a 200 correos electrónicos por día) y aumente gradualmente para evitar bloqueos.
Limitación de velocidad y puesta en cola
Ejemplo de configuración de Postfix para limitación de velocidad y conexión:
smtpd_client_message_rate_limit = 100
smtpd_client_connection_count_limit = 10Para campañas grandes, generalmente es mejor usar un relé SMTP confiable y dejar que la aplicación solo controle la cola de envío según las restricciones del proveedor.
Seguridad y privacidad
TLS: Envíe siempre SMTP con STARTTLS o SMTPS. Para Postfix en main.cf:
smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pemAlmacenamiento de claves y tokens: Utilice Vault o Secret Manager.
Cifrado de datos sensibles: En PostgreSQL, puede utilizar pgcrypto o cifrado a nivel de campo.
Monitoreo, manejo de rebotes y métricas
Manejo de rebotes: Recibir un rebote a través de VERP o un buzón específico es necesario para procesar y actualizar el estado en la base de datos.
KPI: tasa de entrega, tasa de apertura, tasa de clics, tasa de rebote, quejas de spam.
Monitoreo del sistema: Prometheus para CPU/GPU/VRAM, paneles de Grafana para inferencia de latencia, longitud de cola y métricas de éxito/fracaso.
Escalabilidad y optimización de modelos
Uso de GPU Cloud y cuantificación
Para modelos grandes, se recomienda GPU Cloud. La cuantificación (4/8 bits) y el uso de técnicas como vLLM o Triton pueden proporcionar una reducción de memoria y un aumento del rendimiento de hasta 4 a 10 veces.
Almacenamiento en caché de productos y plantillas de solicitud
Para reducir el costo de cada llamada de modelo, guarde en caché las partes de texto que sean repetitivas y utilice plantillas de solicitud y métodos seguros para reemplazar los campos PII.
Comparar ubicaciones y recomendar campañas
- Audiencia local: Si la mayoría de los destinatarios están en el mismo país/continente, un VPS en la misma región puede reducir la latencia y, a veces, aumentar la interoperabilidad.
- Entrega a los principales proveedores (Gmail, Yahoo): Más importante que la ubicación es el historial de bloqueo de IP y la configuración de DNS.
- Protección contra ataques: El uso de servidores anti-DDoS y redes BGP es esencial para la continuidad del servicio durante un ataque.
Lista de verificación de implementación (paso a paso)
- Seleccione la ubicación y el tipo de servidor (GPU vs CPU) según el modelo.
- Configuración de un VPS e instalación de Docker/Docker Compose.
- Implementación del servidor de inferencia LLM (TGI/vLLM) y la API.
- Configuración de cola (Redis + Celery) y trabajadores.
- Configure un MTA válido o seleccione un relé SMTP válido.
- Genere una clave DKIM y agregue registros SPF, DKIM, DMARC.
- Configuración de TLS con certbot y configuración de PTR.
- Realizar el calentamiento IP según lo programado (7 a 14 días).
- Monitoreo activo y procesamiento de rebotes.
- Pruebas A/B y medición de KPI.
Consejos prácticos para diferentes equipos
- Para DevOps: Utilice IaC (Terraform o Ansible) para la implementación de redes y DNS y utilice el registro de contenedores para almacenar imágenes.
- Para marketing: Utilice métricas de entrega y participación para establecer indicaciones y segmentar objetivos.
- Por seguridad: Restrinja el acceso a la API de LLM con listas de direcciones IP permitidas y límites de velocidad.
Conclusión
La automatización de la generación de campañas de correo electrónico personalizadas LLM en VPS combina la potencia de los modelos de lenguaje, la arquitectura de colas y la infraestructura de correo electrónico. Al elegir la ubicación adecuada entre más de 85 ubicaciones globales, usar servidores GPU para la inferencia y ajustar las políticas de seguridad y SPF/DKIM/DMARC, las campañas pueden ejecutarse con mayores tasas de apertura y conversión y un menor riesgo.
Si necesita consultar la configuración detallada (CPU/GPU, ubicación, IP dedicada y plan de calentamiento), puede aprovechar las opciones de alojamiento y configuración profesional disponibles en los servicios o consultar con el equipo técnico.





