#!/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 '/^ 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 "\" 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)"