Crontab मुझे आउटपुट के साथ ईमेल कैसे करें?


45

मैं अपनी नौकरी के उत्पादन के साथ मुझे ईमेल कैसे बना सकता हूं? मेरे पास MAILTO=redacted@yahoo.com.auनौकरियों के ऊपर है, लेकिन यह काम नहीं करता है।

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

मैं केवल इतना करना चाहता हूं कि मेरे पास crontab ईमेल है। यह इतना कठीन क्यों है??

अतिरिक्त जानकारी:

मेरी crontab फ़ाइल इस तरह दिखती है:

MAILTO=redacted@yahoo.com.au
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync

अतिरिक्त जानकारी:

का उत्पादन ps -ef | grep '[s]endmail'

root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections

मुझे पता है कि क्रोन काम कर रहा है, लेकिन मैं echo Test | mail -s Test redacted@yahoo.com.auवैसे भी मेल कमांड का परीक्षण कर रहा हूं ।


@shellter आपको टैग करना भूल गया।
क्लोन्सेक्स

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

आपकी प्रतिक्रिया मिली, लेकिन मैं इस पर घंटों बिताऊंगा (शायद)। फिर से, यहाँ के लिए खोजें sendmail setup। सौभाग्य!
शेल्टर

@ शेल्टर मुझे बस एहसास हुआ कि इसके लिए लॉग हैं mail। उनमें से एक में, यह यह कहता है: Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.htmlक्या इसका मतलब यह है कि कमांड काम कर रहा है लेकिन याहू मेल को रोक रहा है?
क्लोंडेक्स

मेरे पे-ग्रेड से परे, लेकिन यह एक बहुत स्पष्ट संदेश है, इसलिए ऐसा प्रतीत होगा। जैसा कि आप शायद जानते हैं, एक अलग आईपी से भेजने का प्रयास करें और देखें कि क्या यह थ्रू हो जाता है या यदि त्रुटि संदेश बदल जाता है। क्या आप इसके बारे में जानते हैं http://webmasters.stackexchange.com? वे शायद आपको बेहतर या बेहतर मदद कर सकते हैं, chat.stackexchange.com/rooms/524/webmastersजहां प्रतीत होता है कि सभी प्रश्न स्वागत योग्य हैं (एचएम .. आपको इसमें और अधिक प्रतिनिधि प्राप्त करने की आवश्यकता हो सकती है, क्या आप किसी अन्य स्टैकएक्सचेंज साइटों पर हैं?) शुभकामनाएँ।
शेल्टर

जवाबों:


33

अंत में मैंने इस्तेमाल किया sSMTP। यह Postfixया तो कहीं अधिक सरल है, या sendmailसुंदर तरीके से काम करता है।

भविष्य के संदर्भ के लिए, याहू मेल के साथ sSMTP का उपयोग कैसे करें (चिंता न करें, यह जितना दिखता है उससे कहीं कम जटिल है):

  • Ssmtp डाउनलोड करने के लिए Synaptic का उपयोग करें। वैकल्पिक रूप से आप चला सकते हैं sudo apt-get install ssmtp

  • /Etc/ssmtp/ssmtp.conf पर कॉन्फिग फाइल खोलें।

  • विन्यास को इस तरह बनाएं:

root=[yourRealEmail@yahoo.com.au]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[yourRealEmail@yahoo.com.au]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
  • OpenSSL के साथ cert.pem फ़ाइल बनाएँ। मैंने कमांड का उपयोग किया openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes(अधिक जानकारी यहाँ )। आप फ़ाइल को कहीं भी रख सकते हैं, लेकिन मैंने इसे ~ / में चक कर दिया है। जहां भी आप इसे डालते हैं, सुनिश्चित करें कि आप TLS_CA_File=लाइन को ssmtp.conf में सही स्थान पर इंगित करते हैं ।

  • फ़ाइल खोलें /etc/ssmtp/revaliasesऔर लाइन जोड़ें [yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587। यदि आप रूट के रूप में चल रहे हैं, तो मुझे लगता है कि आपको अपना नाम 'रूट' से बदलने के लिए एक और लाइन जोड़ने की आवश्यकता होगी।

  • यही है, आप जाने के लिए अच्छे हैं! परीक्षण करने के लिए, सबसे आसान तरीका (IMO) इसमें निम्नलिखित के साथ एक फ़ाइल बनाना है:

To: [yourRealEmail@yahoo.com.au]
From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain

Body of your email goes here! Hello world!
  • फ़ाइल को सहेजें और बंद करें, फिर यह जांचने के लिए कि आपके पास असली Sendmail स्थापित नहीं है, चलाएं sendmail -V- इसे 'sSMTP' कहना चाहिए।
  • अंत में, भागो cat fileWithEmailInIt.txt | sendmail -i -t, फिर कुछ सेकंड (10-30) रुको और अपना ईमेल जांचें!

जाहिर है, [yourRealEmail@yahoo.com.au]अपने ईमेल (कोष्ठक के बिना) और [yourRealYahooPassword]अपने याहू मेल पासवर्ड (फिर, कोष्ठक के बिना) के साथ बदलें ।

अतिरिक्त नोट: यदि आप जीमेल से परेशान हैं, तो इस उत्तर के विकल्प 1 का प्रयास करें (उस जानकारी के लिए बेन क्रेसी का धन्यवाद)।


वहाँ। वह करना पड़ेगा। मैं मूर्खतापूर्ण स्वरूपण के साथ बहुत अधिक समय तक बहुत अधिक समय बिता चुका हूं।
क्लोंडेक्स

.Pem फ़ाइल का बिंदु क्या है? मुझे लगता है कि यह ट्यूटोरियल एक को शामिल नहीं करता है: hastheknowhow.com/Configure-the-server/Install-ssmtp.html
रिचर्ड

1
Gmail के लिए, मैं serverfault.com/questions/635139/… में भागा और कम सुरक्षित ऐप्स के लिए एक्सेस को सक्षम करना पड़ा
बेन क्रीसी

2
SSMTP सुझाव के लिए धन्यवाद। उबंटू विकी के पास एक सहायक मार्गदर्शिका है (लेकिन hostnameवर्तमान में दिखाए गए ईमेल पते का उपयोग न करें )। यह उत्तर बताता है कि आप डिफ़ॉल्ट सर्वर प्रमाणपत्र का उपयोग कर सकते हैं, लेकिन मैंने पाया कि मुझे TLS_CA_File=GMail के माध्यम से भेजने के लिए एक पंक्ति की आवश्यकता नहीं है ।
मार्क बेरी

2
@MattM। पदावनत नहीं, सिर्फ रखरखाव नहीं। गैर-उत्पादन वातावरण में sSMTP का उपयोग करना पूरी तरह से ठीक होना चाहिए :)
क्लोन्सेक्स

15

Postfix स्थापित करें। यह अधिकांश अन्य पैकेजों की तुलना में अधिक जटिल है लेकिन यह अभी भी जटिल नहीं है

sudo apt-get install postfix

"इंटरनेट साइट" चुनें और फिर सभी चूक स्वीकार करें। फिर हमें बस बाहर के कनेक्शनों को बंद करने की जरूरत है, इसे " शून्य ग्राहक " में बदलना । चलाएँ: sudoedit /etc/postfix/main.cfऔर inet_interfacesसेटिंग ढूंढें (अंत के पास) और इसे बदल दें loopback-only, जैसे:

inet_interfaces = loopback-only

और अंत में पोस्टफ़िक्स को पुनः आरंभ करें sudo /etc/init.d/postfix restart(पुनः लोड नहीं करेगा)।

अब आपके पास एक पोस्टफ़िक्स इंस्टॉल है जो बाहर की मशीनों के लिए ईमेल रिले नहीं करेगा, यह सिर्फ 127.0.0.1 (और आईपीवी 6 के लिए # 1) पर कनेक्शन स्वीकार करेगा।


एक अलग नोट पर, आपकी क्रोन लाइनें शायद काम नहीं कर रही हैं क्योंकि आप बैशिटिट्यूशन वाले गैर-सापेक्ष पथों और रास्तों का उपयोग कर रहे हैं, shसमझ में नहीं आता है ~और इसका उचित PATHसेट नहीं हो सकता है । इसलिए उन्हें बदलें (मैं केवल वास्तविक रास्तों पर अनुमान लगा रहा हूं):

1 0 * * *   /home/clonkex/Desktop/toskymesh.sh
59 6 * * *  /home/clonkex/Desktop/tooptus.sh
0 3 * * *   /usr/bin/snapraid sync

और अगर आपकी स्क्रिप्ट को किसी विशिष्ट निर्देशिका से चलाने की आवश्यकता है, तो सुनिश्चित करें कि वे cdसही निर्देशिका में हैं। यह मत समझो कि cronयह सही जगह पर होगा क्योंकि इसकी संभावना नहीं होगी।


धन्यवाद, लेकिन पोस्टफिक्स है जटिल, अगर वहाँ कोई सरल गाइड जो भी होने लगते हैं सिर्फ इसलिए कि। वैसे भी, मुझे यह ठीक काम कर रहा था sSMTP के साथ जो वास्तव में मुझे क्या चाहिए और वास्तव में सरल है (हालांकि यह वास्तव में काम करने के लिए इसे प्राप्त करने के लिए बहुत सी काल्पनिक और यादृच्छिक अनुमान लगाती है)। मैं एक जवाब पोस्ट करने का मतलब था, लेकिन भूल गया - मैं वास्तव में अपने ओएस इंस्टॉलेशन को नष्ट करने में कामयाब रहा, जैसे ही मैंने इसे फिर से पूरी तरह से प्राप्त किया है मैं अपना खुद का जवाब पोस्ट करूंगा :)
क्लोन्सेक्स

और वास्तव में मेरी क्रोन नौकरियों ने ठीक काम किया ~/Desktop/
क्लोंडेक्स

2
मुझे जरूरत थी inet_interfaces = localhost। लूपबैक-केवल मुझे दियाpostfix: fatal: config variable inet_interfaces: host not found: loopback-only
सनक

3

मुझे exim4 के साथ बहुत अच्छी किस्मत मिली थी।

sudo apt-get install alpine exim4 mailutils eximon4 spf-tools-perl swaks

(अल्पाइन सिर्फ मेल क्लाइंट है जिसे मैं उपयोग करना पसंद करता हूं)

उसके बाद, मैं भागा

sudo dpkg-reconfigure exim4-config

और संकेतों के माध्यम से पीछा किया। यह पृष्ठ: https://help.ubuntu.com/community/Exim4 बहुत मददगार था। इसे चलने में मुझे लगभग 10 मिनट लगे।


1

SSMTP मैनपेज से: "यह अलियासिंग नहीं करता है, जो या तो यूजर एजेंट में या मेलहब पर किया जाना चाहिए। न ही यह सम्मान करता है। इसके बाद, जिसे रिस्किटिंग होस्ट पर किया जाना है। यह विशेष रूप से पाइपलाइनों को वितरित नहीं करता है। "

इसलिए, यदि आप अपने भेजे गए ईमेल पर रूट करने के लिए भेजे गए सभी msg प्राप्त करना चाहते हैं, तो यह sSMTP का उपयोग करने के लिए एक बुरा विचार है, क्योंकि यह उपनाम का समर्थन नहीं करता है।

इसके बजाय, आप उपसर्ग उपयोगकर्ता कर सकते हैं। यह अभी भी बहुत सरल है। संदेश भेजने के लिए अपने smtp के रूप में gmail के साथ इसका उपयोग कैसे करें:

sudo apt-get install postfix mailutils

मेल कॉन्फ़िगरेशन का सामान्य प्रकार: सैटेलाइट सिस्टम

सिस्टम मेल नाम: मेल सर्वर का पसंदीदा पूरी तरह से योग्य नाम, जैसे, mail.example.com

SMTP रिले होस्ट (कोई नहीं के लिए रिक्त): [smtp.gmail.com]: 587

/Etc/postfix/main.cf में जोड़ें:

smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

/ Etc / postfix / sasl / sasl_passwd बनाएँ

[smtp.gmail.com]:587 emailtouseforsending@gmail.com:password

फिर:

sudo postmap /etc/postfix/sasl/sasl_passwd
sudo chown -R root:postfix /etc/postfix/sasl
sudo chmod 750 /etc/postfix/sasl
sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

संपादित करें / आदि / उपनाम और जोड़ें:

root: email@example.com

अंत में, भागो:

sudo newaliases
sudo systemctl stop postfix.service
sudo systemctl start postfix.service

अब, आप परीक्षण कर सकते हैं कि क्या पुनर्निर्देशन काम कर रहा है:

echo "Test to root." | mail -s "Test message to root" root

आशा है ये मदद करेगा।

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