2017-04-15 12 views
10

मैंने एक कस्टम ईमेल सर्वर और वेब क्लाइंट लागू किया है। सर्वर सिर्फ एक आरईएसटी एपीआई है (Google के जीमेल एपीआई के समान) जो भेजने और प्राप्त करने के लिए तीसरी पार्टी (प्रेषक) का उपयोग करता है। ईमेल डेटाबेस में संग्रहीत हैं। वेब क्लाइंट सिर्फ भेजने और प्राप्त करने के लिए आरईएसटी क्लाइंट से बात करता है।आईएमएपी सर्वर फेकाडे - कैसे एक बनाना है?

इस दृष्टिकोण के साथ समस्या यह आईएमएपी को कहीं भी लागू नहीं करती है, जो मानक ईमेल (दृष्टिकोण, आईफोन, आदि) के लिए कनेक्ट करने और हमारे ईमेल एपीआई का उपयोग करने के लिए असंभव बनाता है। यह ग्राहकों को ईमेल के लिए केवल हमारे ग्राहक का उपयोग करने के लिए सीमित करता है।

मुझे कुछ प्रकार की आईएमएपी सर्वर "मुखौटा" की आवश्यकता है जो ग्राहकों को कनेक्शन का प्रबंधन करेगा और वास्तव में अनुरोधों को संभालने के लिए मेरे आरईएसटी एपीआई को कॉल करेगा (ईमेल प्राप्त करें, ईमेल भेजें, आदि)।

आईएमएपी मुखौटा कैसे लागू किया जा सकता है? क्या मौजूदा मेलसेवर लेने और इसे बंद करने का कोई तरीका हो सकता है और मेरे एपीआई को कॉल करने के लिए सभी "घटनाओं" को इंगित कर सकता है?

+0

हाँ, यह संभव है। उदाहरण के लिए, डोवकोट, आपको स्टोरेज मॉड्यूल में प्लग करने देता है। – arnt

+0

क्या आपके पास भाषा वरीयता है? – vzwick

+0

सवाल कहता है .net, तो C# ish ... लेकिन सी # में बहुत सारे IMAP सर्वर कोड नहीं हैं। ग्राहक, हाँ, निश्चित है, लेकिन सर्वर नहीं है, और अब तक समस्या का सबसे बड़ा हिस्सा IMAP की सेवा करना है ... – arnt

उत्तर

2

(यह मूल रूप से मेरी टिप्पणी को फिर से है, लेकिन बहुत-सी सविस्तार।)

कुछ IMAP सर्वर, सबसे विशेष रूप Dovecot, इस तरह संरचित कर रहे है कि फ़ाइल का उपयोग एक से परिभाषित इंटरफेस के साथ एक अलग मॉड्यूल में है। डोवकोट एकमात्र नहीं है, लेकिन यह अब तक का सबसे लोकप्रिय है और इसके बैकएंड इंटरफ़ेस को उपयुक्त माना जाता है, इसलिए मैं उस अनुपस्थित विशिष्ट चिंताओं को ले जाऊंगा।

imapc जैसे गैर-फ़ाइल मॉड्यूल पहले से मौजूद हैं, जो साबित करता है कि यह किया जा सकता है। जब कोई ग्राहक IMAPC द्वारा समर्थित मेलबॉक्स खोलता है, तो डोवकोट आईएमएपी कमांड का विश्लेषण करता है, आईएमएपीसी में संदेश एक्सेस फ़ंक्शंस को कॉल करता है, आईएमएपीसी नए आईएमएपी कमांड जारी करता है, सर्वर प्रतिक्रियाओं को पार करता है, डोवकोट में सी स्ट्रक्चर देता है, डोवकोट फैशन नए आईएमएपी प्रतिक्रिया देता है और उन्हें क्लाइंट को वापस देता है ।

मेरा सुझाव है कि आप dovecot source ले, that directory में src/lib-storage/inbox/index/imapc और अन्य बैकेंड को देखें, और एक है कि एक ग्राहक के रूप में अपने REST API बोलती लागू।

2

टीएल: डॉ; पर्ल में अपना प्रवेश द्वार लिखें; नेट :: IMAP :: सर्वर का उपयोग करें; नेट :: IMAP :: सर्वर :: मेलबॉक्स ओवरराइड; और अपने सर्वर से बात करने के लिए कई पर्ल आरईएसटी क्लाइंटों में से एक का उपयोग करें।

उचित सुरक्षा कोड बनाए रखने के दौरान, जल्दी से ऐसा करने के लिए आपकी सबसे अच्छी शर्त पर्ल के साथ है। आपको दो पर्ल मॉड्यूल की आवश्यकता होगी। पहला Net::IMAP::Server है, और here उस मॉड्यूल के लिए गिथब रिपोजिटरी है। यह एक मानक-अनुरूप आरएफसी 3501 सर्वर है जिसे जानबूझकर कॉन्फ़िगर करने योग्य मेल स्टोर रखने के लिए डिज़ाइन किया गया था। आप अपने नेट कोड के साथ डिफ़ॉल्ट नेट :: IMAP :: सर्वर :: मेलबॉक्स कार्यान्वयन को ओवरराइड करेंगे जो आपके कस्टम ईमेल बैकएंड से बात करता है।

अपने दूसरे मॉड्यूल के लिए, अपने आरईएसटी सर्वर से बात करने के लिए उपयोग करने के लिए अपने पसंदीदा पर्ल मॉड्यूल का चयन करें। आपकी पसंद इस बात पर निर्भर करती है कि आप आरईएसटी संदेशों के निर्माण और वितरण पर कितना बढ़िया नियंत्रण चाहते हैं।

सौभाग्य से, यहां आपके पास बहुत सारे विकल्प हैं। एक संभावना Eixo::REST है, जिसमें एक गिथब रिपोजिटरी here है। Eixo :: REST एसिंक्रोनस बनाम सिंक्रोनस REST API कॉल के साथ अच्छी तरह से सौदा करने लगता है, लेकिन यह X509 कुंजी प्रबंधन पर बहुत अधिक नियंत्रण प्रदान नहीं करता है। इस पर निर्भर करता है कि आपकी एपीआई कितनी googley है, REST::Google मॉड्यूल भी है। दिलचस्प बात यह है कि इस परिवार में REST::Google::Apps::EmailSettings मॉड्यूल भी है, खासकर जीमेल-विशिष्ट फंकनेस जैसे लेबल और भाषाओं को सेट करने के लिए। अंत में, REST::Consumer मॉड्यूल पेरल ऑब्जेक्ट इंस्टेंटेशन के पैरामीटर के रूप में कई https-विशिष्ट चीजों जैसे टाइमआउट और प्रमाणीकरण को समाहित करता है।

यदि आप इन मौजूदा ढांचे का उपयोग करते हैं, तो आवश्यक कोड का लगभग 9 0% आपके लिए पहले से ही किया जाना चाहिए।

डॉककोट या सी या सी ++ में लिखे गए किसी अन्य मेल सर्वर को हैक करके ऐसा न करें। यदि आप एक संकलित भाषा का उपयोग कर मेल सर्वर को जल्दी से एक साथ हैक करते हैं, तो आपका सर्वर जल्द ही या बाद में बफर ओवरफ्लो और स्टैक स्मैशिंग और मेल सर्वर पर बकवास करने के लिए हर चीज का अनुभव करेगा। इसे पहले सुरक्षित रूप से काम करें, फिर बाद में अनुकूलित करें।

+0

समझ में आता है। और पर्ल मेल से निपटने के लिए एक आदर्श भाषा की तरह दिखता है क्योंकि पर्ल टेक्स्ट पार्सिंग और मैनेजमेंट में एक चैंप है। तो मुझे तब एक पर्ल गुरु की आवश्यकता है, क्योंकि मैं बहुत पर्ल नोब हूं और ऐसा करने का समय नहीं है ... – richard

1

जब से तुम नेट से परिचित हैं, मैं या तो अपने पसंद के हिसाब से IMAPv4 सर्वर के निम्नलिखित कार्यान्वयन की हैकिंग सुझाव है:

  • Lumisoft Mail Server - एक बहुत पुरानी परियोजना वास्तव में (इसे कहते हैं "परिपक्व" करते हैं, है ना?)। दशक की पुरानी वेबसाइट और गिटब लिंक की कमी से बहुत दूर न हो जाएं - स्रोत "अन्य डाउनलोड" के तहत प्रदान किया जाता है।
  • McNNTP - एक पुरानी परियोजना और एनएनटीपी (जैसा कि नाम कहता है) पर एक प्रमुख फोकस के साथ, लेकिन आप IMAP घटक के संदर्भ में जो हासिल करने की कोशिश कर रहे हैं उसके बहुत करीब हैं। Take a look, you'll probably find this a good starting point.
संबंधित मुद्दे