#!/usr/bin/env bash # Mail via Proton-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 <