Files
server-backup/mail.sh
T

76 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Mail via GMX-Relay versenden (Podman-Image "smtp-relay")
#
# Klappt nur direkt im Container, daher ggf. via ssh aufrufen (Annahme: remote user == local user)
#
# $1 = recipient
# $2 = Mail-Betreff (ggf. in "")
# $3 || STDIN = Mail-Body
#
# Verwendung:
# > echo "sinnloser Text - äöüÄÖÜß -"| mail.sh hb242@pm.me "noch'n test"
# > mail.sh hb242@pm.me "log whatever" ../log/some.log
#
PODMAN=/usr/bin/podman
#
# -i ist entscheident, damit die restliche Kommandozeile sauber ausgewertet wird
# das ersetzt den expliziten Aufruf mit "sh -c "..." "
SUDO="sudo -u container -i"
MAILCONTAINER=smtp-relay
MAILSERVER_IP=10.4.2.30
REMOTE=""
which ip >/dev/null 2>&1
if [ $? -eq 0 ]; then
# Linux
myip=$(ip -o route get to 8.8.8.8 | sed -n 's/.*src \([0-9.]\+\).*/\1/p')
else
# macOS
myip=$(ipconfig getifaddr en0) # FIXME: nicht sauber wg. explizitem IF!
fi
if [ "$myip" != "$MAILSERVER_IP" ]; then
REMOTE=yes
fi
TO=$1
SUBJECT=$2
shift 2
if [ -z "$TO" ] || [ -z "$SUBJECT" ]; then
echo "ERROR: missing parameter "
echo
echo "Usage: $0 recipient subject [file || STDIN]"
echo
exit
fi
PODMANCMD="$SUDO $PODMAN"
if [ ! -z "$REMOTE" ]; then
PODMANCMD="ssh $MAILSERVER_IP $PODMANCMD"
fi
# der Mail-Container sollte laufen, falls nicht, dann ist wahrscheinlich der Backup
# noch nicht durch => 30 Minuten warten
$PODMANCMD ps | grep $MAILCONTAINER >/dev/null
if [ $? -ne 0 ]; then
sleep 30m
fi
# Mail body aus Datei oder STDIN holen
CONTENT=$(cat ${1:--})
MAILCMD="$PODMANCMD exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
# construct mail header + content and pipe to sendmail
cat <<EOMB | $MAILCMD
FROM: hb42@gmx.de
TO: ${TO}
DATE: $(date -R)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
SUBJECT: $SUBJECT
$CONTENT
EOMB