كيف يعمل MakiSend على Cloudflare
Worker واحد وقاعدة بيانات واحدة وطابور واحد و workflow دائم. لا شيء تحتاج إلى إبقائه قيد التشغيل، وكل ذلك على حسابك الخاص في Cloudflare.
تتبّع رسالة واحدة
اختر ما يحدث لدى مزوّد SMTP، ثم أرسل. كل محطة منتج من منتجات Cloudflare.
- تطبيقكPOST /send-email
- WorkerWorkers
- قاعدة البياناتD1
- الطابورQueues
- WorkflowWorkflows
- SMTP الخاص بكTCP sockets
- صندوق الواردتم التسليم
- الرسائل الميتةQueues (DLQ)
اضغط إرسال لتتبّع رسالة واحدة.
منتجات Cloudflare التي يقوم عليها
Workers (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
Worker واحد يشغّل كل شيء: واجهة Hono API وتسجيل الدخول ولوحة التحكم وشيفرة التسليم.
يتيح nodejs_compat تشغيل nodemailer وعميل SMTP الخاص به دون تغيير. لا خادم ولا حاوية.
Static Assets (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
يقدّم لوحة التحكم (بناء Astro) من الـ Worker نفسه، على الأصل نفسه الذي تعمل عليه API.
الأصل نفسه يعني لا CORS وعنوان URL واحدًا تتذكره.
D1 (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
قاعدة البيانات: سجلات الرسائل وتاريخها، والمحتويات والمرفقات المشفّرة، وإعدادات SMTP، ومفاتيح API، والقوالب، والحسابات.
تُشفَّر المستلمون والنصوص والمرفقات وبيانات اعتماد SMTP بـ AES-256-GCM قبل كتابتها. تدير ترحيلات Drizzle المخطط.
Queues (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
يفصل API عن التسليم: ينتهي الطلب بمجرد وضع معرّف الرسالة في الطابور.
دفعات حتى 10، و3 إعادات محاولة للمستهلك بفاصل 30 ثانية، ثم طابور رسائل ميتة (makisend-send-email-dlq).
Workflows (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
تشغيل دائم واحد لكل رسالة. معرّفه هو معرّف الرسالة، فلا يمكن أبدًا أن يُرسل تشغيلان الرسالة نفسها مرتين.
4 محاولات SMTP بفاصل 30 ثانية، تصمد أمام إعادة التشغيل. تتوقف الأخطاء الدائمة (auth و TLS و DNS و 5xx) فورًا. تُكتب كل خطوة في تاريخ الرسالة.
TCP sockets (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
يفتح الـ Worker بنفسه اتصال SMTP مع مزوّدك عبر TLS.
المنافذ 465 و 587 و 2465 و 2525 و 2587. تحظر Cloudflare المنفذ 25. تخرج الاتصالات من عناوين IP مشتركة لدى Cloudflare.
Email Service (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
بديل عن SMTP: الإعدادات التي تستخدم smtp.mx.cloudflare.net ترسل عبر ربط send_email في الـ Worker.
لا حاجة إلى كلمة مرور SMTP؛ يجب أن يستخدم عنوان المرسل نطاقًا مُضافًا إلى Cloudflare Email Sending.
Cron Triggers (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
مهام في الخلفية دون خدمة إضافية: فحوص السلامة، والتحقق من التحديثات، وتدوير المفاتيح.
يوميًا عند 03:17 UTC وكل ساعة عند الدقيقة 17 (انظر أدناه).
Workers Logs (توثيق Cloudflare، يُفتح في علامة تبويب جديدة)
سجلات الطلبات والاستدعاءات من الـ Worker، في لوحة تحكم Cloudflare لديك.
مفعّلة في wrangler.jsonc. لا يُسجَّل محتوى الرسائل أبدًا.
ما يعمل وفق جدول زمني
- كل يوم، 03:17 UTC
- يختبر كل إعدادات SMTP ويسجّل النتيجة، ثم يتحقق على GitHub من وجود إصدار جديد من MakiSend (ما لم يكن UPDATE_CHECK معطّلًا).
- كل ساعة، الدقيقة 17
- تدوير المفاتيح: يعيد تشفير البيانات المخزّنة التي لا تزال تحت ENCRYPTION_KEY سابق، على دفعات صغيرة.
ما يجب معرفته قبل الاعتماد عليه
- لا عنوان IP صادر ثابت: المزوّد الذي يشترط قائمة عناوين IP مسموح بها سيرفض الإرسال من Worker.
- الإرسال غير متزامن: الرمز 202 يعني أن الرسالة في الطابور، لا أنها سُلّمت. النتيجة في السجلات ولوحة التحكم.
- مزوّد SMTP واحد لكل إعداد، دون تبديل تلقائي عند الفشل. لا تتبّع بعد للارتداد أو الفتح أو النقر.
- تعتمد قابلية التسليم على نطاق المرسل لديك (SPF و DKIM و DMARC) وعلى مزوّدك، لا على Cloudflare.
التصميم الكامل ونموذج البيانات والمخططات موجودة في README وفي docs/ARCHITECTURE.md.