/usr/sbin/update-exim4.conf.template is in exim4-config 4.89-2+deb9u3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | #!/bin/bash
set -e
CONFDIR="${CONFDIR:-/etc/exim4}"
DONOTRUN='true'
UPEX4CT_outputfile="${CONFDIR}/exim4.conf.template"
usage() {
cat <<EOF
$0 - Generate exim4 configuration file template
Options:
-n|--nobackup - Overwrite old template, do not take backup.
-o|--output file - write output to file instead of ${UPEX4CT_outputfile}
-h|--help - This message.
-r|--run - Actually do something
EOF
}
## Parse commandline
TEMP=$(getopt -n update-exim4.conf.template \
-l nobackup,output:,help,run -- \
+no:hr "$@")
if test "$?" != 0; then
echo "Terminating..." >&2
exit 1
fi
eval set -- ${TEMP}
while test "$1" != "--"; do
case $1 in
-h|--help)
usage
exit 0
;;
-o|--output)
shift
UPEX4CT_outputfile="$1"
;;
-n|--nobackup)
NOBACKUP=1
;;
-r|--run)
DONOTRUN='false'
;;
esac
shift
done
shift
# No non-option arguments allowed.
if [ "$#" -ne 0 ]; then
echo "No non option arguments ($@) allowed" >&2
usage >&2
exit 1
fi
# run-parts emulation, stolen from Branden's /etc/X11/Xsession
# Addition: Use file.rul instead if file if it exists.
run_parts () {
# reset LC_COLLATE
unset LANG LC_COLLATE LC_ALL
if [ -z "$1" ]; then
errormessage "$0: internal run_parts called without an argument"
fi
if [ ! -d "$1" ]; then
errormessage "$0: internal run_parts called, but $1 does not exist or is not a directory."
fi
for F in $(ls $1 | grep -v /.svn); do
if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then
if [ -f "$1/$F" ] ; then
if [ -f "$1/${F}.rul" ] ; then
echo "$1/${F}.rul"
else
echo "$1/$F"
fi
fi
fi
done;
}
# also from Branden
errormessage () {
# pretty-print messages of arbitrary length (no trailing newline)
echo "$*" | fold -s -w ${COLUMNS:-80} >&2;
}
cat_parts() {
if [ -z "$1" ]; then
errormessage "$0: internal cat_parts called without an argument"
fi
if [ ! -d "$1" ]; then
errormessage "$0: internal cat_parts called, but $1 does not exist or is not a directory."
fi
for file in $(run_parts $1); do
echo "#####################################################"
echo "### $file"
echo "#####################################################"
cat $file
echo "#####################################################"
echo "### end $file"
echo "#####################################################"
done
}
if [ "$DONOTRUN" = "true" ]; then
errormessage "This program overwrites conffiles. Do not run unless you have consulted the manpage." >&2
echo "Terminating..." >&2
exit 1
fi
if [ -e "${UPEX4CT_outputfile}" ] && [ -z "$NOBACKUP" ]; then
if [ -e "${UPEX4CT_outputfile}.bak.$$" ]; then
echo >&2 "ERR: ${UPEX4CT_outputfile}.bak.$$ already exists, aborting"
exit 1
fi
fi
NEWTEMPLATE=$(tempfile -m644 -p ex4)
if [ -f "${UPEX4CT_outputfile}" ] ; then
chmod --reference="${UPEX4CT_outputfile}" "$NEWTEMPLATE"
fi
# generate .template. Ugly - better alternative?
SAVEWD="$(pwd)"
cd ${CONFDIR}/conf.d
for i in main acl router transport retry rewrite auth ; do
cat_parts $i
done > "$NEWTEMPLATE"
cd "$SAVEWD"
if [ -e "${UPEX4CT_outputfile}" ] && [ -z "$NOBACKUP" ] ; then
mv "${UPEX4CT_outputfile}" \
"${UPEX4CT_outputfile}.bak.$$"
fi
mv "$NEWTEMPLATE" "${UPEX4CT_outputfile}"
|