दस्तावेज़ पर जाएँ
CLI

डोमेन और पते

डोमेन जोड़ें और सत्यापित करें, उनके ज़रूरी DNS रिकॉर्ड पढ़ें, उन पर पते प्रबंधित करें, और जाँचें कि आप किस पते से भेज सकते हैं।

अवलोकन

आपके डोमेन को दो नेमस्पेस कवर करते हैं। openemail domains वर्कस्पेस से जुड़े डोमेन प्रबंधित करता है: उन्हें जोड़ना और हटाना, हर एक के ज़रूरी DNS रिकॉर्ड, वह मेल पा और भेज सकता है या नहीं, उसका कैच-ऑल, उसके ट्रैकिंग और फ़ाइल डोमेन, और उस पर मौजूद पते। openemail addresses एक सीमित सवाल का जवाब देता है: आप जो कुंजी या साइन-इन इस्तेमाल कर रहे हैं, वह किन पतों से भेज सकता है।

  • डोमेन कमांड डोमेन ID लेती है, जो domains list या domains create से मिलने वाला UUID है। उसकी जगह होस्टनेम स्वीकार नहीं होता, इसलिए openemail domains get acme.com 404 देता है और कोड 5 के साथ बाहर निकलता है।
  • पते की कमांड पहले डोमेन ID और फिर पते की ID लेती है, जो domains list-addresses या domains create-address से मिलने वाला UUID है।
  • domain और address भी नेमस्पेस नाम के रूप में काम करते हैं। डोमेन वर्ब सामान्य उपनामों से भी चलते हैं, जैसे ls, show, new, edit और rm, और addresses list भी। डोमेन के पतों के पाँच वर्ब, जैसे create-address, का कोई उपनाम नहीं है।
  • openemail <command> --help हर आर्ग्युमेंट और फ़्लैग की सूची देता है, उसके टाइप, कॉल के ज़रूरी स्कोप, मेथड और पाथ, और जो लौटता है उसके साथ। वही पेज डेटा के रूप में पाने के लिए --json जोड़ें।

हर कमांड

कमांडयह क्या करता है
openemail domains listवर्कस्पेस के डोमेन की सूची, वर्णक्रम में, उनके मेल पाने, भेजने, ट्रैकिंग और फ़ाइलों की स्थिति के साथ
openemail domains get <id>एक डोमेन पढ़ें, उसके पतों, उसके इस्तेमाल किए हर DNS रिकॉर्ड और हर एक मिला या नहीं, और उसकी DMARC रीडिंग के साथ
openemail domains create --domain <value>एक डोमेन जोड़ें। जवाब में प्रकाशित करने वाला हर DNS रिकॉर्ड होता है, जो एक बार पहले ही जाँचा जा चुका है
openemail domains verify <id>डोमेन का DNS तुरंत जाँचें और डोमेन को वैसा लौटाएँ जैसा जाँच ने उसे छोड़ा
openemail domains update <id>कैच-ऑल चालू या बंद करें, और ट्रैकिंग डोमेन और फ़ाइल डोमेन सेट करें या हटाएँ
openemail domains delete <id>डोमेन और उस पर मौजूद हर पता हटाएँ। पुष्टि माँगती है
openemail domains list-addresses <id>किसी डोमेन के पतों की सूची, उनकी ID, लेबल, चालू होने की स्थिति और हर एक को आख़िरी बार मेल कब मिली, इसके साथ
openemail domains create-address <id> --local-part <value>डोमेन पर एक चालू पता बनाएँ, वैकल्पिक --label के साथ
openemail domains get-address <id> <address-id>किसी डोमेन का एक पता पढ़ें
openemail domains update-address <id> <address-id>--label से पते का नाम बदलें, या --no-enabled और --enabled से उसे बंद और चालू करें
openemail domains delete-address <id> <address-id>किसी पते को उसके डोमेन से हटाएँ। पुष्टि माँगती है
openemail addresses listवे पते दिखाएँ जिनसे आप इस कुंजी या साइन-इन के साथ भेज सकते हैं, और हर डोमेन के मेल पाने और भेजने की स्थिति

हर फ़्लैग उसकी कमांड की मदद में है, उदाहरण के लिए openemail domains update --help या openemail domains create-address --help।

मेल पाना और भेजना

डोमेन दो स्वतंत्र तथ्य बताता है। receiving.verified तब true होता है जब सार्वजनिक DNS उसके MX रिकॉर्ड और उसके _openemail-challenge TXT रिकॉर्ड के साथ जवाब देने लगे, और तब से उसे मेल मिलती है। sending.status आख़िरी जाँच में दिखी साइनिंग स्थिति है: verified, pending, failed, no_identity या unknown। sending.canSend बताता है कि इस डोमेन से भेजना अभी स्वीकार होगा या नहीं, और एक दिन से पुराना नकारात्मक नतीजा अज्ञात माना जाता है, इसलिए स्क्रिप्ट को status के बजाय canSend पर फ़ैसला करना चाहिए। जब तक यह false है, इस डोमेन से भेजना 409 domain_not_sendable के साथ अस्वीकार होता है।

  • domains create कॉल के दौरान ही पहली DNS जाँच चलाती है, इसलिए records की हर एंट्री में पहले से एक status होता है: found, missing, या null जब उसे अभी जाँचा न गया हो। हर रिकॉर्ड ठीक वैसा ही प्रकाशित करें जैसा दिया गया है, क्योंकि मान उस डोमेन के लिए ख़ास होते हैं।
  • domains verify तुरंत जाँचती है। पिछली जाँच के 10 सेकंड के भीतर यह कुछ नया नहीं जाँचती और डोमेन को जैसा है वैसा लौटाती है। सत्यापित डोमेन पर यह साइनिंग रिकॉर्ड फिर से जाँचती है, इसलिए sending ताज़ा रहता है।
  • असत्यापित डोमेन पर domains get तब फिर से जाँचती है जब पिछली जाँच 20 सेकंड से पुरानी हो, इसलिए बार-बार get चलाना भी काम करता है और इसे सिर्फ़ domains:read चाहिए, जबकि verify को domains:write चाहिए।
  • अभी-अभी प्रकाशित रिकॉर्ड को सार्वजनिक DNS में दिखने में कुछ मिनट लग सकते हैं।

टर्मिनल पर get, create और verify हर लाइन में एक फ़ील्ड प्रिंट करती हैं, और receiving, sending और records जैसे नेस्टेड ब्लॉक कॉम्पैक्ट JSON के रूप में। --json जोड़ें और उन्हें jq जैसे टूल से पढ़ें, जैसा नीचे के उदाहरण करते हैं।

कैच-ऑल, ट्रैकिंग और फ़ाइल डोमेन

domains update तीन ऐसी सेटिंग्स बदलती है जो एक-दूसरे पर निर्भर नहीं हैं। जो फ़्लैग आप छोड़ देते हैं, उसे छुआ नहीं जाता, और बिना किसी फ़्लैग के डोमेन बिना बदले लौट आता है।

फ़्लैगयह क्या बदलता है
--catch-all, --no-catch-allचालू होने पर डोमेन के किसी भी ऐसे पते की मेल स्वीकार होती है जिसे किसी ने नहीं बनाया, और वह पता अपने पहले संदेश से list-addresses में दिखता है। बंद होने पर हाथ से न बनाए गए हर पते की मेल अस्वीकार होती है, उनकी भी जिन्हें कैच-ऑल ने पहले पकड़ा था। नया डोमेन इसे चालू रखकर शुरू होता है
--tracking-host <value>ट्रैक किए लिंक और ओपन पिक्सेल के लिए links.acme.com जैसा सबडोमेन। null उसे हटा देता है
--storage-host <value>डोमेन से भेजी गई फ़ाइलों के डाउनलोड लिंक के लिए files.acme.com जैसा सबडोमेन। null उसे हटा देता है
  • नया होस्ट उसी कॉल में सहेजा और जाँचा जाता है। जवाब के tracking या storage ब्लॉक से record.name नाम और record.value मान वाला CNAME रिकॉर्ड प्रकाशित करें, हर तरह की प्रॉक्सी बंद रखकर। होस्ट को फिर से सेट करने पर उसे अलग मान मिल सकता है, इसलिए वही प्रकाशित करें जो सबसे नया जवाब बताता है।
  • जब तक कोई जाँच पास न हो, होस्ट pending दिखाता है और नई मेल डिफ़ॉल्ट OpenEmail होस्ट ही इस्तेमाल करती है। एक जाँच पास होते ही यह active दिखाता है। OpenEmail ख़ुद जाँचता रहता है, और जो सक्रिय होस्ट लगातार तीन जाँचों में विफल हो, या जिसकी आख़िरी पास हुई जाँच 2 घंटे पुरानी हो, वह failed दिखाता है और नई मेल डिफ़ॉल्ट होस्ट पर लौट जाती है।
  • होस्ट को null से हटाएँ, जैसे --tracking-host null। --tracking-host= जैसा ख़ाली मान CLI में उपयोग की एरर है और कोड 2 के साथ बाहर निकलता है।
  • नए होस्ट के लिए डोमेन सत्यापित होना चाहिए, या कम से कम उसका _openemail-challenge TXT रिकॉर्ड प्रकाशित होना चाहिए। वरना कॉल 409 domain_not_verified के साथ अस्वीकार होती है।
  • फ़्लैग क्रम से लागू होते हैं: पहले कैच-ऑल, फिर ट्रैकिंग डोमेन, फिर फ़ाइल डोमेन। बाद का कोई फ़्लैग अस्वीकार हो तो भी पहले का बदलाव सहेजा रह सकता है, इसलिए जब हर एक को अलग से टिकना हो, तो उन्हें अलग-अलग कॉल में भेजें।

डोमेन पर पते

डोमेन में हाथ से या API से बनाए गए पते होते हैं, और वे भी जिन्हें उनके लिए पहली मेल आने पर कैच-ऑल ने पकड़ा। list-addresses दोनों तरह के दिखाती है, बंद पते भी। कैच-ऑल ख़ुद कोई पंक्ति नहीं है: यह डोमेन पर receiving.catchAll है।

  • create-address --local-part लेती है, यानी @ से पहले का हिस्सा, और एक वैकल्पिक --label। डोमेन का अभी सत्यापित होना ज़रूरी नहीं, पर जब तक वह न हो, पते पर कुछ नहीं आता। अकेला * अस्वीकार होता है, क्योंकि कैच-ऑल ऐसे ही लिखा जाता है।
  • पहले से मौजूद या हटाया गया पता बनाना एरर नहीं है। वह चालू होकर लौटता है, आपके भेजे लेबल के साथ या बिना लेबल के, और अपनी ID रखता है। कैच-ऑल का पकड़ा पता हाथ से बनाया गया पता बन जाता है, इसलिए कैच-ऑल बंद होने के बाद भी उस पर मेल आती रहती है।
  • कैच-ऑल चालू होने पर नया पता कैच-ऑल की प्रति-पता सेटिंग्स के साथ शुरू होता है, जैसे उसका हस्ताक्षर और ट्रैकिंग, प्राइवेसी सेटिंग्स को छोड़कर। ये एक बार कॉपी होती हैं और आगे साथ-साथ नहीं बदलतीं।
  • update-address --no-enabled पते पर मेल आना रोक देती है, इसलिए भेजने वालों को बाउंस मिलता है, और उससे कुछ भेजा नहीं जा सकता। पते की मेल, सेटिंग्स और उस तक पहुँच रखने वाले लोग बने रहते हैं, और --enabled वहीं से शुरू करता है जहाँ रुका था। --label उसका नाम बदलता है, और --label null नाम हटा देता है।
  • delete-address और आगे जाती है। कैच-ऑल चालू होने पर भी पते की मेल अस्वीकार होती है, उसकी फ़ॉरवर्डिंग रुक जाती है, उसकी सेटिंग्स मिट जाती हैं, जिन्हें उस तक पहुँच दी गई थी उनकी पहुँच चली जाती है, और उसका पासवर्ड साइन-इन रद्द हो जाता है। जो मेल पहले ही आ चुकी है वह मेलबॉक्स में रहती है। उसे फिर से बनाने पर वही ID लौटती है, पुरानी सेटिंग्स या पहुँच के बिना।

आप किन पतों से भेज सकते हैं

openemail addresses list 403 from_address_forbidden के पीछे के सवाल का जवाब देता है: जिस कुंजी या साइन-इन से आप कॉल कर रहे हैं, वह From में कौन-से पते डाल सकता है। इसे पढ़ने के स्कोप के बजाय emails:send चाहिए, क्योंकि यह बताता है कि भेजना क्या स्वीकार करेगा।

  • टर्मिनल पर यह दो टेबल प्रिंट करता है: पहले पते, हर एक के साथ कि वह चालू है या नहीं और आप उससे भेज सकते हैं या नहीं, फिर डोमेन, हर एक के साथ कि वह मेल पाने और भेजने के लिए सत्यापित है या नहीं, और उसका कैच-ऑल।
  • unrestricted तब true होता है जब क्रेडेंशियल पर कोई पाबंदी न हो। तब वर्कस्पेस के डोमेन के किसी भी लोकल-पार्ट से भेजा जा सकता है, उनसे भी जिन्हें किसी ने नहीं बनाया। वरना canSend सिर्फ़ उस चालू पते के लिए true होता है जिसे क्रेडेंशियल कवर करता है, अपने पास के पूरे डोमेन से या पतों की अपनी सूची से।
  • बंद पते के लिए, क्रेडेंशियल जिसे कवर नहीं करता उसके लिए, और जिसका डोमेन अभी साइन नहीं कर सकता उसके लिए canSend false होता है।
  • सिर्फ़ बनाए गए पते सूची में आते हैं। पूरे डोमेन वाला क्रेडेंशियल फिर भी उसके किसी भी लोकल-पार्ट से भेज सकता है, और उसकी सूची में मौजूद ऐसा पता जिसके पीछे कोई मेलबॉक्स नहीं, यहाँ दिखे बिना भी भेजने के लिए इस्तेमाल हो सकता है।
  • --json के साथ यह एक पेज के लिए { unrestricted, addresses, domains, hasMore, nextCursor } प्रिंट करता है, और --all के साथ { unrestricted, addresses, domains }, न कि वह { items, hasMore, nextCursor } दस्तावेज़ जो दूसरी सूचियाँ प्रिंट करती हैं। पाइप में --all के साथ, या --ndjson के साथ, यह हर लाइन में एक पता प्रिंट करता है।

status, open और DNS प्रोवाइडर

openemail status आपका साइन-इन, addresses list और domains list एक साथ पढ़ता है और उन्हें साथ में प्रिंट करता है। इसकी Sender addresses टेबल हर पता दिखाती है, इस जानकारी के साथ कि वह भेज सकता है या नहीं और चालू है या नहीं। इसकी Domains टेबल हर डोमेन को मेल पाने के लिए verified या not verified, उसकी भेजने की स्थिति और उसके कैच-ऑल के साथ दिखाती है। यह हर एक के पहले 100 दिखाता है और बाकी के लिए --all वाली कमांड बताता है।

  • जो हिस्सा आपका क्रेडेंशियल नहीं पढ़ सकता, जैसे domains:read के बिना डोमेन या emails:send के बिना पते, वह कारण के साथ Not available दिखाता है, और बाकी फिर भी प्रिंट होता है।
  • अभी कोई पता न हो, तो यह openemail domains create --domain example.com सुझाता है।
  • openemail status --json account, addresses, domains और unavailable वाला एक ऑब्जेक्ट प्रिंट करता है, जहाँ unavailable हर उस हिस्से का कारण बताता है जो पढ़ा नहीं जा सका।

DNS प्रोवाइडर जोड़ना, ताकि नए डोमेन के रिकॉर्ड आपके लिए लिखे जाएँ, 0.0.2 में सिर्फ़ वेब ऐप में होता है। openemail open providers, या open dns, वह पेज खोलता है। open domains डोमेन और उनके DNS रिकॉर्ड खोलता है, और open addresses पते। फ़ॉरवर्डिंग भी वेब ऐप में है, और open forwarding <address> उसे एक पते के लिए खोलता है। --print ब्राउज़र खोलने के बजाय लिंक प्रिंट करता है।

जहाँ OpenEmail ने डोमेन का DNS ख़ुद लिखा था, वहाँ domains delete वे रिकॉर्ड वापस ले लेती है और जिन्हें न ले सकी उन्हें leftBehind में बताती है, ताकि आप उन्हें अपने DNS प्रोवाइडर पर हटा सकें। आपके ख़ुद प्रकाशित किए रिकॉर्ड को कभी छुआ नहीं जाता, इसलिए डोमेन हटने के बाद उन्हें भी हटाएँ।

उदाहरण

डोमेन जोड़ें और उसके रिकॉर्ड प्रकाशित करें
openemail domains create --domain acme.com --json > acme.jsonjq -r '.records[] | [.type, .name, .value, (.priority // "")] | @tsv' acme.jsonopenemail domains verify "$(jq -r .id acme.json)"
मेल आने तक रुकें, फिर भेजना जाँचें
id=b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6funtil openemail domains get "$id" --json | jq -e .receiving.verified > /dev/null; do  sleep 30doneopenemail domains get "$id" --json | jq '.sending | {status, canSend, error}'
एक पता रखते हुए कैच-ऑल बंद करें
openemail domains list-addresses "$id" --allopenemail domains create-address "$id" --local-part invoices --label Invoicesopenemail domains update "$id" --no-catch-all --dry-runopenemail domains update "$id" --no-catch-all

invoices को हाथ से बनाने से कैच-ऑल बंद होने के बाद भी उस पर मेल आती रहती है, जबकि कैच-ऑल के पकड़े हर दूसरे पते की मेल अस्वीकार होती है। ड्राई रन PATCH और उसकी बॉडी को भेजे बिना प्रिंट करता है।

ट्रैकिंग डोमेन सेट करें, फिर हटाएँ
openemail domains update "$id" --tracking-host links.acme.com --json | jq '.tracking | {status, record, error}'openemail domains update "$id" --tracking-host null
किसी पते को रिटायर करें
address_id=$(openemail domains list-addresses "$id" --all | jq -r 'select(.address == "[email protected]") | .id')openemail domains update-address "$id" "$address_id" --no-enabledopenemail domains delete-address "$id" "$address_id" --yes

पहले पते को बंद करना --enabled से पलटा जा सकता है। हटाना नहीं, और स्क्रिप्ट में इसके लिए --yes चाहिए। ब्राउज़र साइन-इन के साथ यह सत्यापन कोड भी माँगता है, जिसे --yes कभी नहीं छोड़ता।

स्क्रिप्ट से जाँच करें
openemail domains list --all | jq -r 'select(.sending.canSend | not) | [.domain, .sending.status] | @tsv'openemail addresses list --all --json | jq -r '.addresses[] | select(.canSend) | .address'

स्कोप, पुष्टि और एरर

स्कोपकमांड
domains:readdomains list, get, list-addresses, get-address
domains:writedomains create, verify, update, delete, create-address, update-address, delete-address
emails:sendaddresses list
  • स्कोप के बिना साइन-इन या कुंजी एग्ज़िट कोड 4 के साथ रुकती है, छूटे स्कोप का नाम बताती है और उसे पाने का तरीका भी।
  • domains delete और domains delete-address पुष्टि माँगती हैं। ना कहने पर वे कोड 10 के साथ बाहर निकलती हैं और कुछ नहीं बदलतीं। बिना निगरानी के और --yes के बिना, वे कुछ भी भेजे जाने से पहले एग्ज़िट कोड 2 के साथ रुकती हैं।
  • ब्राउज़र साइन-इन के साथ ये दोनों हटाने सत्यापन कोड भी माँगते हैं, जैसे वेब ऐप करता है। बिना निगरानी के कोई उसे टाइप नहीं कर सकता, इसलिए कमांड एग्ज़िट कोड 4 के साथ रुकती है। पहले openemail verify चलाएँ, तो अगले 60 मिनट कोड की ज़रूरत नहीं। API कुंजी से कभी नहीं पूछा जाता।
  • --dry-run वह अनुरोध उसकी बॉडी के साथ प्रिंट करता है जो बदलाव भेजता, और उसे भेजे या पुष्टि माँगे बिना कोड 0 के साथ बाहर निकलता है।
  • सूची एक पेज पढ़ती है: --limit 1 से 100 लेता है और इसे छोड़ने पर सर्वर 25 भेजता है, और --cursor पिछले पेज का nextCursor लेता है। --all हर पेज पढ़ता है, --max <n> उतने आइटम के बाद रुकता है, और --ndjson, या पाइप में --all, हर लाइन में एक JSON ऑब्जेक्ट प्रिंट करता है। --json के साथ domains list और list-addresses एक { items, hasMore, nextCursor } दस्तावेज़ प्रिंट करती हैं।
  • किसी ख़ास डोमेन या पतों तक सीमित कुंजी या साइन-इन भी हर डोमेन और पता देखती है। वह डोमेन नहीं जोड़ सकती, और हर दूसरे बदलाव के लिए पूरा डोमेन उसके पास के डोमेन में होना चाहिए, वरना कॉल 422 capability_unsupported के साथ अस्वीकार होती है।
  • अस्वीकार होने पर कमांड उसकी स्थिति के कोड के साथ बाहर निकलती है: 403 के लिए 4, जैसे domain_allowance_reached जब प्लान और डोमेन की अनुमति न दे, 404 के लिए 5, 409 के लिए 6, जैसे domain_already_added या domain_claimed, और 422 के लिए 7, जैसे invalid_tracking_host या workspace_limit_reached।
  • वर्कस्पेस का आख़िरी डोमेन CLI से नहीं हटाया जा सकता। यह 409 last_domain है, क्योंकि इसे हटाने से पूरा मेलबॉक्स मिट जाता है, जिसकी पुष्टि वेब ऐप पहले करता है। आरक्षित अकाउंट पतों वाला डोमेन 409 domain_holds_reserved_addresses है।
  • domains create और दोनों हटाने नेटवर्क विफलता के बाद कभी दोबारा नहीं आज़माए जाते। जवाब खो जाने के बाद आपकी अपनी दूसरी कोशिश पर 409 domain_already_added, या 404, का मतलब है कि पहली कोशिश काम कर गई। verify, update, create-address और update-address अपने आप दोबारा आज़माए जाते हैं, क्योंकि इन्हें दो बार भेजने से नतीजा वही रहता है।

आगे कहाँ जाएँ

आपका इनबॉक्स,
आपकी अपनी शर्तों पर।

व्यवसायों, AI, एजेंट और निजी ईमेल के लिए ईमेल इन्फ़्रास्ट्रक्चर। स्केल, निजता और नियंत्रण के लिए बना। वह सब जो ईमेल में पहले दिन से होना चाहिए था।

OpenEmail

व्यवसायों, AI, एजेंट और निजी ईमेल के लिए ईमेल इन्फ़्रास्ट्रक्चर। स्केल, निजता और नियंत्रण के लिए बना। वह सब जो ईमेल में पहले दिन से होना चाहिए था।

© 2026 OpenEmail. सर्वाधिकार सुरक्षित।