MakiSend Cloudflare पर कैसे चलता है
एक Worker, एक database, एक queue और एक durable workflow। कुछ भी चालू रखने की ज़रूरत नहीं, सब कुछ आपके अपने Cloudflare account पर।
एक email के साथ चलें
चुनें कि आपके SMTP provider पर क्या होता है, फिर भेजें। हर पड़ाव एक Cloudflare product है।
- आपका appPOST /send-email
- WorkerWorkers
- डेटाबेसD1
- QueueQueues
- WorkflowWorkflows
- आपका SMTPTCP sockets
- इनबॉक्सपहुँच गया
- डेड लेटरQueues (DLQ)
एक email के साथ चलने के लिए भेजें दबाएँ।
इसके पीछे के Cloudflare products
Workers (Cloudflare docs, नए टैब में खुलता है)
एक Worker सब कुछ चलाता है: Hono API, sign-in, dashboard और delivery code।
nodejs_compat की वजह से nodemailer और उसका SMTP client बिना बदलाव के चलते हैं। न server, न container।
Static Assets (Cloudflare docs, नए टैब में खुलता है)
Dashboard (एक Astro build) को उसी Worker से, API वाले origin पर ही serve करता है।
एक ही origin का मतलब है कोई CORS नहीं और याद रखने के लिए एक ही URL।
D1 (Cloudflare docs, नए टैब में खुलता है)
Database: email logs और history, encrypted content और attachments, SMTP configurations, API keys, templates, accounts।
Recipients, bodies, attachments और SMTP credentials लिखे जाने से पहले AES-256-GCM से encrypt होते हैं। Schema को Drizzle migrations संभालते हैं।
Queues (Cloudflare docs, नए टैब में खुलता है)
API को delivery से अलग रखता है: email id queue में जाते ही request खत्म हो जाती है।
एक batch में अधिकतम 10, 30 सेकंड के अंतर पर 3 consumer retries, फिर एक dead-letter queue (makisend-send-email-dlq)।
Workflows (Cloudflare docs, नए टैब में खुलता है)
हर email के लिए एक durable run। उसकी id ही email की id है, इसलिए एक ही email दो runs से कभी दो बार नहीं भेजा जा सकता।
30 सेकंड के अंतर पर 4 SMTP कोशिशें, जो restart के बाद भी बनी रहती हैं। स्थायी errors (auth, TLS, DNS, 5xx) तुरंत रुक जाते हैं। हर step email की history में लिखा जाता है।
TCP sockets (Cloudflare docs, नए टैब में खुलता है)
Worker खुद आपके provider से TLS पर SMTP connection खोलता है।
Ports 465, 587, 2465, 2525 और 2587। Port 25 Cloudflare ने block किया है। Connections साझा Cloudflare IPs से निकलते हैं।
Email Service (Cloudflare docs, नए टैब में खुलता है)
SMTP का एक विकल्प: smtp.mx.cloudflare.net वाली configurations Worker की send_email binding से भेजती हैं।
SMTP पासवर्ड की ज़रूरत नहीं; sender address का domain Cloudflare Email Sending पर onboard होना चाहिए।
Cron Triggers (Cloudflare docs, नए टैब में खुलता है)
बिना किसी अतिरिक्त service के background jobs: health checks, update check और key rotation।
रोज़ 03:17 UTC पर और हर घंटे के 17वें मिनट पर (नीचे देखें)।
Workers Logs (Cloudflare docs, नए टैब में खुलता है)
Worker के request और invocation logs, आपके Cloudflare dashboard में।
wrangler.jsonc में चालू किया गया। Email content कभी log नहीं होता।
Schedule पर क्या चलता है
- रोज़, 03:17 UTC
- हर SMTP configuration को test करता है और नतीजा दर्ज करता है, फिर GitHub पर नई MakiSend release देखता है (जब तक UPDATE_CHECK बंद न हो)।
- हर घंटे, 17वाँ मिनट
- Key rotation: जो stored डेटा अब भी पिछली ENCRYPTION_KEY से encrypted है, उसे छोटे batches में फिर से encrypt करता है।
इस पर भरोसा करने से पहले क्या जानें
- कोई fixed outbound IP नहीं: जिस provider को IP allow-listing चाहिए, वह Worker से भेजे गए emails अस्वीकार करेगा।
- भेजना asynchronous है: 202 का मतलब queued है, delivered नहीं। नतीजा logs और dashboard में दिखता है।
- हर configuration के लिए एक SMTP provider, कोई automatic failover नहीं। Bounce, open या click tracking अभी नहीं है।
- Deliverability आपके sender domain (SPF, DKIM, DMARC) और आपके provider पर निर्भर करती है, Cloudflare पर नहीं।
पूरा design, data model और diagrams README और docs/ARCHITECTURE.md में हैं।