Bir Linux Shell komut dosyasından bir e-posta göndermek istiyorum. Bunu yapmak için standart komut nedir ve herhangi bir özel sunucu adı belirlemem gerekir mi?
Bir Linux Shell komut dosyasından bir e-posta göndermek istiyorum. Bunu yapmak için standart komut nedir ve herhangi bir özel sunucu adı belirlemem gerekir mi?
Yanıtlar:
Sunucu iyi yapılandırılmışsa, örneğin çalışır durumda bir MTA'ya sahipse, sadece mail komutunu kullanabilirsiniz.
Örneğin, bir dosyanın içeriğini göndermek için şunu yapabilirsiniz:
$ cat /path/to/file | mail -s "your subject" your@email.com
man mail
daha fazla ayrıntı için.
sudo apt-get install mailutils
ve İnternet sitesini seçin : Posta doğrudan SMTP kullanılarak gönderilir ve alınır. .
Eğer bash temiz ve basit bir uygulamasını isteyenler ve kullanmak istemiyorsanız cat
, echo
vb basit şekilde olacaktır:
mail -s "subject here" email@address.com <<< "message"
<<<
standart girişi yeniden yönlendirmek için kullanılır. Uzun zamandır bash'ın bir parçası.
cat << END
...END | mail -s "subject" test@example.com
Hem exim hem de ssmtp çalışıyorsa, sıkıntılara girebilirsiniz. Bu nedenle, sadece basit bir MTA çalıştırmak istiyorsanız, sadece ısrar için e-posta bildirimleri gönderecek basit bir smtp istemcisine sahip olmak istiyorsanız, önce exim veya postfix gibi önceden yüklenmiş MTA'yı temizlemeli ve ssmtp'yi yeniden yüklemelisiniz.
O zaman oldukça basittir, yalnızca 2 dosyayı yapılandırmak (revaliases ve ssmtp.conf) - ssmtp belgesine bakın - ve bash veya bourne betiğinizdeki kullanım şuna benzer:
#!/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 $?
Açıkçası güvenlik duvarı çıktınızı smtp portuna (25) açmayı unutmayın.
Bir bash komut dosyası için başka bir seçenek:
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
Bu komut dosyası her kullanıldığında dosyanın üzerine yazılır.Genel olarak, mail
mesajınızı yerel MTA kullanarak göndermek için komutu kullanmak istersiniz (bu, onu hedefe SMTP kullanarak teslim eder veya sadece daha güçlü bir SMTP sunucusuna, örneğin ISS'nize iletir). Yerel bir MTA'nız yoksa (UNIX benzeri bir sistemin bir tanesini atlaması biraz alışılmadık olsa da), ssmtp gibi minimalist bir MTA kullanabilirsiniz .
ssmtp
yapılandırması oldukça kolaydır. Temel olarak, sağlayıcınızın SMTP sunucusunun nerede olduğunu belirtmeniz yeterlidir:
# 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
Diğer bir seçenek ise, doğrudan SMTP sunucusuna bağlanan ve orada Smtp-Auth-Email-Script , smtp-cli , SendEmail vb. Gibi bir mesaj göndermeye çalışan sayısız komut dosyasından birini kullanmaktır .
Bir smtp sunucusu kullanmak istediğinizi kabul ederek şunları yapabilirsiniz:
export SUBJECT=some_subject
export smtp=somehost:someport
export EMAIL=someaccount@somedomain
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"
Değişim somehost
, someport
ve someaccount@somedomain
gerçek değerlere Kullanmak söyledi. Bu örnekte şifreleme ve kimlik doğrulama yapılmamaktadır.
mailx
kurulu değilse ne yapmalı ?
mail
Komutu (kim ;-) tahmin ederdi bunu yapmaz. Kabuğunuzu açın ve mevcut tüm seçenekler man mail
için mail
komutun kılavuz sayfasını almak için girin .
Bir MTA'ya bile ihtiyacınız yok. SMTP protokolü, doğrudan SMTP sunucunuza yazacak kadar basittir. OpenSSL paketini yüklediyseniz, SSL / TLS üzerinden bile iletişim kurabilirsiniz. Bu gönderiyi kontrol edin: https://33hops.com/send-email-from-bash-shell.html
Yukarıdaki metin / html e-postalarının kutudan nasıl çıkarılacağına dair bir örnek. Ek eklemek istiyorsanız, bu şey biraz daha karmaşık hale gelebilir, ikili dosyaları base64 kodlamanız ve sınırlar arasına gömmeniz gerekir. Burası araştırmaya başlamak için iyi bir yerdir: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
Linux'ta, "-a" seçeneği ile e- posta programı eklenti göndermek için kullanılabilir. Seçenek hakkında bilgi almak için man sayfalarına gidin. Örneğin aşağıdaki kod bir ek gönderecektir:
mail -s "BU KONU" -a ek.txt name@domain.com <<< "Merhaba Dostum, Lütfen hata raporlarını bulun."
POSTFIX KULLANIMI
1: yazılımı yükleyin
Debian ve Ubuntu:
apt-get update && apt-get install postfix mailutils
OpenSUSE:
zypper update && zypper install postfix mailx cyrus-sasl
Fedora:
dnf update && dnf install postfix mailx
CentOs:
yum update && yum install postfix mailx cyrus-sasl cyrus-sasl-plain
Arch Linux:
pacman -Sy postfix mailutils
FreeBSD:
portsnap fetch extract update
cd /usr/ports/mail/postfix
make config
yapılandırmada SASL desteğini seçin
make install clean
pkg install mailx
2. Gmail'i yapılandırın
/ Etc / sonek. Parola dosyasını oluşturun veya düzenleyin:
vim /etc/postfix/sasl_passwd
vim kullanıyorum u nano, cat gibi herhangi bir dosya düzenleyiciyi kullanabilirsiniz .....
> Ubuntu, Fedora, CentOS, Debian, OpenSUSE, Arch Linux:
bunu ekle
kullanıcı, posta adınız ve şifrenizle değiştirildiğinde , Gmail şifrenizdir
[smtp.gmail.com]:587 user@gmail.com:password
Dosyayı kaydedin ve kapatın ve sadece root tarafından erişilebilir hale getirin: şifrenizi içeren hassas bir içerik olduğundan dolayı
chmod 600 /usr/local/etc/postfix/sasl_passwd
> FreeBSD:
dizin / usr / local / etc / postfix.
vim /usr/local/etc/postfix/sasl_passwd
Satırı ekleyin:
[smtp.gmail.com]:587 user@gmail.com:password
Kaydedin ve yalnızca root tarafından erişilebilir hale getirin:
chmod 600 /usr/local/etc/postfix/sasl_passwd
3. Sonek yapılandırması
yapılandırma dosyası main.cf
Postfix'te ayarlamamız gereken 6 parametre
Ubuntu, Arch Linux, Debian:
Düzenle
vim /etc/postfix/main.cf
aşağıdaki değerleri değiştirin:
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 , yapılandırmada Gmail ile uyumlu olmayan güvenlik seçeneklerinin olmamasını sağlamak için boş olarak ayarlanacak kullanılmamasını .
kaydet ve kapat
olduğu gibi
OpenSUSE:
vim /etc/postfix/main.cf
Değiştirme
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
ayrıca master.cf dosyasının yapılandırılmasını gerektirir
değiştirin:
vim /etc/postfix/master.cf
bu satırın açıklamasını kaldırarak olduğu gibi (kaldır #)
#tlsmgr unix - - n 1000? 1 tlsmg
kaydet ve kapat
Fedora, CentOS:
vim /etc/postfix/main.cf
Değiştirme
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
değiştirin:
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
kaydet ve kapat bunu
4. Parola Dosyasını İşle:
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
postmap /etc/postfix/sasl_passwd
için FreeBSD
postmap /usr/local/etc/postfix/sasl_passwd
4.1) Postfix'i yeniden başlatın
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
systemctl restart postfix.service
için FreeBSD:
service postfix onestart
nano /etc/rc.conf
Ekle
postfix_enable=YES
kaydet ve başlamak için çalıştır
service postfix start
5. Aşağıdaki bağlantı yardımıyla Gmail'de "Daha Az Güvenli Uygulamalar" ı etkinleştirin
https://support.google.com/accounts/answer/6010255
6. Test E-postası Gönderin
mail -s "subject" recever@domain.com
Enter tuşuna basın
posta gövdesini dilediğiniz gibi ekleyin enter tuşuna basın ve ardından ctrl + d tuşlarına basın ve uygun sonlandırma için
çalışmıyor eğer tüm adımları kontrol tekrar kontrol u "etkinleştirirsem az güvenli bir uygulama" senin gmail içinde
sonra herhangi bir şeyi değiştirirseniz postfix'i yeniden başlatın
kabuk komut dosyası için .sh dosyasını oluşturun ve gereksiniminiz olarak 6 adımlı komut ekleyin
örneğin sadece bir örnek için
#!/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
Disk kullanımı THRESHOLD varialbe (burada% 80) tarafından belirtilen yüzdenin üzerine çıktığında komut dosyası bir e-posta gönderir.
'email' veya 'emailx' komutunu kullanabilirsiniz.
(1) $ vim /etc/mail.rc # veya # 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) $ echo "Lütfen kullanılmayan konuları kaldırmayı unutmayın!" | mail -s "atık konuları" -a a.txt developer@xxx.com # grup kullanıcısına gönder 'developer@xxxx.com'