Jika Anda menginginkan pendekatan yang bersih dan sederhana di bash, dan Anda tidak ingin menggunakan cat
, echo
, dll., cara paling sederhana adalah:
mail -s "subject here" [email protected] <<< "message"
<<<
digunakan untuk mengarahkan input standar. Sudah menjadi bagian dari bash sejak lama.
Jika exim dan ssmtp berjalan, Anda dapat mengalami masalah. Jadi, jika Anda hanya ingin menjalankan MTA sederhana, hanya untuk memiliki klien smtp sederhana untuk mengirim pemberitahuan email untuk desakan, Anda harus menghapus MTA yang akhirnya diinstal sebelumnya seperti exim atau postfix pertama dan instal ulang ssmtp.
Kemudian cukup mudah, hanya mengonfigurasi 2 file (revaliases dan ssmtp.conf) - Lihat ssmtp doc - , dan penggunaan dalam skrip bash atau bourne Anda seperti:
#!/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 $?
Tentunya jangan lupa untuk membuka keluaran firewall Anda ke port smtp (25).
Opsi lain untuk skrip bash:
mailbody="Testmail via bash script"
echo "From: [email protected]" > /tmp/mailtest
echo "To: [email protected]" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
- Berkas
/tmp/mailtest
ditimpa setiap kali skrip ini digunakan. - Lokasi sendmail mungkin berbeda untuk setiap sistem.
- Saat menggunakan ini dalam skrip cron, Anda harus menggunakan jalur absolut untuk perintah sendmail.
Jika server dikonfigurasi dengan baik, misalnya memiliki MTA yang aktif dan berjalan, Anda cukup menggunakan perintah mail.
Misalnya, untuk mengirim konten file, Anda dapat melakukan ini:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
untuk detail lebih lanjut.