सुरक्षित, IMAP, ईमेल सर्वर सेट करने का सबसे सरल तरीका? [बन्द है]


17

मैं एक ईमेल प्रदाता के रूप में Google से छुटकारा पाना चाहूंगा, और अपने समर्पित सर्वर पर एक पूर्ण ईमेल समाधान स्थापित करूंगा। मुद्दा: मैं चाहता हूं कि सेटअप यथासंभव सरल हो, ताकि समस्या होने पर फिर से सब कुछ सेट करने के लिए दर्द न हो।

आवश्यक शर्तें

  • मशीन पर केवल एक उपयोगकर्ता खाता।
    • (नाम diti; मुख्य ई-मेल kra@diti.me; अन्य उपनामों को पुनर्निर्देशित किया जाता है लेकिन एक ई-मेल क्लाइंट विभिन्न उपनामों और उनके अनुसार प्रतिक्रिया कर सकता है)
  • अधिमानतः MySQL का उपयोग नहीं करता है।
    • (डेटा बैकअप के मामले में और साथ ही सादगी के लिए पुनर्स्थापित करें, यह बेहतर है अगर कोई कार्यात्मक ई-मेल सर्वर प्राप्त करने से पहले MySQL को स्थापित और सुरक्षित न करे)
  • ई-मेल को बाहर से (IMAP और SMTP) एक्सेस किया जा सकता है।
  • IMAP और SMTP प्रमाणीकरण के लिए SSL / TLS एन्क्रिप्शन (मैं CAcert प्रमाणपत्रों का उपयोग कर रहा हूं , क्या इससे कोई फर्क पड़ता है?)।

मेरा मानना ​​है कि सादगी, IMAP / SMTP पहुंच, और सुरक्षित स्थिति, "मूल" विशेषताएं हैं जो हर कोई Google / जो कुछ भी छोड़ने के लिए उत्सुक है, वह चाहेगा। अगर मुझसे गलती हुई है और एक सरल समाधान है (उदाहरण के लिए, एक खुद का क्लॉक जैसा समाधान, जिसमें सब कुछ शामिल है), तो मुझे सुनकर खुशी होगी।

मुझे लगता है कि Postfix और Dovecot का संयोजन जाने का रास्ता होगा। वैसे, मैं डेबियन चला रहा हूं।

मुझे अब तक मिली जानकारी

  • एक फ्रांसीसी लेख बहुत लंबे विवरणों में वर्णन करता है कि एक पूर्ण, सुरक्षित ई-मेल समाधान कैसे सेट किया जाए। यह लंबे समय तक बनाए रखने के लिए कठिन है, बैकअप के लिए कठिन है और बहाल करना, आदि इसके अलावा, एक DNS कैश आवश्यक है?
  • द जेंटू विकी ( Complete_Virtual_Mail_Server/SSL_Certificatesपेज) में CAcert प्रमाणपत्रों के उपयोग का उल्लेख है, लेकिन इसके बारे में न तो स्पष्ट है ( SubjectAltNameन ही उन सभी उप-डोमेन आवश्यक हैं?), और न ही इसका उपयोग पोस्टफ़िक्स (मैंने पढ़ा है कि कूरियर अधिक कठिन है)।
  • स्व-होस्टिंग के बारे में विभिन्न ट्यूटोरियल, सभी अलग-अलग, शायद ही कभी यह वर्णन करते हैं कि वे क्या कर रहे हैं और क्यों (रिमोट एक्सेस के साथ स्व-होस्टेड ई-मेल सेट अप करने के लिए जटिल लगता है, इसलिए सिर्फ "डमी?" के लिए स्पष्टीकरण के बिना आदेशों की एक सूची प्रदान करना क्यों आवश्यक है? ।

मुझे आशा है कि मैंने सही बातें पूछी हैं, और वे भी मूर्खतापूर्ण नहीं हैं।


1
किसी भी विचार कैसे इस सवाल को फिर से परिभाषित और फिर से खोला जा सकता है?
दिति

जवाबों:


19
  • नहीं, सर्वर पर DNS कैश सेट करना आवश्यक नहीं है। सर्वर को एक कैशिंग डीएनएस रिज़ॉल्वर का उपयोग करना चाहिए जो कि कहीं आस-पास है, लेकिन अधिकांश होस्टिंग कंपनियां पहले से ही पूरे डेटासेंटर के लिए अपने स्वयं के रिज़ॉल्वर चलाते हैं और डिफ़ॉल्ट रूप से उपयोग करने के लिए सर्वर को कॉन्फ़िगर करते हैं।

  • डिफ़ॉल्ट रूप से, Postfix और Dovecot दोनों हर चीज के लिए स्थानीय खातों का उपयोग करते हैं। यदि आपके पास एक लिनक्स खाता है diti, तो आप इसके साथ डवकोट में लॉग इन कर सकते हैं, और डवकोट के खिलाफ SMTP लॉगइन को मान्य करने के लिए पोस्टफिक्स सेट कर सकते हैं ।

  • यदि आप एक ही खाते में सभी मेल करने के साथ ठीक हैं, तो आप /etc/aliasesमेल को खाते में kra@या उसके postmaster@लिए पुनर्निर्देशित करने के लिए सादे उपनाम (जैसे ) सेट कर सकते ditiहैं।

  • उन सभी विषय के नाम आवश्यक नहीं हैं। आपके द्वारा आवश्यक केवल वही डोमेन नाम हैं जिनके लिए आप वास्तव में उपयोग करने जा रहे हैं , जैसे mail.diti.meया glaux.diti.me। यदि आप डोमेन (यानी diti.me) को शामिल करने की आवश्यकता है, तो मुझे यकीन नहीं है ।


निम्न मानता है कि डोमेन में पहले से ही इस सर्वर पर इंगित करने के लिए MX रिकॉर्ड कॉन्फ़िगर किए गए हैं। मैं आमतौर पर अपने विन्यास को यथोचित रूप से स्पष्ट रखने की कोशिश करता हूं, क्योंकि मैं हमेशा सोचता रहता हूं "कुछ महीनों बाद" यह क्या है।

1. सबसे पहले, postfixऔर dovecot-imapdपैकेज स्थापित करें । पोस्टफ़िक्स कॉन्फ़िगरेशन के बारे में संकेत मिलने पर, "इंटरनेट साइट" विकल्प चुनें और diti.meमेल नाम के रूप में दर्ज करें। इस बिंदु पर, आप पहले से ही मेल भेज और प्राप्त कर सकते हैं diti@diti.me, और शायद IMAP से भी कनेक्ट करें।

हालाँकि, इसमें अभी तक एसएसएल नहीं है, न ही बाहर से एसएमटीपी पर मेल भेजने की अनुमति है, न ही मेल को स्टोर करने के लिए एक साने जगह (डिफ़ॉल्ट एक एमबॉक्स फाइल है /var/mail, जो अविश्वसनीय है और खराब प्रदर्शन देता है, खासकर आईएमएपी के साथ)।

2. यदि आपके पास पहले से ही एसएसएल प्रमाण पत्र है, तो इसे /etc/ssl/private/diti.me.pemऔर निजी कुंजी में डालें /etc/ssl/private/diti.me.key। सटीक स्थान वास्तव में मायने नहीं रखता है, लेकिन /etc/ssl/privateजहां डेबियन उन्हें रखता है।

सुनिश्चित करें कि दोनों फाइलें ssl-certसमूह के स्वामित्व और पढ़ने योग्य हैं , ताकि पोस्टफिक्स और डवकोट उन तक पहुंच सकें। साथ ही दोनों डेमॉन के खातों को उस समूह में जोड़ें gpasswd -a

3. डेबियन का ऑटो-जेनरेटेड पोस्टफिक्स main.cfथोड़ा गड़बड़ है, इसलिए, मैं सिर्फ एक साफ-सुथरा न्यूनतम संस्करण पोस्ट करने जा रहा हूं:

# सर्वर जानकारी
mydomain = diti.me
myorigin = $ mydomain
  # विभिन्न अन्य पैरामीटर इन दो चर को डिफ़ॉल्ट मान के रूप में उपयोग करते हैं।

# SMTP सेवा
smtpd_tls_security_level = हो सकता है
smtpd_tls_cert_file = /etc/ssl/pStreet/diti.me-me.em
smtpd_tls_key_file = /etc/ssl/pStreet/diti.me-mail.key
  # इससे सभी आने वाले SMTP कनेक्शन पर STARTTLS का उपयोग किया जा सकता है।
  # ध्यान दें कि `पोस्टफिक्स 'को सक्षम करने के लिए` एसएसएल-सर्टिफिकेट' समूह में जोड़ा जाना चाहिए
  # / etc / ssl / निजी में फ़ाइलों का उपयोग करने के लिए।

# नीतियां
mynetworks = [:: 1] / 128, 127.0.0.0/8, [::ffff:127.0.0.0644/4
  # यह उन आईपी पतों को सूचीबद्ध करता है जिन्हें "विश्वसनीय" माना जाता है और उपयोग कर सकते हैं
  # यह सर्वर बाहर (यानी अन्य डोमेन के लिए) मेल भेजने के लिए। द्वारा
  # डिफ़ॉल्ट, केवल "लोकलहोस्ट" की अनुमति है। बाकी सब से केवल मेल के लिए
  # $ mydestination में डोमेन स्वीकार किए जाएंगे।
mydestination = $ mydomain, localhost
  # किसी भी आईपी पते से मेल स्वीकार करने के लिए डोमेन की सूची। 
# डिलीवरी
alias_maps = hash: / etc / उपनाम
  # इससे सिस्टम-वाइड एलियास बना रहता है। इसे स्पष्ट रूप से सेट करना अच्छा है क्योंकि
  # डिफ़ॉल्ट मान में कभी-कभी NIS शामिल होता है, जिसका कोई मतलब नहीं है।
प्राप्तकर्ता_दिलीमित्र = +
  # पहले '+' पते के स्थानीय भाग को विभाजित करने के लिए पोस्टफिक्स बताता है,
  # तथाकथित "प्लस-एड्रेसिंग": diti + foo @ को भेजे गए मेल को डिलीवर किया जाएगा
  # diti @ मेलबॉक्स में।

Dovecot के लिए, डेबियन बस डिफ़ॉल्ट उदाहरण कॉन्फ़िगरेशन का उपयोग करता है, और वे पर्याप्त अच्छे हैं, प्रत्येक विकल्प के साथ वर्णित है।

जब भी आप कॉन्फ़िगरेशन बदलते हैं, postfix reloadऔर / या के साथ डेमॉन को पुनः लोड करें doveadm reload

4. डिफ़ॉल्ट रूप से, पोस्टफिक्स मेलबॉक्स फॉर्मेट /var/mail/$USERमें मेल डिलीवर करता है, जो काफी सरल है (आप इसे आसानी से टेक्स्ट एडिटर के साथ देख सकते हैं) लेकिन कई समस्याएं हैं, खासकर IMAP के साथ, क्योंकि जब भी आप एक फाइल को स्थानांतरित करते हैं तो पूरी फाइल को फिर से लिखना पड़ता है। संदेश या यहां तक ​​कि एक को "पढ़ा" या "अपठित" के रूप में चिह्नित करें।

Maildir का उपयोग करने के लिए दोनों डेमन को बदलें। (अन्य प्रारूप हैं, लेकिन वे एमटीए या एमडीए या आईएमएपी सर्वर या जो भी हो, के लिए विशिष्ट हैं;

में /etc/postfix/main.cf, "वितरण" अनुभाग के लिए निम्नलिखित जोड़ें:

home_mailbox = मेल /

Dovecot को उसी पथ का उपयोग करने के लिए कॉन्फ़िगर करें, जिसमें /etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir: ~ / मेल

5. कुछ बिंदु पर, आपको एसएसएल का उपयोग करने के लिए डॉवकोट को भी बताना होगा। प्रासंगिक सेटिंग्स में हैं /etc/dovecot/conf.d/10-ssl.conf। वास्तव में, डवकोट के लिए डेबियन पैकेज पहले से ही एसएसएल का उपयोग करता है, हालांकि एक स्व-हस्ताक्षरित प्रमाण पत्र के साथ जो ज्यादातर बेकार है। अपने प्रमाणपत्र का उपयोग करने के लिए इसे कॉन्फ़िगर करें:

ssl = हाँ

ssl_cert = </etc/ssl/pStreet/diti.me-mail.pem
ssl_key = </etc/ssl/pStreet/diti.me-mail.key

6. अब आप बाहर से मेल भेज सकते हैं और इसे प्राप्त कर सकते हैं। SMTP पर अपने मेल क्लाइंट से जुड़कर आपको बाहर से भेजने की अनुमति देने के लिए पोस्टफिक्स को कॉन्फ़िगर करना अभी भी आवश्यक है ।

पहले लॉगिन को सत्यापित करने के लिए Dovecot का उपयोग करने के लिए पोस्टफिक्स को बताएं। निम्नलिखित निर्देश ज्यादातर डवकोट के विकी से लिए गए हैं

Dovecot /etc/dovecot/conf.d/10-master.confको एक सॉकेट पर सुनने की जरूरत है जो पोस्टफिक्स एक्सेस कर सकता है; डिफ़ॉल्ट कॉन्फ़िगरेशन में पहले से ही एक टिप्पणी-बाहर उदाहरण है:

सेवा मौखिक {
    ...
    unix_listener / var / स्पूल / पोस्टफिक्स / प्राइवेट / ओटर {
        मोड = 0660
        उपयोगकर्ता = उपसर्ग
        समूह = उपसर्ग
    }
    ...
}

और पोस्टफिक्स को इसका उपयोग करने की आवश्यकता है - /etc/postfix/main.cfफिर से:

# प्रमाणीकरण
smtpd_sasl_type = dovecot
smtpd_sasl_path = निजी / स्थिति
  # दूसरा संभावित प्रकार "साइरस" है, साइरस SASL 'saslauthd' के लिए
  # डेमॉन। मैं यहाँ Dovecot का चयन करता हूँ क्योंकि यह एक SASL सर्वर के रूप में अच्छी तरह से काम करता है, और
  # यह दोनों डेमों के लिए प्रमाणीकरण को संभालने देना सरल है।

7. ध्यान दें कि ऊपर smtpd_sasl_auth_enableकहीं भी सेट नहीं किया गया है। वर्तमान कन्वेंशन वैश्विक स्तर पर SMTP को सक्षम करने के लिए नहीं है , बल्कि विशुद्ध रूप से tcp / 25 को "सर्वर-से-सर्वर" SMTP पोर्ट के रूप में रखने के लिए है। इस बीच, उपयोगकर्ताओं के नए संदेशों को "मेल सबमिशन" पोर्ट tcp / 587 पर SMTP पर स्वीकार किया जाता है, जिसे प्रमाणीकरण की आवश्यकता होती है। कुछ ISP भी स्पैम के कारण tcp / 25 को रोकते हैं, लेकिन tcp / 587 को खुला रखें क्योंकि यह आमतौर पर बेहतर-सुरक्षित होता है।

/etc/postfix/master.cfSASL के साथ "सबमिशन" पोर्ट को सक्षम करें । डिफ़ॉल्ट में master.cfपहले से ही आवश्यक लाइनें हैं, जिन्हें अभी अप्रयुक्त करने की आवश्यकता है, हालांकि उनमें से कुछ को अभी भी छोड़ दिया जाना चाहिए।

सबमिशन n - - - - smtpd
  -o syslog_name = पोस्टफ़िक्स / सबमिशन
  -o smtpd_tls_security_level = एन्क्रिप्ट
    # "सबमिशन" पोर्ट को वैकल्पिक बनाने के बजाय टीएलएस की आवश्यकता होगी
  -o smtpd_sasl_auth_enable = हाँ
    # ... साथ ही उपयोगकर्ताओं को लॉग इन करने की अनुमति देता है।
# -o smtpd_reject_unlisted_recipient = नहीं
# -ओ smtpd_client_restrictions = $ mua_client_restrictions
# -ओ smtpd_helo_restrictions = $ mua_helo_restrictions
# -ओ smtpd_sender_restrictions = $ mua_sender_restrictions
    # इन चार विकल्पों पर टिप्पणी की जा सकती है; सक्षम होने पर, वे करेंगे
    # आपको 'main.cf' में कस्टम प्रतिबंध नियम निर्धारित करने की उम्मीद है, लेकिन
    # डिफ़ॉल्ट वाले ठीक हैं।
  -o smtpd_recipient_restrictions = perm_sasl_authenticated, अस्वीकार करें
    # डिफ़ॉल्ट प्राप्तकर्ता_प्रतिबंध आईपी पते की जांच करते हैं और
    # $ मायडेशन। "सबमिशन" पोर्ट के लिए, जब तक सब कुछ अनुमति दें
    # के रूप में उपयोगकर्ता में लॉग इन किया है, लेकिन सभी गुमनाम मेल को अस्वीकार।
  -o milter_macro_daemon_name = ORIGINATING
    # यदि आप बाद में डीकेआईएम प्रॉक्सी या ऐसा सेट करने का निर्णय लेते हैं, तो यह अनुमति देगा
    # यह आने वाले लोगों से उपयोगकर्ता द्वारा प्रस्तुत मेल को अलग करने के लिए है।
    # यह डिफ़ॉल्ट कॉन्फ़िगरेशन का हिस्सा है, इसलिए यहां भी शामिल है।

यदि आपके पास एक मेल क्लाइंट है जिसके लिए एक पुराने-शैली "अंतर्निहित SSL" पोर्ट (tcp / 465) की आवश्यकता होती है, तो आप smtpsलाइनों को अनइंस्टॉल कर सकते हैं master.cf- यदि आप ऐसा करते हैं, तो सेटिंग्स को submissionपोर्ट वाले के समान रखें ।

8. अंत में संपादन द्वारा अपने खाते के लिए उपनाम सेट करें /etc/aliasespostmasterउर्फ मूल रूप से आवश्यक है; यदि आपके मेल सर्वर के साथ कोई समस्या है तो यह संपर्क का बिंदु है। इशारा करना rootऔर इसी तरह के अन्य उपनाम भी अच्छे हैं।

मूल प्रारूप उपनामों (5) में प्रलेखित है:

postmaster: root
admin:      root
root:       diti
kra:        diti

का प्रयोग करें postaliasया newaliasesटुकड़ों में बंटी डेटाबेस अद्यतन करने /etc/aliases.dbहर बार जब आप इस फ़ाइल को संपादित।

अब, आपके पास अभी भी एक खाता है ditiजहां तक ​​पोस्टफिक्स और डवकोट का संबंध है, लेकिन भेजे गए मेल kra@...को भी वहां भेज दिया गया है। कुछ मेल क्लाइंट (जैसे थंडरबर्ड) एक एकल मेल सर्वर के लिए कई "पहचान" या "व्यक्ति" का समर्थन करते हैं, इसलिए आप विभिन्न "से:" पतों के बीच चयन कर सकते हैं।

यह इसके बारे में। मैं बाद में घोषित, वर्चुअल डोमेन, SPF और / या DKIM के निर्देशों के साथ लौट सकता हूं।


1
यह महान है ! यह वास्तव में ई-मेल सेल्फ-होस्टिंग के बारे में सबसे सरल ट्यूटोरियल है। वह भाग जिसने मुझे सबसे ज्यादा चकित किया, वह था बिंदु 1 पर, कि मैं वास्तव में पहले से ही अपने सर्वर से / से ई-मेल भेज और प्राप्त कर सकता हूं। वैसे भी, मैं कुछ बिंदुओं को स्पष्ट करने के लिए आपके संदेश को संपादित करूँगा! हालाँकि, मैं अपने ई-मेल को बाहर से सेटअप करने का प्रबंधन नहीं कर सकता (मेरा मतलब थंडरबर्ड है)। मैं mail.diti.meIMAP और SMTP दोनों के लिए ((मेरे सर्वर का IP पता) का उपयोग कर रहा हूं , मेरे डोमेन में पहले से ही MX रिकॉर्ड हैं। क्या मैंने अपने सर्वर के सेटअप के दौरान कुछ भी गलत किया है, या क्या मेरे पास थंडरबर्ड मुद्दे हैं?
दिति

@ सिटी: सभी प्रासंगिक पोर्ट (जैसे tcp / 25 को छोड़कर) आपके सर्वर पर फ़ायरवॉल से लग रहे हैं ।
user1686

आउटपुट का क्या होना चाहिए ps auxw | grep "dovecot"? मैंने अपने एक मित्र के जटिल सेटअप के खिलाफ तुलना की, और उसके पास है dovecot-authऔर imap-loginमेरे पास नहीं है। क्या यह संभव हो सकता है कि बंदरगाह वास्तव में खुले हों (मैं फ़ायरवॉल का उपयोग करके खुद को याद नहीं करता), लेकिन बाहर से उन बंदरगाहों को सुनने के लिए कोई डेमॉन सेट नहीं है, या कुछ और? जब मैं openssl s_client -connect mail.diti.me:993सर्वर पर चलता हूं , तो यह काम करता है (और कहता है "डवकोट तैयार।"), लेकिन बाहर से कुछ भी नहीं। शायद मुझे एक फ़ायरवॉल स्थापित करने और उन बंदरगाहों को स्पष्ट रूप से अनुमति देने की कोशिश करनी चाहिए?
दिति

@Diti: Dovecot की वास्तुकला, v1 और v2 के बीच बड़े पैमाने पर बदलाव तो आप विभिन्न प्रक्रियाओं देखेंगे - वी 2 में, वहाँ हो जाएगा dovecot, dovecot/anvil, dovecot/log, और अन्य। इसके अलावा, कुछ प्रक्रियाएं केवल तब शुरू होती हैं जब कोई व्यक्ति कनेक्ट होता है, या केवल जब प्रमाणीकरण विवरण की पुष्टि करता है।
user1686

1
@Diti: नहीं, दोनों डेमॉन डिफ़ॉल्ट रूप से सभी इंटरफेस और सभी पते पर सुनते हैं। लेकिन कनेक्शन से इनकार नहीं किया जा रहा है - बल्कि, सर्वर चुपचाप सभी कनेक्शन के प्रयासों को छोड़ देता है (देखें nmap स्कैन मैं जुड़ा हुआ है), जो कहीं न कहीं एक फ़ायरवॉल का एक निश्चित संकेत है। iptables -n -v -Lपैकेट गिराने के कोई नियम हैं या नहीं, यह जांचने के लिए प्रयोग करें।
user1686
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.