दोहरी एसएमटीपी अग्रेषण की स्थापना
समान उपयोगकर्ता खातों के साथ एकाधिक ईमेल सर्वर प्रबंधित करना चुनौतीपूर्ण हो सकता है। इस परिदृश्य में, जब example.com पर किसी उपयोगकर्ता को एक ईमेल भेजा जाता है, तो इसे जेम्स और विनमेल सर्वर दोनों द्वारा प्राप्त किया जाना चाहिए, यह सुनिश्चित करते हुए कि ईमेल सामग्री अपरिवर्तित रहे।
सामान्य समाधान, जैसे DNS में एकाधिक एमएक्स रिकॉर्ड कॉन्फ़िगर करना, कम पड़ जाते हैं क्योंकि वे example.com को एक समय में केवल एक ही सर्वर पर निर्देशित कर सकते हैं। स्थानीय भंडारण के बिना दोनों सर्वरों पर ईमेल अग्रेषित करने के लिए पोस्टफ़िक्स का उपयोग करना जटिल साबित हुआ है, जिससे smtplib के साथ स्क्रिप्टिंग जैसे समाधान सामने आए हैं, जो विश्वसनीय नहीं हो सकते हैं। आइए बेहतर विकल्प तलाशें।
आज्ञा | विवरण |
---|---|
import smtplib | पायथन का उपयोग करके ईमेल भेजने के लिए सरल मेल ट्रांसफर प्रोटोकॉल लाइब्रेरी आयात करता है। |
import sys | कमांड-लाइन तर्क प्राप्त करने के लिए उपयोग किए जाने वाले सिस्टम-विशिष्ट पैरामीटर और फ़ंक्शन मॉड्यूल को आयात करता है। |
from email.mime.text import MIMEText | टेक्स्ट-आधारित ईमेल संदेश बनाने के लिए MIMEText क्लास आयात करता है। |
from email.mime.multipart import MIMEMultipart | मल्टीपार्ट ईमेल संदेश बनाने के लिए MIMEMultipart क्लास को आयात करता है। |
msg.attach(MIMEText('text', 'plain')) | ईमेल संदेश में एक सादा पाठ्य भाग संलग्न करता है। |
with smtplib.SMTP(server) as smtp | एसएमटीपी सर्वर से कनेक्शन खोलता है और सुनिश्चित करता है कि ईमेल भेजने के बाद यह ठीक से बंद हो गया है। |
postmap /etc/postfix/transport | मेल रूटिंग के लिए पोस्टफ़िक्स द्वारा उपयोग किए जाने वाले ट्रांसपोर्ट मैप फ़ाइल से एक बाइनरी डेटाबेस उत्पन्न करता है। |
systemctl reload postfix | सेवा को रोके बिना, किए गए किसी भी परिवर्तन को लागू किए बिना पोस्टफ़िक्स कॉन्फ़िगरेशन को पुनः लोड करता है। |
पोस्टफ़िक्स और पायथन इंटीग्रेशन को समझना
प्रदान की गई स्क्रिप्ट को दो एसएमटीपी सर्वरों को ईमेल अग्रेषित करने के लिए डिज़ाइन किया गया है, यह सुनिश्चित करते हुए कि दोनों सर्वरों को एक ही ईमेल प्राप्त हो। पायथन लिपि, multi_forward.py, का उपयोग करता है import smtplib ईमेल भेजने को संभालने के लिए लाइब्रेरी। यह आयात करता है sys प्रेषक और प्राप्तकर्ता जैसे कमांड-लाइन तर्क प्राप्त करने के लिए। स्क्रिप्ट का उपयोग करके ईमेल का निर्माण किया जाता है from email.mime.text import MIMEText और from email.mime.multipart import MIMEMultipart ईमेल का मुख्य भाग बनाने और संलग्न करने के लिए। इसके बाद यह एसएमटीपी सर्वरों की एक सूची को दोहराता है और उपयोग करने वाले प्रत्येक सर्वर को ईमेल भेजता है with smtplib.SMTP(server) as smtp.
पोस्टफ़िक्स पक्ष पर, कॉन्फ़िगरेशन में संशोधन शामिल है /etc/postfix/master.cf कस्टम परिवहन सेवा को परिभाषित करने के लिए फ़ाइल, multi_forward, जो पायथन लिपि का उपयोग करता है। /etc/postfix/main.cf फ़ाइल को परिवहन मानचित्र शामिल करने के लिए अद्यतन किया गया है, जो इसमें निर्दिष्ट है /etc/postfix/transport. आदेश postmap /etc/postfix/transport ट्रांसपोर्ट मैप से एक बाइनरी डेटाबेस बनाता है, और systemctl reload postfix पोस्टफ़िक्स सेवा को रोके बिना कॉन्फ़िगरेशन परिवर्तन लागू करता है। यह सेटअप सुनिश्चित करता है कि example.com पर भेजा गया कोई भी ईमेल पायथन स्क्रिप्ट द्वारा संसाधित किया जाता है और दोनों SMTP सर्वरों को अग्रेषित किया जाता है।
पायथन के साथ एकाधिक एसएमटीपी सर्वर पर ईमेल अग्रेषित करें
एसएमटीपी अग्रेषण को संभालने के लिए पायथन का उपयोग करना
# multi_forward.py
import smtplib
import sys
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
sender = sys.argv[1]
recipient = sys.argv[2]
def forward_email(sender, recipient):
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = recipient
msg['Subject'] = 'Forwarded email'
msg.attach(MIMEText('This is the body of the email', 'plain'))
# SMTP servers
smtp_servers = ['james.example.com', 'winmail.example.com']
for server in smtp_servers:
with smtplib.SMTP(server) as smtp:
smtp.sendmail(sender, recipient, msg.as_string())
if __name__ == '__main__':
forward_email(sender, recipient)
पायथन स्क्रिप्ट का उपयोग करने के लिए पोस्टफ़िक्स को कॉन्फ़िगर करना
कस्टम मेल अग्रेषण के लिए पोस्टफिक्स कॉन्फ़िगरेशन
# /etc/postfix/master.cf
multi_forward unix - n n - - pipe
flags=Rhu user=nobody argv=/usr/local/bin/multi_forward.py ${sender} ${recipient}
# /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
# /etc/postfix/transport
example.com multi_forward:
# Update transport map
postmap /etc/postfix/transport
# Reload Postfix
systemctl reload postfix
अतिरिक्त टूल के साथ पोस्टफ़िक्स कार्यक्षमता को बढ़ाना
एकाधिक एसएमटीपी सर्वरों पर ईमेल अग्रेषित करने के लिए एक अन्य दृष्टिकोण में अतिरिक्त पोस्टफ़िक्स टूल और कॉन्फ़िगरेशन का उपयोग करना शामिल है। ऐसा ही एक टूल है पोस्टफ़िक्स sender_dependent_relayhost_maps, जो प्रेषक के पते के आधार पर विभिन्न रिले होस्ट निर्दिष्ट करने की अनुमति देता है। हालांकि इस सुविधा का उपयोग आम तौर पर विभिन्न रिले होस्ट के माध्यम से आउटगोइंग मेल को रूट करने के लिए किया जाता है, इसे कुछ रचनात्मक कॉन्फ़िगरेशन के साथ हमारे उपयोग के मामले में अनुकूलित किया जा सकता है। उदाहरण के लिए, का एक संयोजन virtual_alias_maps और recipient_bcc_maps इसका उपयोग ईमेल की नकल बनाने और उन्हें अलग-अलग पतों पर अग्रेषित करने के लिए किया जा सकता है, जिन्हें बाद में संबंधित सर्वर पर भेज दिया जाता है।
इसके अतिरिक्त, पोस्टफ़िक्स को मेल फ़िल्टर के साथ एकीकृत करना जैसे Amavisd-new या Procmail ईमेल को संभालने और रूट करने में अधिक लचीलापन प्रदान कर सकता है। ये फ़िल्टर ईमेल को पोस्टफ़िक्स से गुजरते समय संसाधित कर सकते हैं, जिससे कस्टम स्क्रिप्ट या नियमों को डुप्लिकेट करने और संदेशों को कई गंतव्यों तक अग्रेषित करने की अनुमति मिलती है। हालांकि यह सेटअप एक साधारण पायथन स्क्रिप्ट का उपयोग करने से अधिक जटिल हो सकता है, यह मजबूत ईमेल प्रोसेसिंग क्षमताओं की आवश्यकता वाले वातावरण के लिए अधिक विश्वसनीयता और स्केलेबिलिटी प्रदान कर सकता है।
पोस्टफ़िक्स ईमेल अग्रेषण के लिए सामान्य प्रश्न और समाधान
- मैं डीएनएस में एकाधिक एमएक्स रिकॉर्ड कैसे कॉन्फ़िगर कर सकता हूं?
- दुर्भाग्य से, DNS MX रिकॉर्ड प्राथमिकता स्तर पर केवल एक सर्वर पर मैपिंग का समर्थन करते हैं, इसलिए यह दृष्टिकोण एक साथ कई सर्वरों पर अग्रेषित करने के लिए काम नहीं करेगा।
- का उद्देश्य क्या है transport_maps निर्देश?
- transport_maps पोस्टफ़िक्स में निर्देश विशिष्ट मेल परिवहन विधियों और गंतव्यों के लिए ईमेल पते या डोमेन की मैपिंग को निर्दिष्ट करता है।
- कर सकना sender_dependent_relayhost_maps इस परिदृश्य में मदद?
- हाँ, sender_dependent_relayhost_maps प्रेषक के पते के आधार पर विभिन्न रिले होस्ट के माध्यम से ईमेल को रूट किया जा सकता है, लेकिन इसे कई सर्वरों पर अग्रेषित करने के लिए रचनात्मक रूप से अनुकूलित करने की आवश्यकता है।
- कैसे हुआ virtual_alias_maps पोस्टफिक्स में काम करते हैं?
- virtual_alias_maps निर्देश पोस्टफ़िक्स को ईमेल पते को अन्य पते पर मैप करने की अनुमति देता है, जिससे ईमेल को अग्रेषित और पुनर्निर्देशन सक्षम किया जा सकता है।
- की क्या भूमिका है recipient_bcc_maps?
- recipient_bcc_maps निर्देश पोस्टफ़िक्स को स्वचालित रूप से आने वाले ईमेल में बीसीसी प्राप्तकर्ताओं को जोड़ने की अनुमति देता है, जो संदेशों की नकल करने के लिए उपयोगी है।
- क्या मैं उपयोग कर सकता हूँ Amavisd-new ईमेल अग्रेषण के लिए पोस्टफ़िक्स के साथ?
- हाँ, Amavisd-new कस्टम फ़िल्टरिंग और फ़ॉरवर्डिंग नियमों को लागू करने के लिए पोस्टफ़िक्स के साथ एकीकृत किया जा सकता है, जिससे ईमेल प्रोसेसिंग पर अधिक नियंत्रण मिलता है।
- क्या है master.cf फ़ाइल का उपयोग किसके लिए किया जाता है?
- master.cf पोस्टफ़िक्स में फ़ाइल कस्टम परिवहन सेवाओं सहित मेल वितरण प्रक्रियाओं और उनके कॉन्फ़िगरेशन को परिभाषित करती है।
- मैं इसे कैसे अपडेट करूं transport map डेटाबेस?
- उपयोग postmap /etc/postfix/transport ट्रांसपोर्ट मैप फ़ाइल से बाइनरी डेटाबेस बनाने या अपडेट करने का आदेश।
- पोस्टफ़िक्स को पुनः लोड करना क्यों महत्वपूर्ण है?
- पोस्टफ़िक्स को पुनः लोड करना systemctl reload postfix सेवा को रोके बिना कॉन्फ़िगरेशन परिवर्तन लागू करता है, जिससे सुचारू संचालन सुनिश्चित होता है।
- क्या है smtplib पायथन में किसके लिए उपयोग किया जाता है?
- smtplib पायथन में लाइब्रेरी का उपयोग एसएमटीपी के माध्यम से ईमेल भेजने के लिए किया जाता है, जिससे स्क्रिप्ट को प्रोग्रामेटिक रूप से ईमेल ट्रांसमिशन को संभालने की अनुमति मिलती है।
दोहरे सर्वर अग्रेषण पर अंतिम विचार
कई एसएमटीपी सर्वरों पर संदेशों को अग्रेषित करने के लिए पोस्टफ़िक्स को सेट करने में कस्टम स्क्रिप्ट और विस्तृत पोस्टफ़िक्स कॉन्फ़िगरेशन का संयोजन शामिल है। जबकि DNS या सरल पायथन स्क्रिप्ट का उपयोग करने वाले शुरुआती प्रयास आवश्यक विश्वसनीयता प्रदान नहीं कर सकते हैं, उन्नत पोस्टफ़िक्स सुविधाओं और Amavisd-new या Procmail जैसे टूल को एकीकृत करने से अधिक मजबूत समाधान प्रदान किया जा सकता है। ट्रांसपोर्ट मैप, वर्चुअल उपनाम मैप और प्राप्तकर्ता बीसीसी मैप को सावधानीपूर्वक कॉन्फ़िगर करके, आप जेम्स और विनमेल सर्वर दोनों के लिए निर्बाध और कुशल संदेश अग्रेषण सुनिश्चित कर सकते हैं। यह दृष्टिकोण सुनिश्चित करता है कि आपका ईमेल बुनियादी ढांचा लचीला और जटिल रूटिंग आवश्यकताओं को संभालने में सक्षम बना रहे।