मैं लिनक्स शेल स्क्रिप्ट से एक ईमेल भेजना चाहता हूं। ऐसा करने के लिए मानक कमांड क्या है और क्या मुझे कोई विशेष सर्वर नाम सेट करने की आवश्यकता है?
मैं लिनक्स शेल स्क्रिप्ट से एक ईमेल भेजना चाहता हूं। ऐसा करने के लिए मानक कमांड क्या है और क्या मुझे कोई विशेष सर्वर नाम सेट करने की आवश्यकता है?
जवाबों:
यदि सर्वर अच्छी तरह से कॉन्फ़िगर किया गया है, उदाहरण के लिए इसमें एक अप और एमटीए चल रहा है, तो आप केवल मेल कमांड का उपयोग कर सकते हैं।
उदाहरण के लिए, किसी फ़ाइल की सामग्री भेजने के लिए, आप यह कर सकते हैं:
$ cat /path/to/file | mail -s "your subject" your@email.com
man mail
अधिक जानकारी के लिए।
sudo apt-get install mailutils
और इंटरनेट साइट का चयन करें : मेल एसएमटीपी का उपयोग करके सीधे भेजा और प्राप्त किया जाता है। ।
आप पार्टी में एक स्वच्छ और सरल दृष्टिकोण चाहते हैं, और आप का उपयोग नहीं करना चाहते हैं cat
, echo
आदि, सबसे आसान तरीका होगा:
mail -s "subject here" email@address.com <<< "message"
<<<
मानक इनपुट को पुनर्निर्देशित करने के लिए उपयोग किया जाता है। यह लंबे समय से बैश का हिस्सा रहा है।
cat << END
...END | mail -s "subject" test@example.com
यदि एक्ज़िम और ssmtp दोनों चल रहे हैं, तो आप परेशानियों में प्रवेश कर सकते हैं। इसलिए यदि आप केवल एक साधारण MTA चलाना चाहते हैं, तो बस एक साधारण smtp क्लाइंट के पास आग्रह के लिए ईमेल सूचनाएं भेजने के लिए, आप अंततः पहले MTA को एक्सिम या पोस्टफ़िक्स जैसे पहले से ही शुद्ध कर लेंगे और ssmtp को फिर से इंस्टॉल करेंगे।
तब यह काफी सीधा होता है, केवल 2 फाइलों (रिवाइलैसेस और ssmtp.conf) को कॉन्फ़िगर करना - ssmtp doc देखें - और आपकी बैश या बॉर्न स्क्रिप्ट में उपयोग इस तरह है:
#!/bin/sh
SUBJECT=$1
RECEIVER=$2
TEXT=$3
SERVER_NAME=$HOSTNAME
SENDER=$(whoami)
USER="noreply"
[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"
[[ -z $2 ]] && RECEIVER="another_configured_email_address"
[[ -z $3 ]] && TEXT="no text content"
MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"
echo -e $MAIL_TXT | sendmail -t
exit $?
स्पष्ट रूप से smtp port (25) में अपना फ़ायरवॉल आउटपुट खोलना न भूलें।
बैश स्क्रिप्ट में एक और विकल्प:
mailbody="Testmail via bash script"
echo "From: info@myserver.test" > /tmp/mailtest
echo "To: john@mywebsite.test" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
/tmp/mailtest
इस स्क्रिप्ट का उपयोग करने पर फ़ाइल को ओवरराइट कर दिया जाता है।आम तौर पर, आप mail
स्थानीय एमटीए का उपयोग करके अपना संदेश भेजने के लिए कमांड का उपयोग करना चाहते हैं (जो या तो इसे एसएमटीपी का उपयोग करके गंतव्य तक पहुंचाएगा या इसे कुछ अधिक शक्तिशाली एसएमटीपी सर्वर में उदाहरण के लिए, आपके आईएसपी पर अग्रेषित करेगा)। यदि आपके पास एक स्थानीय एमटीए नहीं है (हालांकि यह एक को छोड़ने के लिए यूनिक्स-जैसी प्रणाली के लिए थोड़ा असामान्य है), तो आप या तो कुछ न्यूनतम एमटीए जैसे ssmtp का उपयोग कर सकते हैं ।
ssmtp
कॉन्फ़िगर करना काफी आसान है। मूल रूप से, आपको केवल यह बताना होगा कि आपके प्रदाता का SMTP सर्वर कहां है:
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=mail
एक अन्य विकल्प यह है कि एक myriads स्क्रिप्ट का उपयोग करें जो सीधे SMTP सर्वर से कनेक्ट होती है और वहां एक संदेश पोस्ट करने का प्रयास करती है, जैसे कि Smtp-Auth-Email-Script , smtp-cli , SendEmail , आदि।
आप कुछ smtp सर्वर का उपयोग करना चाहते हैं, आप कर सकते हैं:
export SUBJECT=some_subject
export smtp=somehost:someport
export EMAIL=someaccount@somedomain
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"
बदलें somehost
, someport
और someaccount@somedomain
वास्तविक मूल्यों के लिए जो आप उपयोग करेंगे। इस उदाहरण में कोई एन्क्रिप्शन और कोई प्रमाणीकरण नहीं किया जाता है।
mailx
स्थापित नहीं है तो क्या करें ?
mail
आदेश है कि (जो अनुमान लगाया है | ;-) करता है। अपना शेल खोलें और उपलब्ध सभी विकल्पों के लिए कमांड के लिए man mail
मैनुअल पेज प्राप्त करने के लिए दर्ज mail
करें।
आपको MTA की भी आवश्यकता नहीं है। SMTP प्रोटोकॉल सीधे अपने SMTP सर्वर पर लिखने के लिए पर्याप्त है। यदि आपके पास ओपनएसएसएल पैकेज स्थापित है, तो आप एसएसएल / टीएलएस पर भी संवाद कर सकते हैं। इस पोस्ट को देखें: https://33hops.com/send-email-from-bash-shell.html
उपरोक्त पाठ / html ई-मेल भेजने के तरीके पर एक उदाहरण है जो बॉक्स से बाहर काम करेगा। यदि आप अटैचमेंट जोड़ना चाहते हैं तो बात थोड़ी और जटिल हो सकती है, आपको बाइनरी फ़ाइलों को एनकोड करने और उन्हें सीमाओं पर एम्बेड करने की आवश्यकता होगी। यह जाँच शुरू करने के लिए एक अच्छी जगह है: http://forums.codeguru.com/showthread.php?418377-end-Email-w-attachments-use-SMTP
Linux पर, मेल यूटिलिटी का उपयोग "-a" विकल्प के साथ अटैचमेंट भेजने के लिए किया जा सकता है। विकल्प के बारे में पढ़ने के लिए मैन पेज पर जाएं। उदाहरण के लिए निम्नलिखित कोड एक अनुलग्नक भेजेगा:
मेल -s "यह विषय है" -a अनुलग्नक .xt name@domain.com <<< "हाय बडी, कृपया विफलता रिपोर्ट पाएं।"
पोस्टिंग का उपयोग
1: सॉफ्टवेयर स्थापित करें
डेबियन और उबंटू:
apt-get update && apt-get install postfix mailutils
OpenSUSE:
zypper update && zypper install postfix mailx cyrus-sasl
फेडोरा:
dnf update && dnf install postfix mailx
CentOS:
yum update && yum install postfix mailx cyrus-sasl cyrus-sasl-plain
आर्क लिनक्स:
pacman -Sy postfix mailutils
FreeBSD:
portsnap fetch extract update
cd /usr/ports/mail/postfix
make config
विन्यास में एसएएसएल समर्थन का चयन करें
make install clean
pkg install mailx
2. जीमेल कॉन्फ़िगर करें
/ Etc / पोस्टफ़िक्स। पासवर्ड फ़ाइल बनाएं या संपादित करें:
vim /etc/postfix/sasl_passwd
im vim u का उपयोग करते हुए नैनो, कैट जैसे किसी भी फाइल एडिटर का उपयोग कर सकते हैं .....
> उबंटू, फेडोरा, सेंटोस, डेबियन, ओपनसुअस, आर्क लिनक्स:
इसे जोड़ो
जहां उपयोगकर्ता आपके मेलनाम और पासवर्ड से बदल जाता है, वह आपका जीमेल पासवर्ड है
[smtp.gmail.com]:587 user@gmail.com:password
फ़ाइल को सहेजें और बंद करें और इसे केवल रूट द्वारा एक्सेस करें: इसकी संवेदनशील सामग्री को लिखें जिसमें ur पासवर्ड हो
chmod 600 /usr/local/etc/postfix/sasl_passwd
> FreeBSD:
निर्देशिका / usr / स्थानीय / आदि / उपसर्ग।
vim /usr/local/etc/postfix/sasl_passwd
लाइन जोड़ें:
[smtp.gmail.com]:587 user@gmail.com:password
सहेजें और इसे केवल रूट द्वारा सुलभ बनाएं:
chmod 600 /usr/local/etc/postfix/sasl_passwd
3. पोस्टफिक्स कॉन्फ़िगरेशन
कॉन्फ़िगरेशन फ़ाइल main.cf
6 पैरामीटर हमें पोस्टफिक्स में सेट करना होगा
उबंटू, आर्क लिनक्स, डेबियन:
संपादित करें
vim /etc/postfix/main.cf
निम्नलिखित मानों को संशोधित करें:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_security_options जो कॉन्फ़िगरेशन में खाली करने के लिए सेट किया जाएगा , यह सुनिश्चित करने के लिए कि कोई भी जीमेल-असंगत सुरक्षा विकल्पों का उपयोग नहीं किया जाता है।
सहेजें और बंद करें
के लिए के रूप में
OpenSUSE:
vim /etc/postfix/main.cf
संशोधित
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/ca-bundle.pem
इसके लिए फ़ाइल मास्टर.कॉन्फ़ का विन्यास भी आवश्यक है
संशोधित:
vim /etc/postfix/master.cf
इस लाइन को अनइंस्टॉल करके (निकालें #)
#tlsmgr unix - - n 1000? 1 tlsmg
सहेजें और बंद करें
फेडोरा, CentOS:
vim /etc/postfix/main.cf
संशोधित
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
FreeBSD:
vim /usr/local/etc/postfix/main.cf
संशोधित:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/mail/certs/cacert.pem
इसे सहेजें और बंद करें
4. प्रक्रिया पासवर्ड फ़ाइल:
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, डेबियन:
postmap /etc/postfix/sasl_passwd
के लिए freeBSD
postmap /usr/local/etc/postfix/sasl_passwd
4.1) पोस्टफ़िक्स को फिर से शुरू करें
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, डेबियन:
systemctl restart postfix.service
के लिए FreeBSD:
service postfix onestart
nano /etc/rc.conf
जोड़ना
postfix_enable=YES
बचाने के लिए फिर शुरू करने के लिए चलाएँ
service postfix start
5. नीचे दिए गए लिंक की मदद से जीमेल में "कम सिक्योर ऐप्स" सक्षम करें
https://support.google.com/accounts/answer/6010255
6. एक टेस्ट ईमेल भेजें
mail -s "subject" recever@domain.com
एंटर दबाए
अपनी इच्छा के अनुसार मेल का मुख्य भाग जोड़ें , फिर उचित समाप्ति के लिए ctrl + d दबाएं
अगर यह काम नहीं कर रहा है तो सभी चरणों को फिर से जांचें और जांचें कि क्या आप अपने जीमेल में " कम सुरक्षित ऐप" सक्षम करते हैं
उसके बाद पोस्टफ़िक्स को पुनः आरंभ करें यदि यू उस में कुछ भी संशोधित करता है
शेल स्क्रिप्ट के लिए .sh फ़ाइल बनाएँ और अपनी आवश्यकता के अनुसार 6 चरण कमांड जोड़ें
उदाहरण के लिए सिर्फ एक नमूने के लिए
#!/bin/bash
REALVALUE=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=80
if [ "$REALVALUE" -gt "$THRESHOLD" ] ; then
mail -s 'Disk Space Alert' mailid@domainname.com << EOF
Your root partition remaining free space is critically low. Used: $REALVALUE%
EOF
fi
स्क्रिप्ट तब ईमेल भेजती है जब डिस्क का उपयोग THRESHOLD संस्करण (80% यहाँ) द्वारा निर्दिष्ट प्रतिशत से ऊपर हो जाता है।
आप 'ईमेल' या 'ईमेल' कमांड का उपयोग कर सकते हैं।
(1) $ vim /etc/mail.rc # या # vim /etc/nail.rc
set from = xxx@xxx.com #
set smtp = smtp.exmail.gmail.com #gmail's smtp server
set smtp-auth-user = xxx@xxx.com #sender's email address
set smtp-auth-password = xxxxxxx #get from gmail, not your email account passwd
set smtp-auth=login
(2) $ गूंज "Pls अप्रयुक्त विषयों को हटाने के लिए याद रखें!" | mail -s "बेकार विषय" -a a.txt developer@xxx.com # समूह उपयोगकर्ता 'developer@xxxx.com' पर भेजें