मैं ई-मेल को रीले करने के बजाय फ़ाइल में संग्रहीत करने के लिए पोस्टफ़िक्स कैसे सेट करूं?


9

मैं एक स्थानीय परिवेश पर एक प्रोडक्शन सर्वर की स्टैगिंग कॉपी चलाना चाहता हूं। सिस्टम एक PHP एप्लिकेशन चलाता है, जो विभिन्न परिदृश्यों में ग्राहकों को ई-मेल भेजता है और मैं यह सुनिश्चित करना चाहता हूं कि स्टेजिंग वातावरण से कोई ई-मेल कभी न भेजा जाए।

मैं कोड को ट्विक कर सकता हूं इसलिए यह एक डमी ई-मेल प्रेषक का उपयोग करता है, लेकिन मैं उत्पादन पर्यावरण के समान सटीक कोड चलाना चाहता हूं। मैं एक अलग एमटीए का उपयोग कर सकता हूं (पोस्टफिक्स वह है जो हम उत्पादन में उपयोग करते हैं), लेकिन मैं कुछ ऐसा चाहूंगा जो डेबियन / उबंटू के तहत स्थापित करना आसान हो :)

इसलिए, मैं स्थानीय पोस्टफ़िक्स को स्थापित करने के बजाय सभी ई-मेल को (एक या अधिक) फ़ाइलों को रीले करने के लिए स्थापित करना चाहूंगा। वास्तव में, मुझे वास्तव में परवाह नहीं है कि इसे तब तक कैसे संग्रहीत किया जाता है जब तक कि ई-मेल को भेजने के लिए यह संभव नहीं है। यहां तक ​​कि एक सेट अप विकल्प जो मेल कतार में ई-मेल को रखने के लिए पोस्टफिक्स को बताता है वह काम करेगा (मैं उत्पादन से प्रतिलिपि के साथ स्टेजिंग सर्वर को फिर से लोड करने पर कतार को शुद्ध कर सकता हूं)।

मुझे पता है कि यह संभव है, मैंने अभी तक कोई भी अच्छा समाधान ऑनलाइन नहीं पाया है जो एक सामान्य आम ज़रूरत की तरह लगता है।

धन्यवाद!

जवाबों:


12

मैंने एक पाइप कमांड के साथ एक नया परिवहन बनाया जो ई-मेल को एक फ़ाइल में लिखता है।

मूल रूप से:

  1. एक उपयोगकर्ता बनाएं जो ई-मेल का स्वामी होगा (या किसी मौजूदा का उपयोग करेगा)। मैंने अपना फोन कियाemail
  2. mkdir /home/email/bin
  3. निम्न स्क्रिप्ट को इसमें रखें /home/email/bin/mail_eater(यह PHP का उपयोग करता है, लेकिन आप अपनी पसंद के किसी भी भाषा में अपना संस्करण लिख सकते हैं, यह सिर्फ एक फ़ाइल में स्टड को जोड़ता है):

    #!/usr/bin/php
    <?php
    $fd = fopen("php://stdin", "r");
    $email = "";
    while (!feof($fd)) {
        $email .= fread($fd, 1024);
    }
    fclose($fd);
    $fh = fopen('/home/email/email.txt','a');
    fwrite($fh, $email."\n-------------------------------------------------------\n\n");
    fclose($fh);
    
  4. chmod a+x /home/email/bin/mail_eater
  5. touch /home/email/email.txt
  6. chmod a+r /home/email/email.txt
  7. इस फ़ाइल का उपयोग करके एक नया परिवहन बनाएँ जिसमें निम्न पंक्ति शामिल हो master.cf:

    file_route unix -    n    n    -    -    pipe user=email  argv=/home/email/bin/mail_eater
    
  8. इसे डिफ़ॉल्ट परिवहन के रूप में उपयोग करें main.cf:

    default_transport = file_route
    

वहाँ :)


3

आप उन डोमेन को $mydestinationअंदर रख सकते हैं main.cf, इसलिए पोस्टफिक्स इसे स्थानीय स्तर पर वितरित करेगा।

आप चाहें तो अलग-अलग स्थानीय उपयोगकर्ता सेट कर सकते हैं या आप केवल एक खाते में ईमेल भेजने के लिए एक स्थानीय कैच-ऑल एड्रेस सेट कर सकते हैं, यहाँ अधिक विवरण: http://www.postfix.org/ADDRESS_REWRITING_README.html#luser_bay

सभी डोमेन के लिए:

mydestination = pcre:/etc/postfix/mydestinations

और /etc/postfix/mydestinationsहोना चाहिए

/.*/    ACCEPT

मैं अभी परीक्षण नहीं कर सकता, लेकिन यह काम करना चाहिए।


मुझे नहीं पता कि गंतव्य डोमेन कैसा दिखता है (वे एक वास्तविक ग्राहक डेटाबेस से आते हैं)। मैं हालांकि लिंक की जाँच करूँगा।
गोमोक्स

अद्यतन के लिए धन्यवाद, मैंने समस्या का अपना समाधान पोस्ट किया क्योंकि यह "क्लीनर" लगता है लेकिन आपका ऐसा लगता है कि इसे भी काम करना चाहिए।
गोमोक्स

इरादा के अनुसार काम करने के लिए, यह भी सेटिंग की आवश्यकता है local_recipient_maps = । यह आपके द्वारा दिए गए लिंक में वर्णित है, लेकिन मुझे लगता है कि इसका उत्तर में भी उल्लेख किया जाना चाहिए।
जोजमैन

2

प्रयास करें (main.cf में):

defer_transports = smtp

फिर आप कतार देख सकते हैं postqueue -pऔर सामग्री देख सकते हैंpostcat


0

आपके वितरण के आधार पर, आप "nullmailer" को देख सकते हैं। यह एक रिले करने वाला MTA है, जो आपके नेटवर्क या रिमोट पर किसी अन्य SMTP से संबंधित है। यह बहुत अच्छी तरह से एक अमान्य SMTP हो सकता है, और उस स्थिति में यह शायद इसे मशीन पर एक फ़ोल्डर में एक कतार में डाल देगा।

डेबियन और उबंटू पर यह आपके सिस्टम के लिए एक प्रतिस्थापन एमटीए के रूप में उपलब्ध है।


0

यह मेरे ब्लॉग http://blog.malowa.de/2011/04/postfix-as-spam-trap-server.html से कॉपी और थोड़ा संशोधित है :

आपको पोस्टमिक्स को nullmailer के रूप में कार्य करने के लिए कॉन्फ़िगर करने की आवश्यकता नहीं है। एक साफ-सुथरे उपकरण के साथ पोस्टफिक्स जहाज जिसे smtp-sinkचाल कहते हैं। smtp- सिंक का मुख्य रूप से SMTP क्लाइंट के लिए एक परीक्षण उपकरण के रूप में कार्य करना है, जिसे खेलने के लिए सर्वर की आवश्यकता होती है। तो आप इसे पूरी बातचीत को लॉग करने के लिए कॉन्फ़िगर कर सकते हैं या यहां तक ​​कि प्रत्येक प्राप्त मेल को एक फ़ाइल में डंप कर सकते हैं। उत्तरार्द्ध एक nullmailer के लिए आवश्यक है।

Smtp-सिंक को कॉन्फ़िगर करने के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं है। सब कुछ कमांड-लाइन विकल्पों के माध्यम से किया जाता है।

smtp-sink -c -d "%Y%m%d%H/%M." -f . -u postfix -R /tmp/ -B "550 5.3.0 The recipient does not like your mail. Don't try again." -h spamtrap.example.com 25 1024

आइए प्रत्येक पैरामीटर पर करीब से नज़र डालें।

-u postfix
Runs the program under the user "postfix"
-R /tmp/
Sets the output directory to /tmp/. In this directory the mails will be stored. If you have a high spam volume (hundreds of Spam per minute) it is recommended to write the mails to a ramdisk
-d "%Y%m%d%H/%M."
Writes the mail to a directory of the format "YearMonthDayHour" and in this directory the files are name "Month.RandomID". Note that the dates are in UTC
-c
Write statistics about connection counts and message counts to stdout while running
-f .
Reject the mail after END-OF-DATA. But the mail will be saved. Cool, isn't it?!
-B "550 5.3.0 The recipient does not like your mail. Don't try again"
This is the rejection message after END-OF-DATA.
-h spamtrap.example.com
Announce the hostname spamtrap.example.com
25
The port to listen on. Can be prepended with an IP or host if you want to bind on a special interface.
1024
The backlog count of connections that can wait in the TCP/IP stack before they get a free slot for sending mail.

आप smtp-सिंक के मैन पेज में अधिक जानकारी प्राप्त कर सकते हैं, लेकिन ये सभी कैच-अप स्पैमट्रैप को चलाने के लिए महत्वपूर्ण हैं। इस कॉन्फ़िगरेशन में प्रोग्राम किसी भी आकार के साथ किसी भी मेल को IPv4 और IPv6 के साथ किसी भी प्राप्तकर्ता को स्वीकार करता है। एकमात्र प्रतिबंध यह है कि 1024 कतारबद्ध कनेक्शन के साथ केवल 256 एक साथ कनेक्शन संभव हैं और कार्यक्रम को प्रयोगात्मक रूप से चिह्नित किया गया है। इसलिए उत्पादन वातावरण में smtp-सिंक का उपयोग न करें।

-B विकल्प केवल पोस्टफिक्स के नए संस्करणों में मान्य है। 2.7.1 में यह गायब है। 2.8.2 में यह मौजूद है। कहीं-कहीं इसके बीच में पेश किया गया था।

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