डोमेन और पते
डोमेन जोड़ें और सत्यापित करें, उनके ज़रूरी DNS रिकॉर्ड पढ़ें, उन पर पते प्रबंधित करें, और जाँचें कि आप किस पते से भेज सकते हैं।
अवलोकन
आपके डोमेन को दो नेमस्पेस कवर करते हैं। openemail domains वर्कस्पेस से जुड़े डोमेन प्रबंधित करता है: उन्हें जोड़ना और हटाना, हर एक के ज़रूरी DNS रिकॉर्ड, वह मेल पा और भेज सकता है या नहीं, उसका कैच-ऑल, उसके ट्रैकिंग और फ़ाइल डोमेन, और उस पर मौजूद पते। openemail addresses एक सीमित सवाल का जवाब देता है: आप जो कुंजी या साइन-इन इस्तेमाल कर रहे हैं, वह किन पतों से भेज सकता है।
- डोमेन कमांड डोमेन ID लेती है, जो
domains listयाdomains createसे मिलने वाला UUID है। उसकी जगह होस्टनेम स्वीकार नहीं होता, इसलिएopenemail domains get acme.com404 देता है और कोड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-challengeTXT रिकॉर्ड प्रकाशित होना चाहिए। वरना कॉल 409domain_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 होता है जिसे क्रेडेंशियल कवर करता है, अपने पास के पूरे डोमेन से या पतों की अपनी सूची से।- बंद पते के लिए, क्रेडेंशियल जिसे कवर नहीं करता उसके लिए, और जिसका डोमेन अभी साइन नहीं कर सकता उसके लिए
canSendfalse होता है। - सिर्फ़ बनाए गए पते सूची में आते हैं। पूरे डोमेन वाला क्रेडेंशियल फिर भी उसके किसी भी लोकल-पार्ट से भेज सकता है, और उसकी सूची में मौजूद ऐसा पता जिसके पीछे कोई मेलबॉक्स नहीं, यहाँ दिखे बिना भी भेजने के लिए इस्तेमाल हो सकता है।
--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 --jsonaccount,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-allinvoices को हाथ से बनाने से कैच-ऑल बंद होने के बाद भी उस पर मेल आती रहती है, जबकि कैच-ऑल के पकड़े हर दूसरे पते की मेल अस्वीकार होती है। ड्राई रन PATCH और उसकी बॉडी को भेजे बिना प्रिंट करता है।
openemail domains update "$id" --tracking-host links.acme.com --json | jq '.tracking | {status, record, error}'openemail domains update "$id" --tracking-host nulladdress_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:read | domains list, get, list-addresses, get-address |
| domains:write | domains create, verify, update, delete, create-address, update-address, delete-address |
| emails:send | addresses list |
- स्कोप के बिना साइन-इन या कुंजी एग्ज़िट कोड
4के साथ रुकती है, छूटे स्कोप का नाम बताती है और उसे पाने का तरीका भी। domains deleteऔरdomains delete-addressपुष्टि माँगती हैं। ना कहने पर वे कोड10के साथ बाहर निकलती हैं और कुछ नहीं बदलतीं। बिना निगरानी के और--yesके बिना, वे कुछ भी भेजे जाने से पहले एग्ज़िट कोड2के साथ रुकती हैं।- ब्राउज़र साइन-इन के साथ ये दोनों हटाने सत्यापन कोड भी माँगते हैं, जैसे वेब ऐप करता है। बिना निगरानी के कोई उसे टाइप नहीं कर सकता, इसलिए कमांड एग्ज़िट कोड
4के साथ रुकती है। पहलेopenemail verifyचलाएँ, तो अगले 60 मिनट कोड की ज़रूरत नहीं। API कुंजी से कभी नहीं पूछा जाता। --dry-runवह अनुरोध उसकी बॉडी के साथ प्रिंट करता है जो बदलाव भेजता, और उसे भेजे या पुष्टि माँगे बिना कोड0के साथ बाहर निकलता है।- सूची एक पेज पढ़ती है:
--limit1 से 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है, क्योंकि इसे हटाने से पूरा मेलबॉक्स मिट जाता है, जिसकी पुष्टि वेब ऐप पहले करता है। आरक्षित अकाउंट पतों वाला डोमेन 409domain_holds_reserved_addressesहै। domains createऔर दोनों हटाने नेटवर्क विफलता के बाद कभी दोबारा नहीं आज़माए जाते। जवाब खो जाने के बाद आपकी अपनी दूसरी कोशिश पर 409domain_already_added, या 404, का मतलब है कि पहली कोशिश काम कर गई।verify,update,create-addressऔरupdate-addressअपने आप दोबारा आज़माए जाते हैं, क्योंकि इन्हें दो बार भेजने से नतीजा वही रहता है।