- Wie kann man eine personalisierte E-Mail-Kampagne mit LLM auf einem VPS automatisieren?
- Gesamtarchitektur – Automatisierte Generierung personalisierter E-Mail-Kampagnen mit LLM auf einem VPS
- Voraussetzungen und Serverauswahl
- Praktische Umsetzung – Schritt für Schritt
- E-Mail-Einstellungen und Zustellbarkeit
- Sicherheit und Datenschutz
- Überwachung, Bounce-Verarbeitung und Kennzahlen
- Skalierbarkeit und Modelloptimierung
- Standorte vergleichen und Kampagnen empfehlen
- Checkliste für die Umsetzung (Schritt für Schritt)
- Praktische Tipps für verschiedene Teams
- Abschluss
- Häufig gestellte Fragen
Wie kann man eine personalisierte E-Mail-Kampagne mit LLM auf einem VPS automatisieren?
Diese technische Schritt-für-Schritt-Anleitung zeigt, wie man ein LLM auf einem VPS oder Cloud-Server einsetzt, personalisierte E-Mail-Texte generiert und Versandkampagnen in großem Umfang sicher und zuverlässig durchführt, indem man die MTA- und DNS-Einträge richtig konfiguriert.
Gesamtarchitektur – Automatisierte Generierung personalisierter E-Mail-Kampagnen mit LLM auf einem VPS
Die typische Architektur umfasst die folgenden Komponenten, von denen jede eine spezifische Rolle beim Generieren, Einreihen und Versenden von E-Mails hat:
- LLM-Inferenzserver (auf VPS/GPU-Cloud) — Das Modell wird implementiert, um personalisierte Inhalte zu erstellen.
- Anwendungs-API (FastAPI/Flask) — Schnittstelle zwischen der Datenbank, LLM und der Sendewarteschlange.
- Nachrichtenwarteschlange und Worker (Redis + Celery oder RabbitMQ) — Hintergrundversand und Preisverwaltung.
- MTA oder SMTP-Relay (Postfix/Haraka oder externer Dienst wie Mailgun/Sendgrid) — Tatsächlicher E-Mail-Versand.
- Überwachung und Protokollierung (Prometheus + Grafana + ELK) und Bounce-Management.
- DNS-EinträgeSPF, DKIM, DMARC und PTR für dedizierte IP-Adressen.
Vorteile der Bereitstellung auf einem VPS oder Cloud-Server:
- Volle Kontrolle über Daten und Modell — Wichtig für Datenschutz und Compliance.
- Fähigkeit zur Nutzung der GPU-Cloud Zur Ableitung großer Modelle.
- IP-Zuweisung und Warm-up-Management Zur Verbesserung der Zustellbarkeit.
- Geografische Verteilung Nutzung von mehr als 85 Standorten zur Reduzierung der Latenz.
Voraussetzungen und Serverauswahl
Hardware- und Standortauswahl
Für große Modelle (7B/13B+) Es wird empfohlen, eine Server-GPU mit 16–48 GB VRAM (z. B. A100/RTX 3090/4090) zu verwenden. Für kleinere oder quantisierte Modelle wie z. B. LLama-2-7B q4_0 Sie können eine CPU mit mindestens 32 GB RAM verwenden.
Standort: Um die Zustellbarkeit im lokalen Posteingang zu verbessern, kann eine IP-Adresse aus derselben geografischen Region hilfreich sein; für die allgemeine Zustellbarkeit sind jedoch der IP-Block und seine Historie wichtiger.
Software
Empfohlene Softwareelemente:
- Docker, Docker Compose oder Kubernetes (für Skalierbarkeit).
- Textgenerierungs-Inferenz (TGI) oder vLLM für die Inferenz; leichtere Wege wie GGML/llama.cpp für CPU-Server.
- FastAPI für die API, Celery + Redis für die Warteschlange, Postfix/Haraka oder SMTP-Relay für den Versand.
Praktische Umsetzung – Schritt für Schritt
Grundlegende Installation (Ubuntu-Beispiel)
Anleitung zur Installation von Docker unter Ubuntu:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now dockerDocker Compose-Beispiel für LLM + API + Redis
Eine einfache Version, die TGI als Inferenz und eine FastAPI-Anwendung ausführt:
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"Einfaches API-Beispiel (Python + FastAPI) — LLM-Aufruf und Formatierung
Beispielcode-Snippet zum Generieren von Inhalten mit TGI und zum Einreihen in eine Warteschlange zum Senden im Hintergrund:
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"}E-Mail-Einstellungen und Zustellbarkeit
SPF, DKIM, DMARC
Beispielhafte Aufzeichnungen und wichtige Schritte:
- Lichtschutzfaktor: TXT-Eintrag im DNS mit Beispielwert:
"v=spf1 ip4:YOUR.IP.ADD.RESS include:spf.yourrelay.com -all" - DKIM: OpenDKIM wird verwendet. Schlüsselgenerierung:
opendkim-genkey -t -s mail -d example.com - DMARC: Beispieldatensatz:
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"
PTR, dedizierte IP und Aufwärmen
PTR (Reverse-DNS) Es sollte den Hostnamen der E-Mail-Adresse zurückgeben.
Sich warm laufen: Verwenden Sie eine dedizierte IP-Adresse und ein Aufwärmprogramm: Versenden Sie zunächst nur begrenzte Mengen (z. B. 50–200 E-Mails pro Tag) und erhöhen Sie diese schrittweise, um eine Sperrung zu vermeiden.
Ratenbegrenzung und Warteschlangen
Beispielkonfiguration für Postfix zur Begrenzung von Datenrate und Verbindungen:
smtpd_client_message_rate_limit = 100
smtpd_client_connection_count_limit = 10Bei großen Kampagnen ist es in der Regel besser, einen vertrauenswürdigen SMTP-Relay-Server zu verwenden und die Sendewarteschlange nur auf der Anwendungsseite gemäß den Beschränkungen des Anbieters zu steuern.
Sicherheit und Datenschutz
TLS: Senden Sie SMTP-Pakete immer mit STARTTLS oder SMTPS. Für Postfix in main.cf:
smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pemSchlüssel- und Token-Speicherung: Verwenden Sie Vault oder Secret Manager.
Verschlüsselung sensibler Daten: In PostgreSQL können Sie pgcrypto oder die Verschlüsselung auf Feldebene verwenden.
Überwachung, Bounce-Verarbeitung und Kennzahlen
Bounce-Behandlung: Der Empfang einer Unzustellbarkeitsbenachrichtigung über VERP oder eine bestimmte Mailbox ist erforderlich, um den Status in der Datenbank zu verarbeiten und zu aktualisieren.
KPIs: Zustellungsrate, Öffnungsrate, Klickrate, Absprungrate, Spam-Beschwerden.
Systemüberwachung: Prometheus für CPU/GPU/VRAM, Grafana-Dashboards für Latenzmessung, Warteschlangenlänge und Erfolgs-/Fehlermetriken.
Skalierbarkeit und Modelloptimierung
Nutzung von GPU-Cloud und Quantisierung
Für große Modelle empfiehlt sich GPU Cloud. Quantisierung (4-Bit/8-Bit) und der Einsatz von Techniken wie vLLM oder Triton können den Speicherbedarf um das 4- bis 10-Fache reduzieren und den Durchsatz deutlich steigern.
Zwischenspeicherung von Produkten und Vorlagen
Um die Kosten jedes Modellaufrufs zu reduzieren, sollten sich wiederholende Textteile zwischengespeichert und Vorlagen sowie sichere Methoden zum Ersetzen von PII-Feldern verwendet werden.
Standorte vergleichen und Kampagnen empfehlen
- Lokales Publikum: Wenn sich die meisten Empfänger im selben Land/Kontinent befinden, kann ein VPS in derselben Region die Latenz verringern und manchmal die Interoperabilität erhöhen.
- Zustellung an große Anbieter (Gmail, Yahoo): Wichtiger als der Standort sind die IP-Sperrhistorie und die DNS-Einstellungen.
- Schutz vor Angriffen: Der Einsatz von Anti-DDoS-Servern und BGP-Netzwerken ist für die Aufrechterhaltung des Dienstes während eines Angriffs unerlässlich.
Checkliste für die Umsetzung (Schritt für Schritt)
- Wählen Sie den Standort und den Servertyp (GPU oder CPU) anhand des Modells aus.
- Einrichten eines VPS und Installieren von Docker/Docker Compose.
- Bereitstellung des LLM-Inferenzservers (TGI/vLLM) und der API.
- Warteschlangenkonfiguration (Redis + Celery) und Worker.
- Richten Sie einen gültigen MTA ein oder wählen Sie ein gültiges SMTP-Relay aus.
- Generieren Sie einen DKIM-Schlüssel und fügen Sie SPF-, DKIM- und DMARC-Einträge hinzu.
- TLS mit certbot einrichten und PTR festlegen.
- Führen Sie die IP-Aufwärmphase planmäßig durch (7–14 Tage).
- Aktive Überwachung und Bounce-Verarbeitung.
- A/B-Testing und KPI-Messung.
Praktische Tipps für verschiedene Teams
- Für DevOps: Verwenden Sie IaC (Terraform oder Ansible) für die Netzwerk- und DNS-Bereitstellung und verwenden Sie eine Container-Registry zum Speichern von Images.
- Für Marketingzwecke: Nutzen Sie Kennzahlen zu Zustellung und Interaktion, um Aufforderungen festzulegen und Zielgruppen zu segmentieren.
- Aus Sicherheitsgründen: Beschränken Sie den Zugriff auf die LLM-API mithilfe einer IP-Zulassungsliste und Ratenbegrenzungen.
Abschluss
LLM auf VPS automatisiert die Erstellung personalisierter E-Mail-Kampagnen und kombiniert dabei die Leistungsfähigkeit von Sprachmodellen, Warteschlangenarchitektur und E-Mail-Infrastruktur. Durch die Auswahl des optimalen Standorts aus über 85 globalen Standorten, den Einsatz von GPU-Servern für die Inferenz und die Feinabstimmung von SPF/DKIM/DMARC- und Sicherheitsrichtlinien lassen sich Kampagnen mit höheren Öffnungs- und Konversionsraten bei gleichzeitig geringerem Risiko realisieren.
Wenn Sie die detaillierte Konfiguration (CPU/GPU, Standort, dedizierte IP-Adresse und Warm-up-Plan) überprüfen möchten, können Sie die professionellen Hosting- und Konfigurationsoptionen der Dienste nutzen oder sich an das technische Team wenden.





