Se vuoi un approccio pulito e semplice in bash e non vuoi usare cat
, echo
, ecc., il modo più semplice sarebbe:
mail -s "subject here" [email protected] <<< "message"
<<<
viene utilizzato per reindirizzare l'input standard. Fa parte di bash da molto tempo.
Se sono in esecuzione sia exim che ssmtp, potresti avere dei problemi. Quindi, se vuoi solo eseguire un semplice MTA, solo per avere un semplice client smtp per inviare notifiche e-mail per insistenza, devi eliminare l'MTA eventualmente preinstallato come exim o postfix prima e reinstallare ssmtp.
Quindi è abbastanza semplice, configurando solo 2 file (revaliases e ssmtp.conf) - Vedi ssmtp doc - e l'utilizzo nel tuo script bash o bourne è come :
#!/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 $?
Ovviamente non dimenticare di aprire l'output del tuo firewall alla porta smtp (25).
Un'altra opzione per in uno script 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
- Il file
/tmp/mailtest
viene sovrascritto ogni volta che viene utilizzato questo script. - La posizione di sendmail può variare a seconda del sistema.
- Quando lo usi in uno script cron, devi usare il percorso assoluto per il comando sendmail.
Se il server è ben configurato, ad esempio ha un MTA attivo e funzionante, puoi semplicemente usare il comando mail.
Ad esempio, per inviare il contenuto di un file, puoi fare questo:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
per maggiori dettagli.