تصميم التتابع API: بناء قاعدة تسليم البريد الإلكتروني مع عمال Cloudflare

هذه الصفحة مترجمة آليًا من الأصل الياباني. اقرأ الأصل الياباني

1. لماذا لم تستخدم مزود البريد الإلكتروني الخارجي API

عند إنشاء تطبيق لإرسال الملاحظات عبر البريد الإلكتروني، فإن أول ما يتبادر إلى الذهن هو إرسال API لمزود بريد إلكتروني رئيسي. ومع ذلك، بالنسبة للمطورين الأفراد، كانت عقبة مراجعة Google OAuth عالية للغاية.

Google OAuth ستتلقى التطبيقات التي لم تجتاز المراجعة شاشة تحذير تقول "لم يتم التحقق من هذا التطبيق بواسطة Google". هذا التحذير قاتل لتطبيق المذكرة. يرسل المستخدمون أفكارهم ومعلوماتهم الشخصية كمذكرة. إذا كانت التجربة الأولى تقول "لم يتم التحقق منها"، فمن سيثق بهذا التطبيق؟

تعد عملية تقديم الطلب لمراجعة Google OAuth طريقا صعبا للمطورين الأفراد. إعداد سياسات الخصوصية، وشرح شرعية النطاق، والتقييم الأمني - بغض النظر عما إذا كان فريقا من شركة كبيرة، فإن تكلفة دفع وظيفة واحدة لتسليم البريد الإلكتروني كبيرة جدا بالنسبة للتطبيق الذي تم تطويره بمفرده.

ما كان مطلوبا هو حل يمكنه إرسال رسائل البريد الإلكتروني دون تعقيد مراجعة OAuth دون الإضرار بثقة المستخدم. الجواب هو التتابع الخاص بي API.

2 Cloudflare العمال + Resend API الهندسة المعمارية

بنية Relay API بسيطة وقوية. تلقي طلب من تطبيق iOS ونقله إلى خدمة إرسال البريد الإلكتروني - وهو مصمم خصيصا لذلك.

تطبيق iOS → تتابع API (عمال Cloudflare) → Resend API → تسليم البريد الإلكتروني

Cloudflare Workers هي منصة بدون خادم تنفذ رمز TypeScript في مواقع الحافة في جميع أنحاء العالم. وفقا لوصف Cloudflare، لا توجد بداية باردة تحدث في جهاز افتراضي بدون خادم لأنه يقوم بتشغيل التعليمات البرمجية في بيئة تنفيذ خفيفة تسمى العزل.

Resend API هي خدمة حديثة لإرسال البريد الإلكتروني. من السهل إعداد SPF/DKIM/DMARC ويمكن استدعاؤه بسهولة من TypeScript.

من حيث التكلفة، يمكن استخدام الخطة المجانية لعمال Cloudflare حتى طلبات 100000 على 1، ويمكن استخدام الخطة المجانية ل Resend حتى 100 على 1 و3,000 شهريا (صفحة رسوم كل شركة اعتبارا من 2026 10). إنه تكوين يمكن أن يبدأ صغيرا وينتقل إلى خطة مدفوعة وفقا للمبلغ المرسل.

3 التحقق من عنوان البريد الإلكتروني (طريقة رمز الرقم 6)

Relay API يرسل ملاحظات فقط إلى عناوين البريد الإلكتروني التي تم التحقق منها. هذه هي الطبقة الأساسية للدفاع لمنع إساءة الاستخدام.

قبل البدء في إرسال مذكرة، يلزم تدفق للتحقق من عنوان البريد الإلكتروني للوجهة.

  • يدخل المستخدمون عنوان بريدهم الإلكتروني في التطبيق
  • Relay API يرسل رمز التحقق 6-digit إلى هذا العنوان
  • أدخل رمز رقم 6 الذي تلقاه المستخدم في التطبيق
  • اكتمل التحقق. بعد ذلك، سيسمح لك بإرسال ملاحظات إلى عنوان البريد الإلكتروني هذا

تمنع هذه الآلية إرسال الملاحظات إلى عناوين البريد الإلكتروني للأشخاص الآخرين دون إذن. سيتم إرسال رمز التحقق إلى صندوق الوارد لهذا العنوان، لذلك إذا لم تتمكن من رؤية صندوق الوارد، فلا يمكنك التحقق من العنوان كوجهة.

التحقق مرة واحدة فقط لكل عنوان بريد إلكتروني. بمجرد اكتمال التحقق، يمكنك الاستمرار في إرسال الملاحظات دون إدخال الرمز.

4 تنفيذ حد المعدل متعدد الطبقات

لمنع إساءة استخدام إرسال البريد API، قمنا بتنفيذ حد معدل على طبقات متعددة.

const RATE_LIMITS = {
  devicePerMinute: 30,
  devicePerDay: 200,
  ipPerHour: 120,
  globalPerDay: 300,
};
مستوى الجهاز
التقييد حسب الجهاز
منع الإرسال المفرط من أجهزة 1. حدد الحد الأعلى لحالات 30 لكل 1 دقيقة وحالات 200 لكل 1 في اليوم. إنها عتبة لا يمكن الوصول إليها عن طريق الاستخدام العادي للمذكرة، ولكنها ستوقف الإرسال الجماعي عن طريق التشغيل الآلي.
مستوى بروتوكول الإنترنت
قيود وحدة عنوان IP
يقيد الطلبات المجمعة من نفس الشبكة. 1 120 في الساعة. قم بحماية البنية التحتية من الهجمات باستخدام أجهزة متعددة.
عالمي
القيود العالمية
حماية البنية التحتية بأكملها. يتم تعيين الحد الأعلى العالمي ل 300 لكل 1 يوميا كمحطة أخيرة (عدد كل حد أعلى من وقت التصميم ويخضع للتغيير).
2026-09 تأهل
الحد الأعلى الحالي
تمت إزالة الحد الأعلى لكل محطة والحد الأعلى لإجمالي أيام 1 في 2026 6. حد الإرسال الحالي هو الحد الأعلى لكل 1 ساعة لكل عنوان IP.

يتم تخزين العداد في Cloudflare KV وإعادة تعيينه لكل نافذة زمنية. أثناء المرور عبر الإرسال العادي، فإنه يقمع الوصول الجماعي غير المصرح به.

5. المساواة في القوة: مصممة لعدم إرسال نفس المذكرة مرتين

اتصال الشبكة غير مؤكد. قد ينقطع الاتصال بين الوقت الذي تضغط فيه على زر الإرسال ويتم إرجاع الرد. يحدد التطبيق أنه مهلة ويحاول إعادة إرساله، ولكن في الواقع تم تسليم الطلب الأول إلى الخادم - وهو سيناريو شائع.

بالنسبة لهذا السيناريو، يتم إعداده بالمثل.

  • منح UUID (معرف رسالة) فريد لكل مذكرة
  • Relay API يمررر معرف الرسالة كمفتاح Idempotency للطلب إلى خدمة إرسال البريد الإلكتروني (Resend)
  • Resend يتذكر نفس المفتاح ل 24 لساعات، وإذا جاء نفس طلب المحتوى مرة أخرى، فسيعيد نفس الرد كما كان من قبل دون إرسال بريد إلكتروني
  • سيرجع التطبيق استجابة ناجحة (سيكون ل 2 نفس الاستجابة مثل 1)

مع هذا التصميم، حتى لو كانت الشبكة غير مستقرة وحدثت إعادة محاولة، فلن يتم إرسال نفس المذكرة متداخلة خلال ساعات 24 (الفترة التي يتذكر فيها Resend المفتاح). خلال هذه الفترة يمكن إيقاف الازدواجية لأنه من المستحيل التمييز بين إعادة الإرسال بعد ذلك.

6. مزايا الحوسبة المتطورة

السبب الأكبر لاعتماد عمال Cloudflare كقاعدة لتسليم البريد الإلكتروني هو المزايا المتأصلة في الحوسبة المتطورة.

الكمون
موقع الحافة حول العالم = وقت استجابة منخفض
يقع مقر Cloudflare في أكثر من 300 مدن حول العالم. نظرا لأن الطلب تتم معالجته في قاعدة قريبة من المستخدم، فإن مسافة الاتصال أقصر من الذهاب ذهابا وإيابا إلى خادم 1 البعيد (سيتغير وقت الرد، بما في ذلك معالجة خدمة إرسال البريد الإلكتروني).
بداية باردة
لا توجد بداية باردة لنوع الجهاز الافتراضي
في الحالات بدون خادم التي تعمل على الأجهزة والحاويات الافتراضية، فإن الطلب الأول بعد عدم استخدامه لفترة من الوقت هو انتظار بدء التشغيل (البدء البارد). يوضح Cloudflare أن هذا الانتظار لا يحدث لأن عمال Cloudflare يتحركون في عزلة.
العمليات
التحجيم التلقائي بدون إدارة البنية التحتية
إدارة الخادم، وتخطيط القدرات، وإعدادات التحجيم - كل هذا غير ضروري. إذا زاد الطلب، فسيتم توسيع نطاقه تلقائيا، ولن يتم تكبد أي تكلفة عند الخمول.

بالنسبة لتطبيق المذكرة، كان هذا المزيج خيارا سهلا للتعامل معه. تبدأ المعالجة في قاعدة قريبة من المستخدم، وليس هناك حاجة لإدارة الخادم، وإذا كان صغيرا، فيمكن تخفيض التكلفة. لهذا السبب صنعت Relay API في الحوسبة المتطورة.

يرجى تجربة "SimpleMemo" المبني على هذا الأساس التقني.

التنزيل باستخدام App Store

المراجع