एक्ज़िम लॉगिंग आउटगोइंग helo_data


0

मेरे पास एक एक्जिम ईमेल सर्वर है जो कई वेबसाइटों के लिए उपयोग किया जाता है। यह प्रत्येक वेबसाइट के लिए helo_data के लिए एक अलग होस्ट स्ट्रिंग का उपयोग करता है जो यह कार्य करता है। प्रत्येक लागू होस्ट स्ट्रिंग के लिए DNS और rDNS ठीक से सेट-अप है।

मैं एक्ज़िम मेनॉग्लॉग में लॉग इन होना चाहता हूं जो भेजे गए प्रत्येक ईमेल के लिए होस्ट स्ट्रिंग का उपयोग किया गया था।

क्या यह संभव है और यदि नहीं, तो यह जानने के लिए मेरे पास कौन से विकल्प हैं कि कौन-सी होस्ट स्ट्रिंग का उपयोग हेलो में प्रति ईमेल के आधार पर किया गया था?

धन्यवाद


आप एक्सो को कैसे कह रहे हैं कि helo_data मानों के बीच स्विच करें?
माजेंको

चूंकि helo_data के प्रत्येक मूल्य को अपने स्वयं के आईपी (इंटरफ़ेस) की आवश्यकता होती है, इसलिए मैं $ भेजने वाले_address_domain के मूल्य के आधार पर इंटरफ़ेस के लिए एक मान प्रदान कर रहा हूं। यदि किसी विशेष डोमेन में एक से अधिक इंटरफ़ेस है जो इसे संबंधित है, तो यह यादृच्छिक पर एक को चुनेगा। इंटरफ़ेस असाइन किए जाने के बाद, यह helo_data के लिए सही मान चुनने के लिए $ send_ip_address के मूल्य का उपयोग करता है। समाधान जटिल लगता है, लेकिन यह काम करता है और केवल न्यूनतम रूप से जटिल है। एक स्क्रिप्ट उपयुक्त विन्यास तार लिखती है, इसलिए इसे "बनाए रखने के लिए कठिन" नहीं है। इस प्रतिक्रिया में पर्याप्त जगह नहीं है, मैं बाद में कोड स्निपेट पोस्ट करूंगा।
रेडमीला मुस्तफा

interface = ${extract{$sender_address_domain}{one.com=${extract{${eval:1 + ${randint:2}}}{:}{10.1.0.1:10.1.0.2}{$value}{10.0.0.0}} two.com=10.2.0.1 three.com=10.3.0.1}{$value}{10.0.0.0}} helo_data = ${extract{$sending_ip_address}{10.0.0.0=mail.default.com 10.1.0.1=mail1.one.com 10.1.0.2=mail2.one.com 10.2.0.1=mail.two.com 10.3.0.1=mail.three.com}{$value}{mail.default.com}}
रेडमिल्ला मुस्तफा

मुझे लगता है कि यह परिवहन अनुभाग के भीतर किया गया है?
मैजेंको

हाँ, परिवहन के भीतर। यह बहुत अच्छी तरह से परीक्षण किया गया है और यह उम्मीद के मुताबिक काम करता है।
रेडमीला मुस्तफा

जवाबों:


1

यदि आप ACL चरण में हीलो डेटा पर निर्णय ले सकते हैं, तो आप इसे एक $acl_m_...चर ( $acl_m_outbound_helo) पर असाइन कर सकते हैं , जिसे संदेश के जीवनकाल में कहीं भी संदर्भित किया जा सकता है। आप शायद पूरी तरह से प्रेषक के आधार पर डेटा एसीएल में ऐसा करना चाहते हैं, प्राप्तकर्ता नहीं।

फिर आप log_messageउसी एसीएल में मूल्य लॉग करने के लिए उपयोग कर सकते हैं ; यह सहसंबंध के लिए एक्जिम संदेश आईडी के साथ एक साथ मेनलॉग में जाएगा। फिर परिवहन में, आप $acl_m_outbound_heloकनेक्शन के लिए उपयोग करने के लिए बस उसी का संदर्भ देते हैं ।


यह बहुत ही आशाजनक लगता है! मैं इसे आजमाऊंगा और छोटा करूंगा।
रेडमीला मुस्तफा

मैंने हर ACL स्वीकार करने के लिए log_message को जोड़ा, फिर से शुरू किया बेशक, लेकिन मुख्य संदेश में कोई संदेश नहीं जोड़ा गया है। दस्तावेज़ीकरण को देखते हुए, मैं केवल log_message को उन खंडों में संदर्भित करता हूं, जो अस्वीकार किए गए चेतावनी और आघात से निपटते हैं। क्या log_message स्वीकार करने के लिए लागू नहीं होता है या मैं कुछ और देख रहा हूं?
रेडमीला मुस्तफा

मेरा मानना ​​है कि स्वीकार log_message की अनुमति नहीं देता है, हालांकि चेतावनी यह दिखती है कि यह वही है जो मैं देख रहा हूं। मैं यहाँ वापस आता हूँ और एक स्थिति अद्यतन देता हूँ।
रेडमीला मुस्तफा

एक चेतावनी शर्त जोड़ना = डेटा एसएल के लिए सच अच्छी तरह से काम करने लगता है। मैंने अभी तक पूर्ण समाधान नहीं किया है, लेकिन यहां से मुझे लगता है कि यह एक साधारण मामला होना चाहिए, मेरी मुख्य बाधा पर विजय प्राप्त की है। धन्यवाद!
रेडमीला मुस्तफा

0

दुर्भाग्य से मुख्य फ़ाइल में helo_data चर लॉग करने के लिए कोई अंतर्निहित पद्धति नहीं है।

जिस विधि का मैं शायद उपयोग करूंगा, वह मैसेज पथ के भीतर कहीं न कहीं एक हुक जोड़ने के लिए होगी जिसमें मैं उस डेटा को लॉग इन करने के लिए देख रहा हूं जिसे कुछ संदर्भ के साथ मैंनॉग्लॉग फ़ाइल में प्रविष्टियों को वापस इंगित करने के लिए कुछ संदर्भ के साथ (संदेश आईडी कहते हैं)। या मैं प्रति वेबसाइट के आधार पर एक अलग राउटर और परिवहन स्थापित करूंगा। मेल भेजने के लिए उपयोग किया जाने वाला परिवहन मुख्य फाइल में T = my_transport मान के रूप में लॉग किया गया है।

कस्टम लॉगिंग के लिए मैंने condition =राउटर में मूल्य का उपयोग करके डेटाबेस में प्राप्त ईमेल विवरण डालने के लिए कुछ ऐसा ही करने में कामयाब रहा है । ${run{<command> <args>}}इसे प्राप्त करने के लिए आप स्ट्रिंग विस्तार का उपयोग कर सकते हैं :

condition = ${run{/path/to/interpreter /path/to/custom/logging/script $sender_domain $message_exim_id}{1}{0}}

(Untested)

राउटर में यह थोड़ा स्निपेट /path/to/custom/logging/scriptइंटरप्रेटर /path/to/interpreter(/ बिन / श, / usr / बिन / पर्ल, जो भी हो) का उपयोग करके स्क्रिप्ट को निष्पादित करेगा जो इसे प्रेषक और एक्जिम संदेश आईडी के डोमेन नाम से गुजरता है।

यह काफी भारी है, इसलिए एक भारी उपयोग सर्वर पर आदर्श नहीं होगा, लेकिन यह सिर्फ काम कर सकता है ...।


मैंने भी प्रत्येक डोमेन के लिए अलग-अलग ट्रांसपोर्ट स्थापित करने के बारे में सोचा था, यह निश्चित रूप से आग का काम करेगा। एकमात्र समस्या यह है कि मैं संभावित रूप से दर्जनों ट्रांसपोर्टों के साथ किसी दिन समाप्त हो सकता हूं, जो सभी समान कॉन्फ़िगरेशन के पास हैं, और यह बनाए रखना बहुत कठिन होगा, भले ही यह स्क्रिप्ट उत्पन्न हो। मुझे पूरा यकीन नहीं है कि आपके कहने का क्या मतलब है जब आप "संदेश पथ के भीतर एक हुक जोड़ें," क्या आप मेरे लिए स्पष्ट कर सकते हैं? धन्यवाद।
रेडमिला मुस्तफा

सो कैसे? (देखें संपादित करें)
माजेंको

यह मेरी जरूरतों के लिए थोड़ा बहुत संसाधन गहन है, हम बहुत सारे ईमेल भेजते हैं और हर बार एक शेल निष्पादित करना आदर्श नहीं है। यद्यपि आपकी जानकारी के लिए धन्यवाद।
रेडमिला मुस्तफा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.