- چطور میتوانید کمپین ایمیلی شخصیسازیشده با LLM را روی VPS خودکار کنید؟
- معماری کلی — اتوماسیون تولید کمپین ایمیلی شخصیسازیشده با LLM اجرا شده روی VPS
- Prerequisites and server selection
- پیادهسازی عملی — گامبهگام
- تنظیمات ایمیل و deliverability
- امنیت و رعایت حریم خصوصی
- مانیتورینگ، Bounce handling و معیارها
- مقیاسپذیری و بهینهسازی مدل
- مقایسه لوکیشنها و توصیه برای کمپینها
- چکلیست اجرایی (گامبهگام)
- Practical tips for different teams
- Conclusion
- Frequently Asked Questions
چطور میتوانید کمپین ایمیلی شخصیسازیشده با LLM را روی VPS خودکار کنید؟
این راهنما به صورت فنی و گامبهگام نشان میدهد چگونه یک LLM را روی VPS یا سرور ابری مستقر کنید، متنهای ایمیل شخصیسازیشده تولید نمایید، و با تنظیم صحیح MTA و رکوردهای DNS کمپینهای ارسال را در مقیاس امن و قابلاعتماد اجرا کنید.
معماری کلی — اتوماسیون تولید کمپین ایمیلی شخصیسازیشده با LLM اجرا شده روی VPS
معماری مرسوم شامل اجزای زیر است که هرکدام نقش مشخصی در تولید، صفبندی و ارسال ایمیل دارند:
- LLM inference server (روی VPS/GPU Cloud) — اجرای مدل برای تولید محتوای شخصیسازی.
- Application API (FastAPI/Flask) — واسط بین بانک داده، LLM و صف ارسال.
- Message queue و worker (Redis + Celery یا RabbitMQ) — مدیریت ارسال در پسزمینه و نرخدهی.
- MTA یا SMTP relay (Postfix/Haraka یا سرویس خارجی مانند Mailgun/Sendgrid) — ارسال واقعی ایمیل.
- Monitoring & Logging (Prometheus + Grafana + ELK) و مدیریت bounce.
- DNS records: SPF, DKIM, DMARC و PTR برای IP اختصاصی.
مزیت استقرار روی VPS یا سرور ابری:
- کنترل کامل روی دادهها و مدل — مهم برای حریم خصوصی و انطباق.
- امکان استفاده از GPU Cloud برای inferencing مدلهای بزرگ.
- اختصاصیسازی IP و مدیریت warm-up برای بهبود deliverability.
- توزیع جغرافیایی با استفاده از 85+ لوکیشن جهت کاهش تأخیر.
Prerequisites and server selection
سختافزار و انتخاب لوکیشن
برای مدلهای بزرگ (7B/13B+) توصیه میشود از سرور GPU با 16–48 GB VRAM استفاده کنید (مثلاً A100/RTX 3090/4090). برای مدلهای کوچکتر یا کوانتایزهشده مانند LLama-2-7B q4_0 میتوان از CPU با 32+ GB RAM بهره برد.
Location: برای افزایش تحویل در صندوق ورودی محلی، IP از همان منطقه جغرافیایی میتواند کمک کند؛ اما برای deliverability کلی، بلوک IP و سابقه آن مهمتر است.
نرمافزار
عناصر نرمافزاری پیشنهادی:
- Docker, Docker Compose یا Kubernetes (برای مقیاس).
- text-generation-inference (TGI) یا vLLM برای inference؛ مسیرهای سبکتر مثل GGML/llama.cpp برای سرورهای CPU.
- FastAPI برای API، Celery + Redis برای queue، Postfix/Haraka یا SMTP relay برای ارسال.
پیادهسازی عملی — گامبهگام
نصب پایه (Ubuntu مثال)
دستورالعمل نصب Docker روی Ubuntu:
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now dockerنمونه Docker Compose برای LLM + API + Redis
نسخه سادهای که TGI بهعنوان inference و یک اپ 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"نمونه ساده API (Python + FastAPI) — فراخوانی LLM و قالببندی
قطعه کد نمونه برای تولید محتوا از TGI و صفبندی ارسال در background:
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"}تنظیمات ایمیل و deliverability
SPF, DKIM, DMARC
نمونه رکوردها و مراحل کلیدی:
- SPF: رکورد TXT در DNS با مقدار نمونه:
"v=spf1 ip4:YOUR.IP.ADD.RESS include:spf.yourrelay.com -all" - DKIM: استفاده از OpenDKIM. تولید کلید:
opendkim-genkey -t -s mail -d example.com - DMARC: نمونه رکورد:
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"
PTR و IP اختصاصی و Warm-up
PTR (reverse DNS) باید به hostname ایمیل برگردد.
Warm-up: استفاده از IP اختصاصی و برنامه warm-up: ابتدا ارسال محدود (مثلاً 50–200 ایمیل در روز) و افزایش تدریجی برای جلوگیری از بلوک شدن.
Rate limiting و صفبندی
تنظیمات نمونه Postfix برای محدودیت نرخ و connection:
smtpd_client_message_rate_limit = 100
smtpd_client_connection_count_limit = 10برای کمپینهای بزرگ معمولاً بهتر است از SMTP relay معتبر استفاده کنید و سمت اپ فقط بر اساس محدودیتهای provider صف ارسال را کنترل کند.
امنیت و رعایت حریم خصوصی
TLS: همیشه ارسال SMTP را با STARTTLS یا SMTPS انجام دهید. برای Postfix در main.cf:
smtpd_tls_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/example.com/privkey.pemنگهداری کلیدها و توکنها: از Vault یا Secret Manager استفاده کنید.
رمزنگاری داده حساس: در PostgreSQL میتوان از pgcrypto یا field-level encryption بهره برد.
مانیتورینگ، Bounce handling و معیارها
Bounce handling: دریافت bounce از طریق VERP یا mailbox خاص، پردازش و بهروزرسانی وضعیت در DB ضروری است.
KPIها: delivery rate, open rate, click rate, bounce rate, spam complaints.
مانیتورینگ سیستم: Prometheus برای CPU/GPU/VRAM، Grafana dashboards برای latency inference، queue length و success/fail metrics.
مقیاسپذیری و بهینهسازی مدل
استفاده از GPU Cloud و کوانتایزیشن
برای مدلهای بزرگ، GPU Cloud توصیه میشود. کوانتایزیشن (4-bit/8-bit) و استفاده از تکنیکهایی مثل vLLM یا Triton میتواند تا 4–10 برابر کاهش مصرف حافظه و افزایش throughput فراهم کند.
کش کردن تولیدات و prompt templates
برای کاهش هزینه هر فراخوانی مدل، بخشهایی از متن که تکراریاند را cache کنید و از prompt templates و روشهای امن برای جایگزینی فیلدهای PII استفاده نمایید.
مقایسه لوکیشنها و توصیه برای کمپینها
- مخاطب محلی: اگر اکثر گیرندگان در یک کشور/قارهاند، VPS در همان منطقه میتواند latency را کاهش دهد و گاهی تعامل را افزایش دهد.
- تحویل به سرویسدهندگان بزرگ (Gmail, Yahoo): مهمتر از لوکیشن، سابقه بلوک IP و تنظیمات DNS است.
- حفاظت از حملات: استفاده از سرورهای دارای anti-DDoS و شبکه BGP برای تداوم سرویس در هنگام حمله ضروری است.
چکلیست اجرایی (گامبهگام)
- انتخاب لوکیشن و نوع سرور (GPU vs CPU) بر اساس مدل.
- راهاندازی VPS و نصب Docker/Docker Compose.
- استقرار LLM inference server (TGI/vLLM) و API.
- کانفیگ صف (Redis + Celery) و workerها.
- تنظیم MTA یا انتخاب SMTP relay معتبر.
- تولید کلید DKIM و اضافه کردن رکورد SPF، DKIM، DMARC.
- راهاندازی TLS با certbot و تنظیم PTR.
- اجرای IP warm-up طبق برنامه (7–14 روز).
- مانیتورینگ و bounce processing فعال.
- آزمایش A/B و اندازهگیری KPI.
Practical tips for different teams
- برای DevOps: از IaC (Terraform یا Ansible) برای استقرار شبکه و DNS استفاده کنید و از Container registry برای نگهداری تصاویر بهره ببرید.
- برای بازاریابی: از متریکهای تحویل و engagement برای تنظیم prompt و segment target استفاده کنید.
- برای امنیت: محدودسازی دسترسی به API LLM با IP allowlist و rate limits اعمال شود.
Conclusion
اتوماسیون تولید کمپین ایمیلی شخصیسازیشده با LLM روی VPS ترکیبی از توان مدلهای زبانی، معماری صف و زیرساخت ایمیلی است. با انتخاب لوکیشن مناسب از بین 85+ لوکیشن جهانی، استفاده از سرورهای GPU برای inferencing، و تنظیم دقیق SPF/DKIM/DMARC و سیاستهای امنیتی، میتوان کمپینهایی با نرخ باز و تبدیل بالاتر و ریسک کمتر اجرا کرد.
در صورت نیاز به بررسی پیکربندی دقیق (CPU/GPU، لوکیشن، IP اختصاصی و پلن warm-up) میتوانید از گزینههای میزبانی و پیکربندی حرفهای موجود در سرویسها بهره ببرید یا با تیم فنی مشورت کنید.





