Soru Linux kabuk komut dosyasından posta gönderme


Linux Shell komut dosyasından bir e-posta göndermek istiyorum. Bunu yapmak için standart komut nedir ve herhangi bir özel sunucu adı kurmam gerekiyor mu?


93
2018-03-01 14:36


Menşei


Superuser hakkında soru sormayı deneyin.superuser.com ] veya daha iyisi, Unix ve Linux SE [unix.stackexchange.com ]. - Dan Moulding
Olası kopya E-posta göndermek için kabuk komut dosyası - Ciro Santilli 新疆改造中心 六四事件 法轮功


Cevaplar:


Sunucu iyi yapılandırılmışsa, örneğin yukarı ve çalışan bir MTA'sı varsa, posta 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.


101
2018-03-01 14:51



'Mta' burada ne anlama geliyor, tam ad veya bağlantı var mı? Yeni başlayan biri olarak bilmek istediğim bu. Bunu yapmak için deneyimim olmadığından. - Zen
@Zen MTA Mail nakliye acentesi anlamına gelir. postfix, sendmail, qmail vb - Francesco Laurita
@Zen çoğu için, MTA SMTP veya IMAP sunucusu anlamına gelebilir. - user151841
Ubuntu’yu nasıl yükleyeceğiniz / yapılandıracağınızdan emin değilseniz: sudo apt-get install mailutils ve seç İnternet sitesi: Mail doğrudan SMTP kullanılarak gönderilir ve alınır.. - user1717828


Bash'ta temiz ve basit bir yaklaşım istiyorsanız ve kullanmak istemiyorsanız cat, echovb. en basit yol:

mail -s "subject here" email@address.com <<< "message"

<<< standart girişi yönlendirmek için kullanılır. Uzun zamandır bir bash parçasıydı.


75
2017-11-19 04:58



echo -e "Bazı \ nİngilizce ve sekme msg" | mail -s "konu" your@email.com - Philippe Gachoud
cat << END ... END | mail -s "subject" test@example.com - ulidtko
Bu komutu kabuk komut dosyasında nasıl kullanırım? - Piyush S. Wanare
Hey, bu benim için harika çalıştı, teşekkürler! Teslim edilecek birden çok adresi nasıl belirlerim? - E.Owen
@ E.Owen -t seçeneğini boşluklarla ayrılmış birden çok adrese göndermek için kullanabilirsiniz. - Jon


Hem exim hem de ssmtp çalışıyorsa, sorunlara girebilirsiniz. Sadece basit bir MTA çalıştırmak istiyorsanız, sadece basit bir smtp istemcisine israr için e-posta bildirimleri göndermek için sahip olmak istiyorsanız, eninde sonunda önceden yüklenmiş MTA'yı exim veya postfix önce ve ssmtp'yi yeniden yükleyin.

Daha sonra sadece 2 dosya (revaliases ve ssmtp.conf) - ssmtp doc - ve bash veya bourne betikteki kullanım gibi konfigürasyonlar oldukça basittir:

#!/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ı çıkışınızı smtp bağlantı noktasına açmayı unutmayın (25).


20
2018-03-02 17:53



Bu komut dosyasında port numarasını nerede değiştirebilirim? Sunucum smtp bağlantı noktasında 8181 üzerinde çalışır. - manix
Bunu bu kabukta yapmam, aksi halde er ya da geç kalmış olursun. Bunu yapılandırma dosyasında yapabilirsin: Gör unix.stackexchange.com/a/132731 - hornetbzz
Eğer basit eko $ MAIL_TXT yaparsam, neden yeni satırlar inkar edilir? - KernelPanic
@Marko: Pls -e seçeneğiyle erkek echo'ya bakın: ters eğik çizgi kaçaklarının yorumlanmasını sağlayın - hornetbzz
Üzgünüm, -e parametresini yanlış yaptı - KernelPanic


Bash betiğinde 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
  • Dosya /tmp/mailtest Bu betiğin kullanıldığı her zaman üzerine yazılır.
  • Sendmail'in yeri sisteme göre farklılık gösterebilir.
  • Bunu bir cron betiğinde kullanırken, sendmail komutunun mutlak yolunu kullanmanız gerekir.

7
2017-11-10 13:12





Genelde kullanmak istersiniz mail Yerel MTA'yı kullanarak mesajınızı göndermek için komut (SMTP kullanarak hedefe teslim edecek veya daha güçlü bir SMTP sunucusuna, örneğin ISP'nize iletecektir). Yerel bir MTA'nız yoksa (UNIX benzeri bir sistem için bir tane çıkarması biraz garip olsa da), bazı minimal MTA'ları kullanabilirsiniz. SSMTP.

ssmtp yapılandırmak 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

Başka bir seçenek, SMTP sunucusuna doğrudan bağlanan ve orada bir mesaj göndermeye çalışan sayısız komut dosyalarından birini kullanmaktır. SMTP-Auth-Email-Senaryo, smtp-cli, Eposta gönder, vb.


6
2018-03-01 16:04



"ssmtp" makineye yüklendi, bu yüzden denemedim ama yine de teşekkürler - Zubair


Bazı smtp sunucularını kullanmak istiyorsanız, şunları yapabilirsiniz:

export SUBJECT=some_subject
export smtp=somehost:someport
export EMAIL=someaccount@somedomain
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"

Değişiklik somehost, someport, ve someaccount@somedomain Kullanacağınız gerçek değerlere. Bu örnekte şifreleme ve kimlik doğrulama yapılmamaktadır.


3
2017-10-11 16:22



Ve ne yapmalı? mailx yüklü değil mi? - nalply


MTA'ya bile ihtiyacınız yok. SMTP protokolü doğrudan SMTP sunucunuza yazmak için yeterince basittir. OpenSSL paketinin kurulu olması durumunda SSL / TLS üzerinden iletişim kurabilirsiniz. Bu gönderiyi kontrol et: https://33hops.com/send-email-from-bash-shell.html

Yukarıdaki kutudan çıkacak metin / html e-postaların nasıl gönderileceğine dair bir örnektir. Ekler eklemek istiyorsanız, şey biraz daha karmaşık olabilir, ikili dosyaları kodlamak ve sınırlar arasında yerleştirmek için base64'e ihtiyacınız vardır. Bu araştırmaya başlamak için iyi bir yer: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP


1
2017-07-12 19:03





Linux üzerinde, posta yardımcı programı "-a" seçeneği ile ek göndermek için kullanılabilir. Seçeneği okumak için man sayfalarına gidin. Örneğin aşağıdaki kod bir ek gönderecektir:

mail -s "BU KONUYUCU" -a attachment.txt name@domain.com <<< "Merhaba Arkadaşım, Lütfen hata raporlarını bulun."


1
2018-02-21 11:22



SO'ya hoşgeldiniz. Bir cevap gönderdiğiniz için teşekkür ederiz. Hakkında bilgi okuyunuz iyi bir cevap nasıl yazılır ve buna göre değiştirin. SO ;-) tadını çıkarın - ZF007


mail Komut bunu yapar (kim tahmin ederdi ;-)). Kabuğunu aç ve gir man mail manuel sayfa almak için mail Mevcut tüm seçenekler için komut.


0
2018-03-01 14:40



Bunu yaptım ama kullanmak için bir sunucu belirtmek için bir seçenek yok - Zubair
Bu, yerel posta aktarım aracısı yapılandırmanızın bir parçasıdır, örn. Sendmail veya Postfix. - DarkDust
Tamam, çalıştım teşekkürler - Zubair