64 lines
1.4 KiB
Bash
Executable File
64 lines
1.4 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
|
|
SUDO="sudo -u container sh -c"
|
|
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
|
|
|
|
# Mail body aus Datei oder STDIN holen
|
|
CONTENT=$(cat ${1:--})
|
|
|
|
MAILCMD="$SUDO $PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t"
|
|
if [ ! -z "$REMOTE" ]; then
|
|
MAILCMD="ssh $MAILSERVER_IP \"$MAILCMD\""
|
|
fi
|
|
# 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
|