Si vous voulez une approche propre et simple dans bash, et que vous ne voulez pas utiliser cat
, echo
, etc., le moyen le plus simple serait :
mail -s "subject here" [email protected] <<< "message"
<<<
est utilisé pour rediriger l'entrée standard. Il fait partie de bash depuis longtemps.
Si exim et ssmtp sont en cours d'exécution, vous pouvez rencontrer des problèmes. Donc, si vous voulez juste exécuter un simple MTA, juste pour avoir un simple client smtp pour envoyer des notifications par e-mail en cas d'insistance, vous devez purger le MTA éventuellement préinstallé comme exim ou suffixe d'abord et réinstallez ssmtp.
Ensuite, c'est assez simple, en configurant seulement 2 fichiers (revaliases et ssmtp.conf) - Voir doc ssmtp - , et l'utilisation dans votre script bash ou bourne est comme :
#!/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 $?
N'oubliez évidemment pas d'ouvrir la sortie de votre pare-feu sur le port smtp (25).
Une autre option pour dans un 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
- Le fichier
/tmp/mailtest
est écrasé à chaque fois que ce script est utilisé. - L'emplacement de sendmail peut varier d'un système à l'autre.
- Lorsque vous l'utilisez dans un script cron, vous devez utiliser le chemin absolu pour la commande sendmail.
Si le serveur est bien configuré, par exemple s'il dispose d'un MTA opérationnel, vous pouvez simplement utiliser la commande mail.
Par exemple, pour envoyer le contenu d'un fichier, vous pouvez faire ceci :
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
pour plus de détails.