स्वयं route किए जा सकने वाले IPv4 ब्लॉक से शुरू होने वाला कठिन रास्ते वाला self-hosted email
(anil.recoil.org)- 1997 से संचालित Recoil mail infrastructure को एक self-hosted stack के रूप में अपडेट किया गया है, जो dedicated IPv4
/24ब्लॉक, Postfix, Dovecot, rspamd, Roundcube आदि को मिलाकर incoming, outgoing और access को सीधे संभालता है - अपना mail system चलाने से data access पर नियंत्रण और सीखने का मूल्य मिलता है, लेकिन कमज़ोर trust-आधारित SMTP के ऊपर IP reputation, DNS records और spam defense भी खुद मैनेज करने पड़ते हैं
- incoming path में postscreen, DNSBL, greylisting, ClamAV, Bayesian filtering, LMTP और Sieve से होकर bot traffic और malicious mail को चरणबद्ध तरीके से कम किया जाता है
- outgoing reliability SPF, DKIM, DMARC और SRS पर निर्भर करती है; इन्हें गलत सेट करने पर Gmail·Outlook जैसे receiver-side checks में mail spam माना जा सकता है या चुपचाप discard किया जा सकता है
- 2026 में भी self-hosted email संभव है, लेकिन IPv4 की उपलब्धता, कई DNS records, security updates और AI-आधारित vulnerability exploitation के खिलाफ defense in depth की ज़रूरत होती है
अपना ईमेल खुद क्यों चलाएँ
- अपना server चलाना systems और networking सीखने का एक शैक्षिक अनुभव है, और internet के काम करने के तरीके व open source में भागीदारी को समझने का रास्ता भी है
- ऐसे समय में जब web कुछ गिने-चुने operators के इर्द-गिर्द सिमटता जा रहा है, self-hosting अपने data पर संप्रभु नियंत्रण बनाए रखने का एक तरीका है
- 2023 के एक विश्लेषण के अनुसार, email traffic को पढ़ सकने वाले पक्ष अंततः ज़्यादातर Google और Microsoft पर आ टिकते हैं
- email कई online accounts के password reset से जुड़ा होता है, इसलिए account takeover या phishing दूसरे services की access को भी हिला सकते हैं
- अपना mail चलाने के लिए लंबे समय की maintenance चाहिए, साथ ही home network की तुलना में अधिक स्थिर internet hosting और reputation buildup की भी आवश्यकता होती है
ईमेल प्राप्त करने की संरचना
- internet domain, MX DNS record के ज़रिए mail पाने वाले SMTP server को निर्दिष्ट करता है, और
recoil.orgके लिएpork.recoil.orgmail संभालता है - SMTP की शुरुआत 1980 के दशक की अधिक trust-आधारित design से हुई थी, इसलिए यह sender identity को मूल रूप से प्रमाणित नहीं कर पाता और incoming mail का sender आसानी से forged हो सकता है
- IETF का जवाब कई identity checks को परत-दर-परत जोड़ने के रूप में विकसित हुआ, और इन्हें गलत सेट करने पर mail delivery reliability गिर जाती है
- DNS-आधारित blocklists botnet, compromised hosts और spammers की जानकारी इकट्ठा करती हैं, और mail server RBL query करके संदिग्ध IP को फ़िल्टर कर सकता है
- email reputation domain पर नहीं बल्कि IP address पर बनती है, इसलिए cloud में reuse हुए addresses या उसी block ke पड़ोसी IP भी reputation को प्रभावित कर सकते हैं
-
dedicated IPv4 ब्लॉक हासिल करना और routing
- Recoil ने
185.33.27.0/24dedicated IPv4 address block हासिल किया, जिससे mail reputation स्वतंत्र रूप से बनाई जा सके - RIPE NCC ने नवंबर 2019 में unallocated IPv4 space समाप्त कर दिया था, और उसके बाद direct allocation छोटे
/24waiting list के माध्यम से होती है /24block लगभग 6 महीने की प्रतीक्षा के बाद आवंटित हुआ; यूरोप में सीधे आवेदन करने के लिए RIPE NCC membership fee देनी होती है और LIR account खोलना पड़ता है- आवंटित IPv4 block के लिए routing authority तय करने हेतु RPKI ROA बनाया जाता है, और Recoil का block Mythic Beasts AS44684 से जुड़ा है
- reverse DNS भी सीधे नियंत्रित किया जा सकता है, और
185.33.27.128कोpork.recoil.orgसे map किया गया है, जो email reputation signal का काम करता है
- Recoil ने
bots और spam से रक्षा
- सिर्फ साफ-सुथरा IPv4 block होना पर्याप्त नहीं है; port 25 पर आने वाले ज़्यादातर TCP connections spam delivery, open relay scanning, credential guessing और AI training data collection की कोशिशें होती हैं
- Postfix
postscreen, port 25 के आगे DNSBL parallel queries, pre-greet delay, pipelining और non-SMTP command checks करता है postscreenकेवल सामान्य दिखने वाले clients को असलीsmtpdतक भेजता है, और खराब clients को temporary failure के साथ disconnect करता है ताकि false positives दोबारा प्रयास कर सकें- Spamhaus, Spamcop और Barracuda lists को weighted तरीके से जोड़ा जाता है, और Spamhaus अकेले या दो कमज़ोर lists के संयुक्त निर्णय पर reject करने के लिए सेट किया गया है
- Apple iCloud sender MX pool उसी IP से retry नहीं करता, इसलिए वह postscreen allowlist model से मेल नहीं खाता; इस वजह से
17.0.0.0/8पूरे block को प्राथमिक allow देकर bypass कराया गया है -
greylisting और content inspection
- greylisting पहली बार दिखने वाले sender को temporary failure लौटाता है, और अगर सामान्य MTA कुछ मिनट बाद retry करे तो उसे पास कर देता है
- one-shot botnets अक्सर failure के बाद अगले target पर बढ़ जाते हैं, इसलिए वे retry queue बनाए रखने वाले वैध senders से अलग पहचाने जाते हैं
- postscreen और greylisting पार करने के बाद, मूल bot traffic का 99% से अधिक हिस्सा कम CPU cost पर block हो जाता है
- rspamd, milter protocol के ज़रिए सभी messages की जाँच करता है, और संदिग्ध mail को accept करके bounce नहीं करता बल्कि sender server के connected रहते hi reject या delay कर देता है
- ClamAV ज्ञात virus attachments की जाँच कर infected messages को तुरंत reject करता है, और rspamd का Bayesian classifier Redis में संग्रहीत spam·ham corpus के आधार पर message को score देता है
local delivery, storage और filtering
- incoming messages, postscreen, greylisting, rspamd, ClamAV और Bayesian classifier से गुजरने के बाद Dovecot को सौंपे जाते हैं
- Postfix सीधे user home directory में लिखने के बजाय, Dovecot को LMTP के माध्यम से message देता है ताकि indexing, quotas, full-text search और Sieve filtering वही संभाले
virtual_alias_maps,anything@recoil.orgजैसे addresses को local delivery योग्य addresses में बदलता है- storage format Maildir है, जिसका उपयोग 1998 से किया जा रहा है, और यह हर email को user के
~/Maildirके नीचे एक single file के रूप में रखता है - Maildir,
tmp/,new/,cur/तीन subdirectories और POSIX atomic rename का उपयोग करता है, जिससे पूरे mailbox को lock किए बिना नए messages deliver किए जा सकते हैं -
search index और Sieve
- Stalwart जैसे आधुनिक mail servers पर भी विचार किया गया, लेकिन वे Maildir को support नहीं करते और RocksDB जैसी custom database storage की मांग करते हैं, इसलिए migration नहीं किया गया
- Dovecot, Flatcurve नामक अलग full-text index के माध्यम से Maildir storage और search performance को अलग रखता है
- Flatcurve, Xapian wrapper है, और प्रत्येक mailbox के लिए Xapian index को
~/Maildir/fts-flatcurveके तहत रखता है तथा नए mail आने पर अपने-आप update करता है - Sieve, mail filtering के लिए विशेष declarative language है, और Dovecot का Pigeonhole Sieve plugin delivery के समय user filters चलाता है
- system-wide Sieve scripts, rspamd द्वारा चिह्नित mail को
Junkमें भेजते हैं, जबकि user-specific scripts folder classification, vacation rules, priority और header editing जैसी चीज़ें संभालते हैं
भरोसेमंद ईमेल भेजना
- mail को reliably भेजने के लिए incoming defense जितनी ही outgoing authentication भी महत्वपूर्ण है; बड़े receivers की किसी एक जाँच में भी विफलता होने पर mail spam folder में जा सकता है या चुपचाप drop हो सकता है
- SPF, domain root पर DNS TXT record के रूप में यह घोषित करता है कि
@recoil.orgsender होने का दावा कौन-कौन से IP addresses कर सकते हैं - Recoil का SPF
v=spf1 a mx -allहै, यानीrecoil.orgके MX द्वारा इंगितpork.recoil.orgही वैध sender माना जाता है - Postfix, कई IP वाले host पर kernel द्वारा मनमाना address चुन लेने से बचने के लिए
smtp_bind_addressऔरsmtp_bind_address6से specific source address पर bind किया जाता है - DKIM, message body और चुने हुए headers के normalized form पर cryptographic signature लगाता है, और public verification key को DNS के
<selector>._domainkey.<domain>पर रखता है -
DMARC और SRS
- DMARC यह जाँचता है कि SPF और DKIM से authenticated domain, user को दिखने वाले
From:header से मेल खाता है या नहीं, और failure की स्थिति में receiver को बताता है कि क्या करना है - Recoil की DMARC policy
p=quarantineहै, औरrua=address पर aggregate reports लेकर deliverability issues debug किए जाते हैं - प्रमुख receivers लगभग रोज़ एक बार
recoil.orgsender होने का दावा करने वाले messages की summary XML reports भेजते हैं, जिनमें Google, Microsoft, Yahoo और Fastmail शामिल हैं - forwarded mail में मूल sender domain ऐसा दिखाई देता है जैसे वह Recoil IP से भेजा गया हो, जिससे SPF fail हो सकता है
- SRS sender envelope address को
SRS0=…=example.com=original@recoil.orgजैसे रूप में फिर से लिखता है, ताकि destination का SPF check Recoil domain के आधार पर evaluate हो
- DMARC यह जाँचता है कि SPF और DKIM से authenticated domain, user को दिखने वाले
user access और webmail
- users सामान्य IMAP clients के ज़रिए Dovecot server से जुड़ सकते हैं, या self-hosted webmail को browser में खोलकर mail access कर सकते हैं
- Dovecot,
porkके mailbox access को संभालता है और listener को TLS से encrypt करता है ताकि plain-text mail या passwords सार्वजनिक network से होकर न जाएँ - certificates के लिए LetsEncrypt का उपयोग होता है, और
imap.recoil.org,smtp.recoil.orgजैसे कई host aliases को SNI के माध्यम से दिया जाता है - Dovecot, Postfix के SASL backend की भूमिका भी निभाता है, जिससे users IMAP access और SMTP sending के लिए वही password इस्तेमाल कर सकते हैं
- Roundcube, Caddy TLS reverse proxy के पीछे Docker Compose service के रूप में चलता है, और एक सामान्य client की तरह TLS/IMAP के ज़रिए
porkसे जुड़ता है -
Roundcube plugins
- Roundcube का
managesieveplugin, browser से Sieve filters edit करने के लिए ManageSieve protocol का उपयोग करता है markasjunkplugin webmail के “Junk” button को Junk folder में move करने में बदल देता है, और यह move ham·spam classification training को user की नज़र से छिपाकर चलाता है- Roundcube ManageSieve UI raw Sieve DSL को expose नहीं करता
- Roundcube का
बाकी काम और self-hosting का अर्थ
- मौजूदा setup पिछले कुछ हफ्तों के रोज़मर्रा उपयोग में काफ़ी मज़बूत रहा है, लेकिन अभी भी और काम बाकी है
recoil.org, MX, A/AAAA, PTR, SPF TXT, DKIM TXT और DMARC TXT जैसे DNS records को मिलाकर mail receive, send और validation को बनाता है- MTA-STS दूसरे mail servers को बताता है कि वे केवल valid certificate वाले TLS के साथ ही communicate करें, जिससे STARTTLS downgrade attacks कम होते हैं
- DANE/TLSA, HTTPS की बजाय DNS में pinned TLS certificate hash का उपयोग करता है, लेकिन इसके लिए DNSSEC-signed DNS zone चाहिए, इसलिए यह अभी तक deploy नहीं किया गया है
- SRS कुछ हद तक deploy किया गया है, लेकिन हर forwarding path में validate नहीं हुआ है; INRIA-संबंधित failures इस वजह से चिंता का विषय हैं कि वे DMARC failures और domain reputation impact ला सकते हैं
-
JMAP, security और self-hosting का भविष्य
- JMAP, HTTPS और JSON का उपयोग करने वाला mail access protocol है, जो आधुनिक network clients के लिए IMAP की तुलना में बेहतर उपयुक्त है
- Dovecot, JMAP को native support नहीं करता, और जिन standalone JMAP servers का मूल्यांकन किया गया वे Maildir छोड़कर अपनी mailbox storage मांगते हैं
- विचाराधीन योजना यह है कि Dovecot के आगे एक OCaml JMAP implementation को translation proxy के रूप में रखा जाए, जो JMAP requests को IMAP calls में map करे और फिर JSON response लौटाए
- 2026 में mail server चलाने के लिए कम से कम छह DNS records को सही-सही मिलाना पड़ता है, और RIPE से IPv4 block हासिल करने में लगभग एक साल लग जाता है
- CVE public होने और SMTP/IMAP listeners पर वास्तविक exploit तैनात होने के बीच का अंतर अब हफ्तों नहीं बल्कि घंटों में मापा जा सकता है, इसलिए specific address binding, webmail container isolation, greylisting और DNSBL जैसी defense in depth ज़रूरी है
1 टिप्पणियां
Lobste.rs की राय
मैं बार-बार ऐसे gatekeepers को देखता हूँ जो दशकों से किए जा रहे काम को असंभव बताकर खारिज कर देते हैं
असल में सिर्फ reverse DNS, SPF, DMARC, MTA-STS सेट करना काफी है, और यह न बहुत महंगा है, न बहुत मुश्किल
उदाहरण मेल सर्वर: https://poofydoof.zia.io/
अभी Debian + Postfix, Dovecot, rspamd का संयोजन है, और मेरी सेटअप से ज़्यादा दिक्कतें मेरे कार्यस्थल के Google Workspace में आती हैं
reverse DNS, SPF, DMARC, MTA-STS ही काफी हैं — यह बात पहले से अच्छी प्रतिष्ठा वाले domain और IP address के लिए 100% सही है
अगर आप किसी ऐसे मेल सर्वर पर नया domain जोड़ते हैं जिस पर बड़े providers पहले से भरोसा करते हैं, तो प्रतिष्ठा जल्दी बन जाती है; और अगर किसी मौजूदा domain को नए मेल सर्वर IP पर ले जाते समय DKIM भी सेट किया गया है, तो भी ठीक रहता है
लेकिन अगर आप एकदम नए domain और नए मेल सर्वर IP से शुरुआत कर रहे हैं, तो मैंने सुना है कि स्थिति काफी अलग होती है, और बड़े providers के machine learning सिस्टम के संतुष्ट होने तक मेल अपने-आप spam की तरह प्रोसेस होने की संभावना ज्यादा रहती है
ऐसा लगता है कि अक्सर यह तरीका काम करता है कि उन सिस्टमों के उपयोगकर्ता मेरे domain पर मेल भेजें और spam फ़ोल्डर से मेरे जवाब निकालें
ऐसी चीज़ों के पीछे समय लगाने से बेहतर है कि महीने के लगभग 5 डॉलर देकर यह काम किसी और को सौंप दिया जाए
https://dmesgd.nycbug.org/dmesgd?do=view&id=8929
इस सेटअप के बारे में और विवरण जानने की उत्सुकता है
Mango Pi MQ-Pro मिलना मुश्किल लगता है; यह भी जानना चाहूँगा कि NetBSD/Linux support वाले दूसरे बहुत सस्ते डिवाइस कौन से हो सकते हैं
अपना मेल सर्वर चलाने की एक और वजह यह है कि आपको पता चल सकता है कि कोई पहले से ही आपके domain से spam भेज रहा है
मेरे एक domain को Google Domains की बिक्री के कारण Squarespace पर ट्रांसफ़र किया गया था, और Mailgun खाता न होने के बावजूद Squarespace ने Mailgun के लिए MX/SPF/DKIM DNS records अपने-आप जोड़ दिए
किसी ने Mailgun पर वह खाता अपने कब्जे में ले लिया और मेरे domain से भेजे गए जैसा दिखाकर मुझे spam भेजा
धन्यवाद, Google
खासकर IPv4 allocation वाला हिस्सा दिलचस्प है
यूरोप में इसे खुद करने के लिए RIPE NCC की वार्षिक फीस देनी होती है और local internet registry (LIR) खाता खोलना पड़ता है; https://www.ripe.net/membership/payment/ के अनुसार इसकी लागत सालाना 1800 यूरो है
यह काफी भारी है, लेकिन अगर यह और सस्ता होता तो शायद spammers इसका और आसानी से दुरुपयोग करते
OCaml में BGP सर्वर लिखने का मज़ा अनमोल है :-)
यह जानने की जिज्ञासा है कि ईमेल भेजने-प्राप्त करने में IPv6 को व्यावहारिक रूप से इस्तेमाल किया जा सकता है या नहीं
लेख लिखते समय मैंने इस पर नज़र डाली थी, लेकिन कुछ साल पहले अपने मेल सर्वर पर IPv6 बंद कर देने के कारण मैंने सोचा कि और अनुभव होने तक इसे टाल दूँ
https://dn.org/ipv6-and-domain-reputation-in-anti-spam-filters के अनुसार Gmail, Microsoft, Yahoo जैसे email providers अपने स्वतंत्र spam filters में domain reputation और IP reputation को अलग-अलग वज़न देते हैं, और IPv6 support अभी भी परिपक्व हो रहा है
Gmail, IPv6 मेल के लिए मान्य PTR record, SPF, DKIM मांगता है और DMARC के उपयोग की भी ज़ोरदार सिफारिश करता है
इन चीज़ों के बिना IPv6 से भेजे गए मेल अक्सर spam फ़ोल्डर में चले जाते हैं या delay होते हैं
Microsoft की filtering system में IPv6 को SNDS और JMRP प्रोग्रामों में शामिल किया गया है, लेकिन अगर sender reputation ज्ञात न हो तो IPv6 मेल को सीमित किया जा सकता है या delay किया जा सकता है
आखिरकार IPv6 एक और failure point बन जाता है, और शुरुआत में IPv4/IPv6 mixed transport domain बनाना शायद अच्छा विचार नहीं है
मुझे अभी तक कोई IPv6-only SMTP endpoint नहीं मिला है