summaryrefslogtreecommitdiffstats
path: root/debian/exim4-config.config
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/exim4-config.config812
1 files changed, 812 insertions, 0 deletions
diff --git a/debian/exim4-config.config b/debian/exim4-config.config
new file mode 100644
index 0000000..4372a09
--- /dev/null
+++ b/debian/exim4-config.config
@@ -0,0 +1,812 @@
+#!/bin/sh
+set -e
+
+alias stripwhitespace="sed -e 's/^[[:blank:]]*//' -e 's/[[:blank:]]*$//'"
+
+installeddebconfversion="$(dpkg -s debconf | sed -ne '/^Version/s/^Version: //p')"
+if [ "reconfigure" != "$1" ] && \
+ dpkg --compare-versions "${installeddebconfversion}" "le" "1.4" && \
+ [ "$exim4postinstisrunning" != "true" ] ; then
+ echo "exim4-config.postinst: [WARN] Installed debconf version is broken. Aborting preconfigure." 1>&2
+ exit 0
+fi
+
+. /usr/share/debconf/confmodule
+
+if [ -n "$EX4DEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+UE4CC="/etc/exim4/update-exim4.conf.conf"
+
+convert_to_long ()
+{
+ case "$1" in
+ internet)
+ echo -n "internet site; mail is sent and received directly using SMTP"
+ ;;
+ smarthost)
+ echo -n "mail sent by smarthost; received via SMTP or fetchmail"
+ ;;
+ satellite)
+ echo -n "mail sent by smarthost; no local mail"
+ ;;
+ local)
+ echo -n "local delivery only; not on a network"
+ ;;
+ none)
+ echo -n "no configuration at this time"
+ ;;
+ esac
+}
+convert_to_short ()
+{
+ case "$1" in
+ "internet site; mail is sent and received directly using SMTP")
+ echo -n "internet"
+ ;;
+ "mail sent by smarthost; received via SMTP or fetchmail")
+ echo -n "smarthost"
+ ;;
+ "mail sent by smarthost; no local mail")
+ echo -n "satellite"
+ ;;
+ "local delivery only; not on a network")
+ echo -n "local"
+ ;;
+ "no configuration at this time")
+ echo -n "none"
+ ;;
+ esac
+}
+
+convert_transport_to_long ()
+{
+ case "$1" in
+ maildir_home)
+ echo -n "Maildir format in home directory"
+ ;;
+ mail_spool)
+ echo -n "mbox format in /var/mail/"
+ ;;
+ *)
+ echo -n "locally customized"
+ ;;
+ esac
+}
+convert_transport_to_short ()
+{
+ case "$1" in
+ "Maildir format in home directory")
+ echo -n "maildir_home"
+ ;;
+ "mbox format in /var/mail/")
+ echo -n "mail_spool"
+ ;;
+ *)
+ echo -n "custom"
+ ;;
+ esac
+}
+
+# store environment variables in debconf db.
+storevar2db() {
+ dc_eximconfig_configtype="$(printf '%s\n' "${dc_eximconfig_configtype}" | stripwhitespace)"
+ dc_local_interfaces="$(printf '%s\n' "${dc_local_interfaces}" | stripwhitespace)"
+ dc_other_hostnames="$(printf '%s\n' "${dc_other_hostnames}" | stripwhitespace)"
+ dc_readhost="$(printf '%s\n' "${dc_readhost}" | stripwhitespace)"
+ dc_relay_domains="$(printf '%s\n' "${dc_relay_domains}" | stripwhitespace)"
+ dc_relay_nets="$(printf '%s\n' "${dc_relay_nets}" | stripwhitespace)"
+ dc_smarthost="$(printf '%s\n' "${dc_smarthost}" | stripwhitespace)"
+ dc_minimaldns="$(printf '%s\n' "${dc_minimaldns}" | stripwhitespace)"
+ dc_use_split_config="$(printf '%s\n' "${dc_use_split_config}" | stripwhitespace)"
+ dc_hide_mailname="$(printf '%s\n' "${dc_hide_mailname}" | stripwhitespace)"
+ # store externally changed values to debconf.db
+ db_set exim4/dc_eximconfig_configtype \
+ "$(convert_to_long ${dc_eximconfig_configtype})"
+ db_set exim4/dc_local_interfaces "${dc_local_interfaces}"
+ db_set exim4/dc_other_hostnames "${dc_other_hostnames}"
+ db_set exim4/dc_readhost "${dc_readhost}"
+ db_set exim4/dc_relay_domains "${dc_relay_domains}"
+ db_set exim4/dc_relay_nets "${dc_relay_nets}"
+ db_set exim4/dc_smarthost "${dc_smarthost}"
+ if [ "${dc_minimaldns}" != "" ]; then
+ db_set exim4/dc_minimaldns "${dc_minimaldns}"
+ fi
+ db_set exim4/use_split_config "${dc_use_split_config}"
+ db_set exim4/hide_mailname "${dc_hide_mailname}"
+ # do not store "locally customized" in debconf db, otherwise simply
+ # removing the custom dc_localdelivery from ue4cc won't work.
+ if [ "${dc_localdelivery}" != "" ] &&
+ [ "$(convert_transport_to_long ${dc_localdelivery})" != "locally customized" ] ; then
+ db_set exim4/dc_localdelivery \
+ "$(convert_transport_to_long ${dc_localdelivery})"
+ fi
+ db_fset "exim4/dc_other_hostnames" mailname "${dc_mailname_in_oh:-false}"
+}
+
+# ipv6: replace double colons in colon-separated host lists with umlaut-o
+# replace ':' with ' : ', add leading and ending whitespace.
+# return empty string if custom delimiter was used:
+ # local_domains = <; 172.16.0.0/12; 3ffe:ffff:836f::/48
+# e.g: 'localhost : 172.16.0.1 :3ffe::ffff::836f::::: foo.org'
+# ===> ' localhost : 172.16.0.1 : 3ffeöffffö836föö : foo.org '
+alias coloncolon2oe="env -u LC_ALL LC_CTYPE=C sed -e 's/[[:blank:]]*//g' -e '/^</d' -e 's/:::::/:öö/g' -e 's/::::/öö/g' -e 's/:::/:ö/g' -e 's/::/ö/g' -e 's/:/ : /g' -e 's/^/ /' -e 's/$/ /'"
+
+# try to parse exim3 configuration file - works only if it was generated
+# with eximconfig.
+parseexim3() {
+ dc_mailname="$(head -n 1 /etc/mailname | stripwhitespace)" || true
+
+ # get the .... entries from
+ # host_accept_relay = 127.0.0.1 : ::::1 : ......
+ # if they exist, ie. parse list, and remove "127.0.0.1", "::::1"
+ # and "localhost" from it.
+ #
+ dc_relay_nets="$(cat $1 | grep -h '^host_accept_relay[[:blank:]]*=' | sed -e 's/^host_accept_relay[[:blank:]]*=//' | coloncolon2oe | env -u LC_ALL LC_CTYPE=C sed -e 's/ 127\.0\.0\\.1 //g' -e 's/ localhost //g' -e 's/ öö1//g' -e 's/[[:blank:]]*//g' -e 's/::/:/g' -e 's/^://' -e 's/:$//' -e 's/ö/::/g')"
+
+ # 'local_domains = $colonhostnames', including mailname and "localhost"
+ #
+ dc_other_hostnames="$(cat $1 | grep -h '^local_domains[[:blank:]]*=' | sed -e 's/^local_domains[[:blank:]]*=//' | coloncolon2oe | env -u LC_ALL LC_CTYPE=C sed -e 's/ localhost //g' -e "s/ ${dc_mailname} //g" -e 's/[[:blank:]]*//g' -e 's/::/:/g' -e 's/^://' -e 's/:$//' -e 's/ö/::/g')"
+
+ # relay_domains = some.domain
+ dc_relay_domains="$(cat $1 | grep -h '^relay_domains = ' | sed -e 's/^relay_domains[[:blank:]]*=[[:blank:]]*//' -e 's/[[:blank:]]*$//')"
+
+ # lookuphost router exist ---> dc_eximconfig_configtype=internet
+ #
+ if cat $1 | grep -h -A2 '^lookuphost:' | \
+ grep -h -A1 '[[:blank:]]*driver = lookuphost' | \
+ grep -h -q '[[:blank:]]*transport = remote_smtp' ; then
+ dc_eximconfig_configtype=internet
+ else
+ # smart:-director exists ---> dc_eximconfig_configtype=satellite
+ #
+ # Later we need the new_address directive to find dc_readhost.
+ # ' || true' is required for "set -e"
+ dc_readhost="$(cat $1 | grep -h -A2 '^smart:' | grep -h -A1 '^[[:blank:]]*driver = smartuser' | grep -h '^[[:blank:]]*new_address' || true)"
+
+ # smarthost router exists --> dc_eximconfig_configtype is satellite or smarthost
+ #
+ # we need the route_list directive to find dc_smarthost
+ # ' || true' is required for "set -e"
+ dc_smarthost="$(< $1 grep -A3 '^smarthost:' | grep -A2 '[[:blank:]]*driver = domainlist' | grep -A1 '^[[:blank:]]*transport = remote_smtp' | grep '^[[:blank:]]*route_list = ".*"' || true)"
+
+ if [ ! -z "${dc_readhost}" ] ; then
+ dc_eximconfig_configtype=satellite
+ elif [ ! -z "${dc_smarthost}" ] ; then
+ dc_eximconfig_configtype=smarthost
+ elif ! cat "$1" | grep -h -q '^remote_smtp:'; then
+ # dc_eximconfig_configtype=local has no remote_smtp transport.
+ dc_eximconfig_configtype=local
+ else
+ # handcrafted config. We probably misparsed, reset values
+ # and exit.
+ dc_eximconfig_configtype=''
+ dc_local_interfaces='notset'
+ dc_other_hostnames=''
+ dc_readhost=''
+ dc_relay_domains=''
+ dc_relay_nets=''
+ dc_smarthost=''
+ dc_hide_mailname=''
+ return 1
+ fi
+ fi
+
+ case ${dc_eximconfig_configtype} in
+ internet|local)
+ #paranoia
+ dc_readhost=''
+ dc_smarthost=''
+ dc_hide_mailname='false'
+ ;;
+ satellite)
+ # new_address = ${local_part}@$readhost
+ dc_readhost="$(printf '%s\n' "${dc_readhost}" | sed -e 's/^.*@//' -e 's/[[:blank:]]*$//')"
+ # route_list = "* $smtphost bydns_a"
+ dc_smarthost="$(printf '%s\n' "${dc_smarthost}" | \
+ sed -e 's/^ *route_list = "\* //' -e 's/ bydns_a"//' -e 's/[[:blank:]]*$//')"
+ dc_hide_mailname='true'
+ dc_relay_domains=''
+ ;;
+ smarthost)
+ # route_list = "* $smtphost bydns_a"
+ dc_smarthost="$(printf '%s\n' "${dc_smarthost}" | \
+ sed -e 's/^ *route_list = "\* //' -e 's/ bydns_a"//' -e 's/[[:blank:]]*$//')"
+ dc_hide_mailname='false'
+ dc_relay_domains=''
+ ;;
+ esac
+}
+
+##########
+mailname2otherhostnames() {
+ # u-ex4.conf no longer includes mailname in local domains,
+ # insert it once into other_hostnames.
+ # The debconf script might run twice, we need to store the result
+ # in a file to pass it to postinst..
+ [ -d /var/lib/exim4 ] || \
+ install -d -oroot -groot -m755 /var/lib/exim4
+ dc_mailname="$(head -n 1 /etc/mailname | stripwhitespace)" || true
+ if [ -z "${dc_other_hostnames}" ] ; then
+ dc_other_hostnames="${dc_mailname}"
+ else
+ dc_other_hostnames="$(printf '%s\n' "${dc_other_hostnames}" | stripwhitespace)":${dc_mailname}
+ fi
+ printf '%s\n' dc_other_hostnames="'""${dc_other_hostnames}""'" > \
+ /var/lib/exim4/addmailname2oh
+ db_fset "exim4/dc_other_hostnames" mailname true
+ dc_mailname_in_oh="true"
+}
+mailname2otherhostnamesdcloop() {
+# append mailname to other_hostnames, once. on fresh installations.
+ if [ "${dc_mailname_in_oh}" != "true" ] ;then
+ db_get exim4/mailname
+ dc_mailname="$(printf '%s\n' "$RET"| stripwhitespace)"
+ db_get "exim4/dc_other_hostnames"
+ dc_other_hostnames="$(printf '%s\n' "$RET"| stripwhitespace)"
+ if [ -z "${dc_other_hostnames}" ] ; then
+ dc_other_hostnames="${dc_mailname}"
+ else
+ dc_other_hostnames="${dc_other_hostnames}:${dc_mailname}"
+ fi
+ db_set exim4/dc_other_hostnames "${dc_other_hostnames}"
+ db_fset "exim4/dc_other_hostnames" mailname true
+ dc_mailname_in_oh="true"
+ fi
+}
+##########
+
+
+# set to dummy value, so we can differ between unset vs (seen or set outside debconf)
+dc_local_interfaces=notset
+
+db_settitle exim4/exim4-config-title
+db_get exim4/dc_eximconfig_configtype
+dc_eximconfig_configtype="$(convert_to_short "$RET")"
+db_get exim4/use_split_config
+dc_use_split_config="$RET"
+# Did we append mailname to other_hostnames yet?
+db_fget "exim4/dc_other_hostnames" mailname || true
+dc_mailname_in_oh="$RET"
+
+if [ -e $UE4CC ] ; then
+ . $UE4CC || true
+ # on upgrades _once_ add mailname to other_hostnames
+ if [ -n "$2" ] && [ "$1" = "configure" ] && \
+ [ "${dc_mailname_in_oh}" != "true" ] ; then
+ mailname2otherhostnames
+ fi
+ # set defaults using these values
+ storevar2db
+else
+ # If there are no debconf answers (running first time) and we are
+ # making a cross upgrade from exim3, try to parse its config file
+ # to seed debconf db.
+ if [ "${dc_eximconfig_configtype}" = "" ] && [ -r /etc/exim/exim.conf ] ; then
+ # parse old configfile
+ #
+ # first do unfolding of lines continued with backslash, by:
+ # 1. remove comment lines
+ # 2. remove blank lines
+ # 3. remove "\<optional space><newline><optional space>"
+ exim3confunfolded="$(mktemp)"
+ perl -e \
+ 'undef $/;
+ while (<>) {
+ s/^[[:space:]]*#[^\n]*\n//mg;
+ s/^\n//mg;
+ s/\\[[:space:]]*\n[[:space:]]*//g;
+ } continue {
+ print or die "blah";
+ }' < /etc/exim/exim.conf > "$exim3confunfolded"
+ if parseexim3 "$exim3confunfolded" ; then
+ # set defaults using these values
+ storevar2db
+ fi
+ rm -f "$exim3confunfolded"
+ fi
+fi
+
+## set up default values, we cannot do this in templates file because
+## config script is called two times before update-exim4.conf.conf exists.
+[ "${dc_eximconfig_configtype}" = "" ] && \
+ dc_eximconfig_configtype="local" && \
+ db_set exim4/dc_eximconfig_configtype "$(convert_to_long ${dc_eximconfig_configtype})"
+
+
+if [ -e /etc/mailname ] ; then
+ dc_mailname="$(head -n 1 /etc/mailname | stripwhitespace)" || true
+ # store values
+ db_set exim4/mailname "${dc_mailname}"
+else
+ db_get exim4/mailname
+ dc_mailname="$RET"
+fi
+
+#Set default mailname
+if [ "${dc_mailname}" = "" ] ; then
+ dc_mailname="$(hostname --fqdn 2>/dev/null)" || dc_mailname="$(hostname)" && \
+ dc_mailname="$(printf '%s\n' "${dc_mailname}" | stripwhitespace)" && \
+ db_set exim4/mailname "${dc_mailname}"
+fi
+fqdn="$(hostname --fqdn 2>/dev/null)" || fqdn=''
+db_subst exim4/dc_other_hostnames fqdn "$fqdn"
+
+# initialize env-vars from debconf_db, if they haven't been set yet either by
+# parseexim3() or by sourcing $UE4CC
+if [ "${dc_readhost}" = "" ] ; then
+ db_get exim4/dc_readhost
+ dc_readhost="$RET"
+fi
+if [ "${dc_smarthost}" = "" ] ; then
+ db_get exim4/dc_smarthost
+ dc_smarthost="$RET"
+fi
+# Tricky! An empty value for this option is significant, therefore both
+# envvar and debconf-value default to "nonset" instead of "", the
+# following line will only change then envvars value if the config-script
+# runs the second time without existing $UE4CC or
+# if the debconf-db has been preseeded by other means.
+if [ "${dc_local_interfaces}" = "notset" ]; then
+ db_get exim4/dc_local_interfaces
+ dc_local_interfaces="$RET"
+fi
+if [ "${dc_minimaldns}" = "" ] ; then
+ db_get exim4/dc_minimaldns
+ dc_minimaldns="$RET"
+fi
+
+if [ "${dc_use_split_config}" = "" ] ; then
+ if [ "${2}" = "" ] ; then
+ # fresh installation
+ db_set exim4/use_split_config false
+ dc_use_split_config="false"
+ else
+ db_set exim4/use_split_config true
+ dc_use_split_config="true"
+ fi
+fi
+
+if [ "${dc_localdelivery}" = "" ] ; then
+ db_get exim4/dc_localdelivery
+ dc_localdelivery="$(convert_transport_to_short "$RET")"
+elif [ "$(convert_transport_to_long ${dc_localdelivery})" = "locally customized" ] ; then
+ dc_localdelivery="custom"
+fi
+
+db_version 2.0
+
+db_capb backup
+# initial state
+STATE=1
+# state to continue for all values
+CONTSTATE=50
+# last valid state
+STATELIMIT=51
+EX4QUESTION=""
+while [ "$STATE" != 0 ] && [ "$STATE" -le "$STATELIMIT" ]; do
+ case "$STATE" in
+ 1)
+ # this is now empty
+ EX4QUESTION=""
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ ;;
+
+ 2)
+ EX4QUESTION="exim4/dc_eximconfig_configtype"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ CONFIGTYPEQUESTION=2
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 3)
+ EX4QUESTION=""
+ db_get exim4/dc_eximconfig_configtype
+ dc_eximconfig_configtype="$(convert_to_short "$RET")"
+ BACKSTATE=$(($STATE - 1))
+ case "${dc_eximconfig_configtype}" in
+ none)
+ # dont ask more questions
+ #FORWSTATE=$(($STATELIMIT + 1))
+ FORWSTATE=4
+ ;;
+ internet)
+ FORWSTATE=8
+ ;;
+ smarthost)
+ FORWSTATE=20
+ ;;
+ satellite)
+ FORWSTATE=30
+ ;;
+ local)
+ FORWSTATE=40
+ ;;
+ *)
+ # Should not happen. Break loop
+ FORWSTATE=$(($STATELIMIT + 1))
+ ;;
+ esac
+ ;;
+
+ 4)
+ # show additional info for type=none
+ EX4QUESTION="exim4/no_config"
+ BACKSTATE=$CONFIGTYPEQUESTION
+ FORWSTATE=$(($STATE + 1))
+ # same priority as configtype because of danger of loop?
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 5)
+ EX4QUESTION=""
+ BACKSTATE=$CONFIGTYPEQUESTION
+ db_get exim4/no_config || true
+ if [ "$RET" = "false" ]; then
+ FORWSTATE=$CONFIGTYPEQUESTION
+ else
+ #break loop
+ FORWSTATE=$CONTSTATE
+ fi
+ ;;
+
+ 8)
+ # internet site
+ EX4QUESTION="exim4/mailname"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$CONFIGTYPEQUESTION
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 9)
+ EX4QUESTION="exim4/dc_local_interfaces"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ if [ "${dc_local_interfaces}" = "notset" ] ; then
+ dc_local_interfaces=''
+ db_set exim4/dc_local_interfaces ''
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 10)
+ EX4QUESTION="exim4/dc_other_hostnames"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ mailname2otherhostnamesdcloop
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 11)
+ EX4QUESTION="exim4/dc_relay_domains"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 12)
+ EX4QUESTION="exim4/dc_relay_nets"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 13)
+ EX4QUESTION="exim4/dc_minimaldns"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_input low "$EX4QUESTION" || true
+ ;;
+ 14)
+ EX4QUESTION="exim4/dc_localdelivery"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$CONTSTATE
+ # do not ask question if user has set a different transport
+ # than maildir or mailspool
+ if [ "${dc_localdelivery}" != "custom" ] ; then
+ db_input low "$EX4QUESTION" || true
+ fi
+ ;;
+
+
+ 20)
+ # internet site with smarthost
+ EX4QUESTION="exim4/mailname"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$CONFIGTYPEQUESTION
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 21)
+ EX4QUESTION="exim4/dc_local_interfaces"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ if [ "${dc_local_interfaces}" = "notset" ] ; then
+ dc_local_interfaces='127.0.0.1 ; ::1'
+ db_set exim4/dc_local_interfaces '127.0.0.1 ; ::1'
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 22)
+ EX4QUESTION="exim4/dc_other_hostnames"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ mailname2otherhostnamesdcloop
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 23)
+ EX4QUESTION="exim4/dc_relay_domains"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_get "$EX4QUESTION" || true
+ dc_relay_domains="$RET"
+ # Only ask for relay domains if non-empty, since this only
+ # really works for internet site hosts. (See comment near
+ # smarthost router definition in configuration file.)
+ if [ "${dc_relay_domains}" != "" ] ; then
+ db_input medium "$EX4QUESTION" || true
+ fi
+ ;;
+ 24)
+ EX4QUESTION="exim4/dc_relay_nets"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 25)
+ EX4QUESTION="exim4/dc_smarthost"
+ if [ "${dc_smarthost}" = "" ] ; then
+ # default to mail.mailname
+ dc_smarthost="mail.${dc_mailname}"
+ db_set exim4/dc_smarthost "${dc_smarthost}"
+ fi
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 26)
+ EX4QUESTION="exim4/hide_mailname"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_get exim4/mailname || true
+ dc_mailname="$RET"
+ db_get exim4/dc_other_hostnames || true
+ dc_other_hostnames="$RET"
+ db_subst exim4/hide_mailname mailname ${dc_mailname}
+ db_subst exim4/hide_mailname dc_other_hostnames \
+ ${dc_other_hostnames}
+ db_get $EX4QUESTION || true
+ dc_hide_mailname="$RET"
+ if [ "${dc_hide_mailname}" = "" ] ; then
+ dc_hide_mailname='false'
+ db_set exim4/hide_mailname "${dc_hide_mailname}"
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 27)
+ EX4QUESTION="exim4/dc_readhost"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_get exim4/hide_mailname
+ dc_hide_mailname="$RET"
+ if [ "${dc_hide_mailname}" = "true" ];then
+ if [ "${dc_readhost}" = "" ] ; then
+ # default to mailname
+ dc_readhost="${dc_mailname}"
+ db_set exim4/dc_readhost "${dc_readhost}"
+ fi
+ db_input medium "$EX4QUESTION" || true
+ else
+ EX4QUESTION=""
+ fi
+ ;;
+ 28)
+ EX4QUESTION="exim4/dc_minimaldns"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_input low "$EX4QUESTION" || true
+ ;;
+ 29)
+ EX4QUESTION="exim4/dc_localdelivery"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$CONTSTATE
+ # do not ask question if user has set a different transport
+ # than maildir or mailspool
+ if [ "${dc_localdelivery}" != "custom" ] ; then
+ db_input low "$EX4QUESTION" || true
+ fi
+ ;;
+
+ 30)
+ # satellite
+ EX4QUESTION="exim4/mailname"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$CONFIGTYPEQUESTION
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 31)
+ EX4QUESTION="exim4/dc_local_interfaces"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ if [ "${dc_local_interfaces}" = "notset" ] ; then
+ dc_local_interfaces='127.0.0.1 ; ::1'
+ db_set exim4/dc_local_interfaces '127.0.0.1 ; ::1'
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 32)
+ EX4QUESTION="exim4/dc_other_hostnames"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ mailname2otherhostnamesdcloop
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 33)
+ EX4QUESTION="exim4/dc_readhost"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ # satellite requires a mail-hub, no use asking whether there
+ # is one.
+ db_set exim4/hide_mailname "true"
+ dc_hide_mailname="true"
+ if [ "${dc_readhost}" = "" ] ; then
+ # default to domain of mailname
+ dc_readhost="${dc_mailname}"
+ db_set exim4/dc_readhost "${dc_readhost}"
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 34)
+ EX4QUESTION="exim4/dc_smarthost"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_get exim4/dc_readhost
+ dc_readhost="$RET"
+ if [ "${dc_smarthost}" = "" ] ; then
+ # default to read_host
+ dc_smarthost="${dc_readhost}"
+ db_set exim4/dc_smarthost "${dc_smarthost}"
+ fi
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ 35)
+ EX4QUESTION="exim4/dc_relay_domains"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_get "$EX4QUESTION" || true
+ dc_relay_domains="$RET"
+ # Only ask for relay domains if non-empty, since this only
+ # really works for internet site hosts. (See comment near
+ # smarthost router definition in configuration file.)
+ if [ "${dc_relay_domains}" != "" ] ; then
+ db_input medium "$EX4QUESTION" || true
+ fi
+ ;;
+ 36)
+ EX4QUESTION=""
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ # satellite-system! Only ask for relay_nets if they are
+ # nonempty - we cannot distinguish whether they were set outside debconf
+ # or whether the user switched dc_eximconfig_configtype
+ db_get exim4/dc_relay_nets || true
+ dc_relay_nets="$RET"
+ if [ "${dc_relay_nets}" != "" ] ; then
+ db_input medium exim4/dc_relay_nets || true
+ FORWSTATE=$(($STATE + 1))
+ fi
+ ;;
+ 37)
+ EX4QUESTION="exim4/dc_minimaldns"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_input low "$EX4QUESTION" || true
+ ;;
+ 38)
+ EX4QUESTION="exim4/dc_localdelivery"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$CONTSTATE
+ # Only ask question if it is set to a value that is both supported
+ # by debconf (maildir_home and mail_spool) and is not set to the
+ # default value (maildir_home) since this is only used for
+ # real-*.
+ if [ "${dc_localdelivery}" = "maildir_home" ] ; then
+ db_input low "$EX4QUESTION" || true
+ fi
+ ;;
+
+ 40)
+ # local mail only
+ EX4QUESTION="exim4/mailname"
+ db_input medium "$EX4QUESTION" || true
+ BACKSTATE=$CONFIGTYPEQUESTION
+ FORWSTATE=$(($STATE + 1))
+ ;;
+ 41)
+ EX4QUESTION=""
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ if [ "${dc_local_interfaces}" = "notset" ] ; then
+ dc_local_interfaces='127.0.0.1 ; ::1'
+ db_set exim4/dc_local_interfaces '127.0.0.1 ; ::1'
+ fi
+ db_input medium exim4/dc_local_interfaces || true
+ ;;
+
+ 42)
+ EX4QUESTION="exim4/dc_other_hostnames"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ mailname2otherhostnamesdcloop
+ db_input medium "$EX4QUESTION" || true
+ ;;
+
+ 43)
+ EX4QUESTION=""
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ # local mail only -system! Only ask for relay_nets/relay_domains if they are
+ # nonempty - we cannot distinguish whether they were set outside debconf
+ # or whether the user switched dc_eximconfig_configtype
+ db_get exim4/dc_relay_nets || true
+ dc_relay_nets="$RET"
+ db_get exim4/dc_relay_domains || true
+ dc_relay_domains="$RET"
+
+ if [ "${dc_relay_nets}" != "" ] ; then
+ db_input medium exim4/dc_relay_nets || true
+ fi
+ if [ "${dc_relay_domains}" != "" ] ; then
+ db_input medium exim4/dc_relay_domains || true
+ fi
+ ;;
+ 44)
+ EX4QUESTION="exim4/dc_minimaldns"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$(($STATE + 1))
+ db_input low "$EX4QUESTION" || true
+ ;;
+ 45)
+ EX4QUESTION="exim4/dc_localdelivery"
+ BACKSTATE=$(($STATE - 1))
+ FORWSTATE=$CONTSTATE
+ # do not ask question if user has set a different transport
+ # than maildir or mailspool
+ if [ "${dc_localdelivery}" != "custom" ] ; then
+ db_input low "$EX4QUESTION" || true
+ fi
+ ;;
+ 50)
+ EX4QUESTION="exim4/use_split_config"
+ BACKSTATE=$PREVSTATE
+ FORWSTATE=$(($STATELIMIT + 1))
+ db_input medium "$EX4QUESTION" || true
+ ;;
+ esac
+ PREVSTATE=$STATE
+ if db_go; then
+ STATE=$FORWSTATE
+ else
+ STATE=$BACKSTATE
+ fi
+done
+if [ "$STATE" = 0 ] ; then
+ # User pressed back on the first question, go back to previous
+ # package if run by base-config 2.0. #222773.
+ exit 30
+fi
+
+# make sure dc_local_interfaces is set to sane value
+if [ "${dc_local_interfaces}" = "notset" ] ; then
+ dc_local_interfaces=''
+ db_set exim4/dc_local_interfaces ''
+fi
+
+if [ ! -e /etc/aliases ] || \
+ ! grep -q '^root:[[:space:]]*[[:alnum:]]' /etc/aliases ; then
+ db_get exim4/dc_postmaster
+ if [ -z "$RET" ] && db_get passwd/username; then
+ db_set exim4/dc_postmaster "${RET}"
+ fi
+ db_input medium exim4/dc_postmaster || true
+ db_go || true
+fi
+
+db_get exim4/dc_postmaster || true
+dc_postmaster="$(printf '%s\n' "$RET" | stripwhitespace)"