कैसे उपसर्ग में उछाल इकट्ठा करने के लिए


15

यह इस प्रश्न से संबंधित है:

linux - मेरे न्यूज़लेटर एप्लिकेशन के लिए बाउंसबैक रिपोर्ट प्राप्त करने के तरीके? - सर्वर फाल्ट

मान लीजिए कि मैं ईमेल पते जनरेट कर रहा हूं, जब मैं बाउंसर्स को पहचानने के लिए न्यूज़लेटर भेजता हूं और उन्हें अपने न्यूज़लेटर से अनसब्सक्राइब करता हूं: bounce-123456789@example.com

मुझे लगता है कि मैं इसे वापसी-पथ में उपयोग करूँगा, है ना?

फिर मैं एक पोस्टबॉक्सेज़ में "बाउंस-" के साथ इन सभी पतों को इकट्ठा करने के लिए इसे पोस्टफिक्स में कैसे सेट करूँगा?

अंत में, मैंने सुना है कि लोग एक नरम उछाल बनाम एक कठिन उछाल का उल्लेख करते हैं। क्या कोई व्यक्ति विभिन्न को समझा सकता है और उन्हें यह जानना चाहिए कि किसी ईमेल न्यूज़लेटर से किसी को स्थायी रूप से निकालने के लिए उन्हें कब गिना जाना चाहिए?


ध्यान दें कि एक ईमेल पता जिसमें "बाउंस" शब्द भी शामिल है, को "yuck" के रूप में देखा जा सकता है ... (स्पैम) -क्यों कहा जा रहा है, यदि आप Message-Idअपने हेडर में खुद को छड़ी कर सकते हैं, तो इसे वापस भेजना होगा और वह जाँच करने के लिए पर्याप्त है कि कौन कौन है।
एलेक्सिस विल्के

जवाबों:


17

आपके प्रश्न का सटीक उत्तर ( bounce-xxx@example.comपता संभालना ) इस बात पर निर्भर करता है कि मेल प्राप्त करने के लिए आपका सर्वर कैसे कॉन्फ़िगर किया गया है। यदि example.comवर्चुअल डोमेन सबसे अच्छा है जो आप कर सकते हैं तो bounce@example.comमेलबॉक्स में संदेश एकत्र करना (मान लेना recipient_delimiter = -)।

यदि example.comसर्वर के लिए स्थानीय रूप से वितरित डोमेन है (मेल वास्तविक सिस्टम खातों में वितरित किया जाता है) तो आप उपयोगकर्ता .forwardकी होम निर्देशिका में एक फ़ाइल जोड़ सकते हैं bounce, जो एक प्रोग्राम को वितरित करता है जो उछाल की जानकारी को पार्स करता है और इसे डेटाबेस या फ़ाइल में रिकॉर्ड करता है। । प्रारूप man localके बारे में अधिक जानकारी के लिए देखें .forwardऔर प्रोग्राम को कैसे वितरित करें।

जब हम बड़ी संख्या में डोमेन के लिए संदेश भेजते हैं, तब हम क्या करते हैं, इसका उपयोग bounces.example.comहमारे VERP डोमेन के रूप में किया जाता है। इस डोमेन को जोड़ने की आवश्यकता है relay_domains/etc/postfix/transport_mapsइस सामग्री के साथ बनाएँ :

bounces.example.com             bulkbounce:

फिर इसके समान एक रेखा जोड़ें /etc/postfix/master.cf:

बल्कबींस यूनिक्स - एनएन - - पाइप
  उपयोगकर्ता = कोई नहीं argv = / usr / स्थानीय / बिन / bounce_handler.py $ {प्राप्तकर्ता}

bounce_handler.pyस्क्रिप्ट, अपने कमांड लाइन विकल्प के रूप में VERP पता स्वीकार करता है यह पार्स करके उछाल दर्ज करने के लिए आवश्यक डेटाबेस अपडेट करता है।


ऊह, मुझे प्राप्तकर्ता के परिधि का उपयोग करने का विचार पसंद है। आमतौर पर a + का सही उपयोग किया जाता है? मुझे लगता है कि महान काम करेंगे, धन्यवाद!
ब्रायन आर्मस्ट्रांग

11

वास्तव में, अगर आप कई अलग-अलग डोमेन का समर्थन करना चाहते हैं तो इंस्टाइल का जवाब लागू करना बहुत मुश्किल है और यह गलत है क्योंकि:

a) उसके उदाहरण के साथ transport_maps, उस डोमेन को भेजे गए सभी ईमेल उस विशिष्ट सेवा को भेजे जाते हैं, चाहे वह ईमेल ईमेल बाउंस हो या न हो। चूंकि यह एक विशिष्ट डोमेन नाम का उपयोग करता है, यह वास्तव में केवल ईमेल ईमेल बाउंस होना चाहिए ... लेकिन इसकी गारंटी नहीं दी जा सकती।

b) आपकी स्क्रिप्ट को भेजा गया डेटा ईमेल ही है न कि बाउंस मैसेज। दूसरे शब्दों में, आपके कोड को इस बात का कोई अंदाजा नहीं हो सकता है कि ईमेल को क्यों बाउंस किया गया (यानी स्थानीय उछाल आपको मूल ईमेल ही भेजेगा।)


पोस्टफिक्स में उस सेटअप को करने का सही तरीका बाउंस नोटिफिकेशन क्लास का उपयोग करना है।

1) /etc/postfix/main.cf में

notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps

2) में / आदि / उपसर्ग / transport_maps

# when you make changes to this file, run:
#   sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:

जैसा कि आप देख सकते हैं, अब हम पोस्टफिक्स को bounces@example.comजब भी कोई ईमेल बाउंस होता है, उसका उपयोग करने के लिए कहते हैं । फिर परिवहन मानचित्र में, bulkbounceकिसी भी ईमेल पते को संभालने के लिए सेवा के रूप में उपयोग करने के लिए bounces@example.com

अंत में आप bulkbounceअपनी स्क्रिप्ट के साथ परिभाषित कर सकते हैं :

3) /etc/postfix/master.cf में

bulkbounce unix -       n       n       -       -       pipe
  flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}

इस स्क्रिप्ट के लिए आपका उपयोगकर्ता होना आवश्यक है। nobodyएक अच्छा विकल्प भी है। यदि आप एक विशिष्ट उपयोगकर्ता रखना चाहते हैं, तो आप इसे बना सकते हैं:

useradd bounce

स्क्रिप्ट के बिना master.cf, ईमेल को बल्कबीज खाते में भेजा जाता है। इसलिए यदि आपके पास एक स्क्रिप्ट है जो फ़ाइलों से ईमेल को पार्स करती है, तो यह बिना transport_mapsऔर master.cfपरिवर्तन के काम करेगा ।


नीचे एक टिप्पणी से:

FYI करें - पुन: डबल बाउंस ...
आप इस तरह के रूप में वापसी पता (VERP पता संशोधित कर रहे हैं अगर user+id@fromdomain.com, तो आप में लाइन बाहर टिप्पणी करना चाहते हैं जाएगा main.cfके लिए bounce_notice_recipient, यदि आप पार्स करने में रुचि रखते हैं +idकेवल अपनी स्क्रिप्ट में उछाल।


आपके रास्ते का उपयोग करके मैं किसी भी तरह दो बार उछाल प्राप्त करता हूं, एक बार उछाल + आईडी @ के साथ ... और एक बार उछाल के साथ @ ... डबल उछाल से - (उपयोगकर्ता उछाल सिस्टम पर वास्तविक रूप से मौजूद नहीं है - जैसा कि मेरा इरादा नहीं है इन ईमेलों को बचाओ)। ईमेल बाउंस + आईडी @ के रिटर्न-पथ के साथ भेजा जाता है ... कोई भी विचार जो मुझे याद आ रहा है?
RVandersteen

@Randersteen मुझे भी यकीन नहीं है कि आप इसे दो बार क्यों प्राप्त करेंगे। जिसके साथ +id@किसी तरह का एक लिफाफा हो सकता है?
एलेक्सिस विल्के 5

जब मैं 'डिफॉल्ट' से हमारे डिफॉल्ट का उपयोग करता हूं - बाउंस अभी भी bounce@example.com और originalfrom@example.com को भेजा जाता है (अब कोई वापसी पथ नहीं जोड़ा गया है)
RVandersteen

1
भविष्य के संदर्भ के लिए, Inform_classes को जोड़ने से MTA के व्यवहार को उछाल संदेश को FROM / Return Path पर नहीं बदला जाता है। यह इसके ऊपर व्यवहार जोड़ता है (इसे Inform_bounce_recipient को भी भेजता है)। यही कारण है कि मेरे पास दोहरे मेल आ रहे थे। जो मेरे प्रश्न का उत्तर देता है
आरवीएंडस्टीन

1
fyi - re: double bounce..if आप रिटर्न एड्रेस को संशोधित कर रहे हैं (VERP पता जैसे कि 'user+id@fromdomain.com', तो आप 'bounce_notice_spiplient' के लिए main.cf में लाइन टिप्पणी करना चाहेंगे, अगर आप अपनी स्क्रिप्ट में केवल + आईडी उछाल में रुचि रखते हैं।
सरोरा

1

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

यदि आप इसे संभालने के लिए अपना स्वयं का कस्टम न्यूज़लेटर सॉफ़्टवेयर बना रहे हैं, तो आपको स्वयं से पूछना चाहिए कि आप मौजूदा अनुप्रयोगों का उपयोग करने के बजाय पहिया का पुनः आविष्कार क्यों कर रहे हैं, जो आपके लिए कार्य को आसानी से और पहले से ही आसानी से संभाल सकता है।


हां, मैं अपना न्यूजलेटर सॉफ्टवेयर बना रहा हूं। एक अच्छा कारण है!
ब्रायन आर्मस्ट्रांग

तो फिर तुम इसे ठीक से उछाल को संभालने के लिए VERP का उपयोग करने पर ध्यान देना चाहिए।
जेरेमी बोस

हाय जेरेमी, मुझे लगता है कि आप सही हैं VERP यहाँ मानक समाधान है, हालांकि यह प्रतीत होता है कि यह केवल प्रेषक और प्राप्तकर्ता की पहचान करने के लिए उपयोगी है। इस मामले में हमें उस विशेष संदेश की भी पहचान करने की आवश्यकता है जो उस उछाल के कारण निकला है, इसलिए मेरा मानना ​​है कि हमें पते में अपनी आईडी के साथ एक कस्टम समाधान करना होगा। मुझे लगता है कि प्राप्तकर्ता डिलिमीटर का उपयोग करके नीचे उल्लिखित समाधान हमें एक बाउंस खाते में एक साथ समूहित करने देगा। प्रतिक्रिया के लिए धन्यवाद, हालांकि मैं मदद की सराहना करता हूं!
ब्रायन आर्मस्ट्रांग

Insyte का समाधान सिर्फ एक संशोधित VERP है जिसके मूल में है। आपको बस यह सुनिश्चित करने की आवश्यकता है कि यह आपके बाउंस हैंडलर को पहचानने के लिए पर्याप्त विशिष्ट पहचानकर्ता प्रदान करता है। अधिकांश मेलिंग सूची सॉफ़्टवेयर में जो ईमेल पता है, लेकिन कुछ भी हो सकता है क्योंकि आप अपना खुद का डिज़ाइन कर रहे हैं।
जेरेमी बोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.