Pokud chcete čistý a jednoduchý přístup v bash a nechcete používat cat
, echo
, atd., nejjednodušší způsob by byl:
mail -s "subject here" [email protected] <<< "message"
<<<
slouží k přesměrování standardního vstupu. Je součástí bash po dlouhou dobu.
Pokud jsou spuštěny exim i ssmtp, můžete se dostat do problémů. Takže pokud chcete spustit jednoduchý MTA, jen mít jednoduchého smtp klienta pro zasílání e-mailových upozornění pro naléhání, musíte odstranit případně předinstalovaný MTA jako exim nebo postfix nejprve a znovu nainstalujte ssmtp.
Pak je to docela přímočaré, nakonfigurujete pouze 2 soubory (revaliases a ssmtp.conf) - Viz ssmtp doc - a použití ve vašem bash nebo bourne skriptu je podobné:
#!/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 $?
Samozřejmě nezapomeňte otevřít výstup brány firewall na port smtp (25).
Další možnost pro v bash skriptu:
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
- Soubor
/tmp/mailtest
je přepsán při každém použití tohoto skriptu. - Umístění sendmailu se může v jednotlivých systémech lišit.
- Když to použijete ve skriptu cron, musíte pro příkaz sendmail použít absolutní cestu.
Pokud je server dobře nakonfigurován, např. má spuštěný MTA, stačí použít příkaz mail.
Chcete-li například odeslat obsah souboru, můžete provést toto:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
pro více podrobností.