2 # update-exim4defaults(8): manage entries in /etc/default/exim4
5 if [ -n "$EX4DEBUG" ]; then
6 echo "now debugging $0 $@"
13 defaultfile
=/etc
/default
/exim4
19 if [ -r ${defaultfile} ]; then
24 # initialize variables
25 EX4DEF_QUEUERUNNER
="${QUEUERUNNER}"
26 EX4DEF_QUEUEINTERVAL
="${QUEUEINTERVAL}"
27 EX4DEF_COMMONOPTIONS
="${COMMONOPTIONS}"
28 EX4DEF_QUEUERUNNEROPTIONS
="${QUEUERUNNEROPTIONS}"
29 EX4DEF_QFLAGS
="${QFLAGS}"
30 EX4DEF_SMTPLISTENEROPTIONS
="${SMTPLISTENEROPTIONS}"
32 EX4DEF_FLAGOPTIONS
=false
33 EX4DEF_FLAGREMOVE
=false
37 echo "update-exim4defaults: manage entries in /etc/default/exim4"
38 echo " usage: update-exim4defaults [[--queuerunner combined|separate|queueonly|ppp|no|nodaemon]"
39 echo " [--qflags flags ] [--queuetime time] [--commonoptions options]"
40 echo " [--queuerunneroptions options] [--smtplisteneroptions options]]"
41 echo " [--remove-common options] [--remove-queue options]"
42 echo " [--remove-smtp options]"
43 echo " [--force|-f] [--help|-h]"
48 # used for initialzing and with --force.
50 EX4DEF_TMP
="$(tempfile -m 600 -p ex4)"
51 cat << EOF > "${EX4DEF_TMP}"
53 EX4DEF_VERSION='${EX4DEF_VERSION}'
55 # 'combined' - one daemon running queue and listening on SMTP port
56 # 'no' - no daemon running the queue
57 # 'separate' - two separate daemons
58 # 'ppp' - only run queue with /etc/ppp/ip-up.d/exim4.
59 # 'nodaemon' - no daemon is started at all.
60 # 'queueonly' - only a queue running daemon is started, no SMTP listener.
61 # setting this to 'no' will also disable queueruns from /etc/ppp/ip-up.d/exim4
62 QUEUERUNNER='${EX4DEF_QUEUERUNNER}'
63 # how often should we run the queue
64 QUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}'
65 # options common to quez-runner and listening daemon
66 COMMONOPTIONS='${EX4DEF_COMMONOPTIONS}'
67 # more options for the daemon/process running the queue (applies to the one
68 # started in /etc/ppp/ip-up.d/exim4, too.
69 QUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}'
70 # special flags given to exim directly after the -q. See exim(8)
71 QFLAGS='${EX4DEF_QFLAGS}'
72 # Options for the SMTP listener daemon. By default, it is listening on
73 # port 25 only. To listen on more ports, it is recommended to use
74 # -oX 25:587:10025 -oP /run/exim4/exim.pid
75 SMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}'
77 cat "${EX4DEF_TMP}" > "${defaultfile}"
82 TEMP
=$
(getopt
-n update-exim4defaults \
83 -l qflags
:,queuerunner
:,queuetime
:,commonoptions
:,queuerunneroptions
:,smtplisteneroptions
:,remove-common
:,remove-queue
:,remove-smtp
:,force
,help,init
-- \
86 if test "$?" != 0; then
87 echo "Terminating..." >&2
92 while test "$1" != "--"; do
107 EX4DEF_QUEUERUNNER
="$1"
108 if ! expr match
"${EX4DEF_QUEUERUNNER}" '\(ppp\|no\|combined\|nodaemon\|queueonly\|separate\)$' >/dev
/null
; then
109 echo "invalid argument ${EX4DEF_QUEUERUNNER} for --queuerunner" 1>&2
115 EX4DEF_QUEUEINTERVAL
="$1"
119 EX4DEF_COMMONOPTIONS
="$1"
120 EX4DEF_FLAGOPTIONS
=true
122 --queuerunneroptions)
124 EX4DEF_QUEUERUNNEROPTIONS
="$1"
125 EX4DEF_FLAGOPTIONS
=true
127 --smtplisteneroptions)
129 EX4DEF_SMTPLISTENEROPTIONS
="$1"
130 EX4DEF_FLAGOPTIONS
=true
134 EX4DEF_REMOVECOMMON
="$1"
135 EX4DEF_FLAGREMOVE
=true
139 EX4DEF_REMOVEQUEUE
="$1"
140 EX4DEF_FLAGREMOVE
=true
144 EX4DEF_REMOVESMTP
="$1"
145 EX4DEF_FLAGREMOVE
=true
155 # No non-option arguments allowed.
156 if [ "$#" -ne 0 ]; then
157 echo "No non option arguments allowed" >&2
162 if [ "${EX4DEF_FLAGREMOVE}" = "true" ] && [ "${EX4DEF_FLAGOPTIONS}" = "true" ] ; then
163 echo "Cannot use --remove-something together with --somethingoptions" >&2
168 #if [ ! -r ${defaultfile} ]; then
169 # echo "Cannot read ${defaultfile}, terminating" >&2
173 if "${EX4DEF_INIT}" = "true" ] ; then
174 [ -e "${defaultfile}" ] && [ "${EX4DEF_FORCE}" != "true" ] && exit 0
175 # Reset to default values
176 EX4DEF_QUEUERUNNER
='combined'
177 EX4DEF_QUEUEINTERVAL
='30m'
178 EX4DEF_COMMONOPTIONS
=''
179 EX4DEF_QUEUERUNNEROPTIONS
=''
181 EX4DEF_SMTPLISTENEROPTIONS
=''
188 if [ "${EX4DEF_FLAGREMOVE}" = "true" ] ; then
189 EX4DEF_REMOVEERROR
="false"
190 if [ ! -z "${EX4DEF_REMOVECOMMON}" ] ; then
191 EX4DEF_COMMONOPTIONS
=$
(echo "${COMMONOPTIONS}" | \
192 sed -e "sÄ${EX4DEF_REMOVECOMMON}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//')
193 [ "${EX4DEF_COMMONOPTIONS}" = "${COMMONOPTIONS}" ] && \
194 EX4DEF_REMOVEERROR
="true"
196 if [ ! -z "${EX4DEF_REMOVEQUEUE}" ] ; then
197 EX4DEF_QUEUERUNNEROPTIONS
=$
(echo "${QUEUERUNNEROPTIONS}" | \
198 sed -e "sÄ${EX4DEF_REMOVEQUEUE}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//')
199 [ "${EX4DEF_QUEUERUNNEROPTIONS}" = "${QUEUERUNNEROPTIONS}" ] && \
200 EX4DEF_REMOVEERROR
="true"
202 if [ ! -z "${EX4DEF_REMOVESMTP}" ] ; then
203 EX4DEF_SMTPLISTENEROPTIONS
=$
(echo "${SMTPLISTENEROPTIONS}" | \
204 sed -e "sÄ${EX4DEF_REMOVESMTP}ÄÄ" -e "s/ / /g" -e 's/^ //' -e 's/ $//')
205 [ "${EX4DEF_SMTPLISTENEROPTIONS}" = "${SMTPLISTENEROPTIONS}"] && \
206 EX4DEF_REMOVEERROR
="true"
208 if [ "${EX4DEF_REMOVEERROR}" = "true" ] ; then
209 echo "$0: removing failed, no changes" >&2
213 EX4DEF_TMP
="$(tempfile -m 600 -p ex4)"
214 sed -e "sÄ^QFLAGS=.*ÄQFLAGS='${EX4DEF_QFLAGS}'Ä" \
215 -e "sÄ^QUEUERUNNER=.*ÄQUEUERUNNER='${EX4DEF_QUEUERUNNER}'Ä" \
216 -e "sÄ^QUEUEINTERVAL=.*ÄQUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}'Ä" \
217 -e "sÄ^COMMONOPTIONS=.*ÄCOMMONOPTIONS='${EX4DEF_COMMONOPTIONS}'Ä" \
218 -e "sÄ^QUEUERUNNEROPTIONS=.*ÄQUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}'Ä" \
219 -e "sÄ^SMTPLISTENEROPTIONS=.*ÄSMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}'Ä" \
220 < $defaultfile > "${EX4DEF_TMP}"
221 mv "${EX4DEF_TMP}" $defaultfile
222 rm -f "${EX4DEF_TMP}"
226 if [ "${EX4DEF_FORCE}" = "true" ] ; then
233 if [ "${QUEUERUNNER}" != "${EX4DEF_QUEUERUNNER}" ]; then
234 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+1))
235 # switching the QUEUERUNNER modus is always allowed
236 #[ -z "${QUEUERUNNER}" ] || EX4DEF_NOTALLOWED=$((${EX4DEF_NOTALLOWED}+1))
238 if [ "${QUEUEINTERVAL}" != "${EX4DEF_QUEUEINTERVAL}" ] ; then
239 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+2))
240 [ -z "${QUEUEINTERVAL}" ] || \
241 EX4DEF_NOTALLOWED
=$
((${EX4DEF_NOTALLOWED}+2))
243 if [ "${COMMONOPTIONS}" != "${EX4DEF_COMMONOPTIONS}" ] ; then
244 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+4))
245 [ -z "${COMMONOPTIONS}" ] || \
246 EX4DEF_NOTALLOWED
=$
((${EX4DEF_NOTALLOWED}+4))
248 if [ "${QUEUERUNNEROPTIONS}" != "${EX4DEF_QUEUERUNNEROPTIONS}" ] ; then
249 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+8))
250 [ -z "${QUEUERUNNEROPTIONS}" ] || \
251 EX4DEF_NOTALLOWED
=$
((${EX4DEF_NOTALLOWED}+8))
253 if [ "${SMTPLISTENEROPTIONS}" != "${EX4DEF_SMTPLISTENEROPTIONS}" ] ; then
254 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+16))
255 [ -z "${SMTPLISTENEROPTIONS}" ] || \
256 EX4DEF_NOTALLOWED
=$
((${EX4DEF_NOTALLOWED}+16))
258 if [ "${QFLAGS}" != "${EX4DEF_QFLAGS}" ] ; then
259 EX4DEF_DOANYTHING
=$
((${EX4DEF_DOANYTHING}+32))
260 [ -z "${QFLAGS}" ] || \
261 EX4DEF_NOTALLOWED
=$
((${EX4DEF_NOTALLOWED}+32))
264 [ ${EX4DEF_DOANYTHING} -eq 0 ] && exit 0
265 if [ ${EX4DEF_NOTALLOWED} -ne 0 ] ; then
266 echo "setting(s) conflict with current one, terminating" >&2
267 exit ${EX4DEF_NOTALLOWED}
270 EX4DEF_TMP
="$(tempfile -m 600 -p ex4)"
271 sed -e "sÄ^QFLAGS=.*ÄQFLAGS='${EX4DEF_QFLAGS}'Ä" \
272 -e "sÄ^QUEUERUNNER=.*ÄQUEUERUNNER='${EX4DEF_QUEUERUNNER}'Ä" \
273 -e "sÄ^QUEUEINTERVAL=.*ÄQUEUEINTERVAL='${EX4DEF_QUEUEINTERVAL}'Ä" \
274 -e "sÄ^COMMONOPTIONS=.*ÄCOMMONOPTIONS='${EX4DEF_COMMONOPTIONS}'Ä" \
275 -e "sÄ^QUEUERUNNEROPTIONS=.*ÄQUEUERUNNEROPTIONS='${EX4DEF_QUEUERUNNEROPTIONS}'Ä" \
276 -e "sÄ^SMTPLISTENEROPTIONS=.*ÄSMTPLISTENEROPTIONS='${EX4DEF_SMTPLISTENEROPTIONS}'Ä" \
277 < $defaultfile > "${EX4DEF_TMP}"
278 mv "${EX4DEF_TMP}" $defaultfile
279 rm -f "${EX4DEF_TMP}"