Si desea un enfoque limpio y simple en bash, y no desea utilizar cat
, echo
, etc., la forma más sencilla sería:
mail -s "subject here" [email protected] <<< "message"
<<<
se utiliza para redirigir la entrada estándar. Ha sido parte de bash durante mucho tiempo.
Si se están ejecutando tanto exim como ssmtp, es posible que tenga problemas. Entonces, si solo desea ejecutar un MTA simple, solo para tener un cliente smtp simple para enviar notificaciones por correo electrónico para insistir, debe purgar el MTA preinstalado eventualmente como exim o postfijo primero y reinstale ssmtp.
Entonces es bastante sencillo, configurando solo 2 archivos (revaliases y ssmtp.conf) - Ver ssmtp doc - , y el uso en su script bash o bourne es como:
#!/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 $?
Obviamente, no olvide abrir la salida de su firewall al puerto smtp (25).
Otra opción para 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
- El archivo
/tmp/mailtest
se sobrescribe cada vez que se utiliza este script. - La ubicación de sendmail puede diferir según el sistema.
- Al usar esto en un script cron, debe usar la ruta absoluta para el comando sendmail.
Si el servidor está bien configurado, por ejemplo, tiene un MTA en funcionamiento, puede usar el comando de correo.
Por ejemplo, para enviar el contenido de un archivo, puede hacer esto:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
para más detalles.