تحویلپذیری یک فرایند است
Routing، Shaping، Suppression، Warm-up و Feedback باید کنار هم دیده شوند.

MAIL PLATFORM / GATEWAY
یک Mail Platform مستقل برای تیمهایی که میخواهند Outbound Delivery، Inbound Protection، Domain Identity، Queue، Deliverability، چرخهی عمر و Observability را زیر یک محصول اداره کنند.
اجزای 4SO Mail Gateway: مسیر پیام از ورود تا تحویل
مسئلهی محصول
Delivery، Reputation، DKIM، Queue، Inbound Security، Quarantine، Feedback و بازیابی هرکدام حالت خرابی خودشان را دارند. Mail Gateway این اجزا را در یک مدل عملیاتی منسجم قرار میدهد.
Routing، Shaping، Suppression، Warm-up و Feedback باید کنار هم دیده شوند.
Authentication، Anti-spam، Anti-malware، Quarantine و Backend policy یک زنجیرهی واحد میسازند.
Sender authorization، access و تغییرات حساس در دامنه درست اجرا میشوند.
راهاندازی، Drain، Switchover، Upgrade، Backup و بازیابی بخشی از خود محصولاند.
نمای قابلیتها
Mail Gateway مسیر ارسال، دریافت و عملیات را با مدل دسترسی و مشاهدهپذیری مشترک اداره میکند.
Authenticated submission، routing، queue و delivery از Mail Data Plane.
Authorization دامنه و چرخهی عمر امضای ارسال.
مدیریت Bounce، Complaint، Suppression و Warm-up برای حفاظت از Deliverability.
Authentication و ارزیابی پیام ورودی در مسیر Receiver.
زنجیرهی حفاظت پیش از تحویل به Backend یا Quarantine.
نگهداری، Release، Delete و Expiry با دسترسی کنترلشده.
Health، Routing، TLS، Queue و Deliverability در دید عملیاتی واحد.
Control Plane و چرخهی عمر نودهای ایمیل با مسیرهای بازیابی مشخص.
Mail Data Plane برای ارسال و دریافت به LLM وابسته نیست؛ مسیر سرویسدهی ایمیل deterministic است.
مدل استقرار
محصول از یک Control Plane ساده شروع میشود و میتواند به HA Control Plane و Mail Nodeهای متعدد برای نقشهای Outbound و Inbound گسترش پیدا کند؛ Manager وارد Mail Data Plane نمیشود.
| پروفایل | Control Plane | Mail Data Plane | کاربرد |
|---|---|---|---|
| Single Manager | یک Manager | یک یا چند Mail Node | استقرار ساده و مدیریت مرکزی |
| Distributed Mail Nodes | Control Plane مرکزی | نودهای مجزا برای Outbound / Inbound | تفکیک ظرفیت و نقشهای Data Plane |
| HA Control Plane | چند Manager | Mail Node Pool مستقل | افزونگی مدیریت بدون ورود Manager به Mail Data Plane |
| آمادهی بازیابی | Control Plane + Backup/PITR | چرخهی عمر نود قابل بازسازی | بازیابی کنترلشده پس از خرابی |
معماری
Identity، Authorization، وضعیت Tenant و چرخهی عمر در Control Plane هستند؛ SMTP، Queue و Protection روی نودهای ایمیل اجرا میشوند.
| Plane | Component | وظیفه | مرز عملیاتی |
|---|---|---|---|
| Control | PostgreSQL + Product Authorization / Keycloak Identity | Tenant، Domain، policy، IAM، durable jobs و audit | Mail delivery برای سرویسدهی عادی به Control Plane زنده وابسته نیست |
| Outbound | KumoMTA | SMTP submission، queue/spool، routing، shaping و Internet delivery | Node-local spool؛ shared spool وجود ندارد |
| Transport | HAProxy | Stable internal transport و endpointهای HA منتخب | Proxy جای ownership محصول یا queue semantics را نمیگیرد |
| Inbound Protection | Rspamd + ClamAV | Spam/policy evaluation و malware scanning | Protection chain پیش از backend/quarantine اجرا میشود |
| DNS / Runtime State | Unbound + Valkey | Product-controlled resolver path و shared runtime authority در موارد لازم | Resolver path و runtime state تحت کنترل محصول میمانند |
| Runtime | Linux / VM Mail Nodes | KumoMTA، SMTP، sending IPs، DKIM و queue data plane | Kubernetes پیششرط Mail Data Plane نیست |
Control-plane Security Contract. Mail Gateway Identity، Authorization و Secret lifecycle را از Mail Data Plane جدا نگه میدارد و mutationهای پرریسک را به durable job و human approval متصل میکند.
| حوزه | Component / Authority | قرارداد فنی |
|---|---|---|
| Control API | Rust Control API + PostgreSQL | Tenant/Domain/Policy/Job/Audit state در Product database پایدار میشود. |
| Identity | Keycloak | OIDC subject هویت کاربر را میآورد؛ browser یا MCP credential جای user identity را نمیگیرد. |
| Authorization | OpenFGA + Product permission model | Unknown action/route fail-closed است و permission در resource scope ارزیابی میشود. |
| Secrets | OpenBao | Secret material و recovery workflow از configuration عادی و UI state جدا نگه داشته میشوند. |
| High-risk IAM | Durable PostgreSQL Job | Request، human approval، execute-time reauthorization و authoritative post-check از هم جدا هستند. |
| MCP | Delegated OIDC + scoped product tools | MCP میتواند درخواست/diagnostic را از authority محصول عبور دهد؛ self-approval یا generic Admin API ندارد. |
| Observability | Prometheus + Grafana + product probes | Queue، TLS، routing و deliverability از telemetry واقعی نشان داده میشوند؛ نبود داده سلامت ساختگی نیست. |
چرخهی عمر
راهاندازی دامنه و نود شروع مسیر است؛ Deliverability، Protection، Queue، Rotation و بازیابی همگی عملیات اصلی محصول هستند.
پروفایل کاری
بهجای یک Mail Server تکبعدی، محصول چند فرایند تخصصی را زیر یک Control Plane هماهنگ میکند.
مسیر ارسال پرتعداد با Queue و Routing.
دریافت عمومی با Authentication و Protection.
کنترل رفتار ارسال و بازخورد.
دامنه، دسترسی و عملیات دامنهبندیشده.
نودها هم منابع قابل ادارهاند.
مدیریت سرویس هم مسیر Backup و بازیابی دارد.
فلو Typed Action
برای عملیات مدیریتی، Plan و اثر تغییر قبل از اجرا قابل مشاهدهاند و approval پرریسک از execution جدا نگه داشته میشود.
Delivery نتیجهی نهایی نیست؛ bounce و telemetry دوباره policy را تغذیه میکنند.
پیام ورودی پس از auth و content gates به outcome صریح میرسد.
Plan و Approval و execute-time reauthorization از هم جدا هستند.
Domain از ownership تا delivery readiness یک workflow واحد دارد.
Queue/spool بخشی از Data Plane مستقل است.
پیام ورودی از چند gate عبور میکند.
Rotation با secret boundary و post-check انجام میشود.
Approval از execution جداست.
Node mutation spool و service role را در نظر میگیرد.
Queue incident و Routing/Shaping تغییرات Day‑2 مستقل و پرریسک هستند.
Backlog یا Delivery incident با حفظ حقیقت Node-local Spool بررسی میشود.
Policy تحویل قبل و بعد از اعمال از مسیر Impact و Telemetry عبور میکند.
| Action / Flow | Admission / Preconditions | Execution / Lock | Success Criterion | Failure / Recovery |
|---|---|---|---|---|
| Domain Onboarding | Tenant/Domain ownership، authorization و policy input معتبر | Typed owner action؛ config/runtime mutation از Control API عبور میکند | Domain/DKIM/routing readiness از Product state و runtime read-back | Validation failure قبل از activation؛ partial state از workflow recovery پیگیری میشود |
| DKIM Rotation | Domain scope، signer identity و rotation preconditions | Durable mutation با audit و bounded secret handling | Active key/signing state و DNS-facing readiness تأیید شود | Old/new key overlap و rollback owner-specific؛ secret material در MCP/UI نمایش داده نمیشود |
| Queue / Delivery Action | Exact tenant/queue/message scope و permission | Typed queue action؛ shell/raw SQL/direct Kumo admin proxy وجود ندارد | Queue/history post-check نتیجه همان action را نشان دهد | Unknown outcome نیازمند read-back؛ replay با idempotency semantics owner انجام میشود |
| Routing / Shaping / Suppression | Provider/domain/resource scope + risk/permission contract | Registry-backed action با Product policy authority | Effective route/pool/suppression state پس از mutation خوانده شود | Unknown action fail-closed؛ historical risk downgrade مجاز نیست |
| IAM User Lifecycle | Delegated OIDC subject و Product authorization؛ high-risk impact preview | Request → human approval مستقل → execute-time reauthorization → Keycloak Writer | Authoritative Keycloak post-check enabled/session/group state را تأیید کند | MCP approve/execute bypass ندارد؛ stale/revoked authorization هنگام execute دوباره رد میشود |
| Mail Node Lifecycle | Pinned target/release identity، preflight و runtime readiness | Provision/Drain/Fence/Switchover به durable lifecycle/evidence متصل | Node role، queue/spool و service health از runtime تأیید شود | Node-local spool فرض میشود؛ switchover failure با فرض shared spool یا success ساختگی پنهان نمیشود |
Management MCP lifecycle بهصورت صریح list actions → create plan → inspect impact/preconditions → human approval → execute → post-check است. Agent نمیتواند proposal خودش را approve کند و shell، raw SQL، filesystem یا secret export tool عمومی ندارد.
کاتالوگ عملیات
اپراتور باید بتواند وضعیت ارسال و دریافت را ببیند و اقدام لازم را بدون رفتن سراغ چند ابزار جدا انجام دهد.
4SO Mail Gateway ارسال، دریافت و عملیات را در یک محصول خودمیزبان و قابلپیگیری کنار هم قرار میدهد.