summaryrefslogtreecommitdiff
path: root/sendmailadvanced
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2016-05-03 15:20:26 +0200
committerErich Eckner <git@eckner.net>2016-05-03 15:22:31 +0200
commit6907ef64f2bfe2c2a72fe403f2a626e714ecf98f (patch)
treec15c10a0358f420f68da0fa467b2617843e9a335 /sendmailadvanced
parent558eb3ebdd9f6b8f1256d514b455defbc6ab09a0 (diff)
downloadsendmailadvanced-6907ef64f2bfe2c2a72fe403f2a626e714ecf98f.tar.xz
Makefile, manpage neu, neue Versionv1.0.6
Diffstat (limited to 'sendmailadvanced')
-rwxr-xr-xsendmailadvanced186
1 files changed, 0 insertions, 186 deletions
diff --git a/sendmailadvanced b/sendmailadvanced
deleted file mode 100755
index c1a6ef0..0000000
--- a/sendmailadvanced
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/bin/bash
-
-verwendung() {
- >&2 echo 'sendmailadvanced [(-h|--hook) hook] [(-i|--inline) file | -t|--no-inline] [-e|--[no-]encrypt] [-s|--[no-]stamp]'
- >&2 echo ' -h|--hook: activate hook'
- >&2 echo ' -i|--inline: enhance email file in situ'
- >&2 echo ' "--inline -" has the same effect as "-t"'
- >&2 echo ' conflicts with -t|--no-inline'
- >&2 echo ' -t|--no-inline: enhance email from stdin to stdout'
- >&2 echo ' conflicts with -i|--inline'
- >&2 echo ' -e|--[no-]encrypt: do (not) encrypt'
- >&2 echo ' -s|--[no-]stamp: do (not) stamp'
- exit 1
-}
-
-stempeln() {
- oldIFS="${IFS}"
-
- IFS=','
- for adressat in ${adressatenString}
- do
- if [[ "${adressat}" == *"<"*">"* ]]
- then
- adressat="${adressat#*<}"
- adressat="${adressat%>*}"
- fi
- adressat="$(
- echo "${adressat}" | \
- tr -d "[:space:]"
- )"
- echo "${adressat}" | grep -q "\S" || continue
- hashcash -b ${hashcash_bits} -Xm "${adressat}"
- done
-
- adressatenString=""
-
- IFS="${oldIFS}"
-}
-
-datei=""
-encrypt=true
-stamp=true
-
-dForced=false
-eForced=false
-sForced=false
-
-if [ -x /etc/sendmailadvanced.conf ]
-then
- . /etc/sendmailadvanced.conf
-else
- for konfig in $(readlink -f "$0").conf $(find . -name sendmailadvanced.conf 2> /dev/null)
- do
- [ -x "${konfig}" ] || continue
- . "${konfig}"
- break
- done
-fi
-
-gpg --list-keys "${gpg_recipient}" &> /dev/null || encrypt=false
-which hashcash &> /dev/null || stamp=false
-
-eval set -- "$(getopt -o eh:i:st --long encrypt,no-encrypt,hook:,inline:,no-inline,stamp,no-stamp -n "$(basename "$0")" -- "$@" || echo verwendung)"
-
-while true
-do
- case "$1" in
- -h|--hook)
- shift
- hooks[${#hooks[@]}]="$1"
- ;;
- -i|--inline)
- ${dForced} && verwendung
- shift
- datei="$1"
- [ "${datei}" == "-" ] && datei=""
- dForced=true
- ;;
- -t|--no-inline)
- ${dForced} && verwendung
- datei=""
- dForced=true
- ;;
- -e|--encrypt)
- ${eForced} && verwendung
- encrypt=true
- eForced=true
- ;;
- --no-encrypt)
- ${eForced} && verwendung
- encrypt=false
- eForced=true
- ;;
- -s|--stamp)
- ${sForced} && verwendung
- stamp=true
- sForced=true
- ;;
- --no-stamp)
- ${sForced} && verwendung
- stamp=false
- sForced=true
- ;;
- --)
- shift
- break
- ;;
- *)
- >&2 echo "FEHLER: Verstehe Option \"$1\" doch nicht! Ich beende."
- verwendung
- ;;
- esac
- shift
-done
-
-[ $# -ne 0 ] && verwendung
-
-MAILER="cantfind"
-for executable in sendmail msmtp
-do
- for prefix in /usr/bin /usr/sbin /bin /sbin
- do
- [ "${MAILER}" == "cantfind" ] && [ -x ${prefix}/${executable} ] && MAILER="${prefix}/${executable}"
- done
-done
-
-if [ -z "${datei}" ] && [ "${MAILER}" == "cantfind" ]
-then
- >&2 echo "ERROR: Can't find suitable mailer."
- exit 1
-fi
-
-(
- [ -z "${datei}" ] && cat || cat "${datei}"
-) | \
-(
- IFS=''
- adressatenString=""
- adressatenSammeln=false
- while read -r zeile
- do
- echo "${zeile}" | grep -q "\S" || break
- s="${zeile}"
- if [ "${s:0:3}" == "To:" ] || [ "${s:0:3}" == "Cc:" ]
- then
- adressatenSammeln=true
- s=" ,${s:4}"
- fi
- if [ ! "${s:0:1}" == " " ]
- then
- ${adressatenSammeln} && ${stamp} && stempeln
- adressatenSammeln=false
- fi
- ${adressatenSammeln} && adressatenString="${adressatenString}${s}"
- echo "${zeile}"
- done
-
- ${stamp} && stempeln
- echo "${zeile}"
-
- (
- for hookParam in "${hooks[@]}"
- do
- body_header_hook "${hookParam}"
- done
- cat
- for hookParam in "${hooks[@]}"
- do
- body_footer_hook "${hookParam}"
- done
- ) | \
- (
- ${encrypt} && gpg -e -a -s -r ${gpg_recipient} || cat
- )
-) | \
-(
- if [ -z "${datei}" ]
- then
- ${MAILER} -t
- else
- tmpFile="$(mktemp)"
- cat > "${tmpFile}"
- cat "${tmpFile}" > "${datei}"
- rm -f "${tmpFile}"
- fi
-)