Commit | Line | Data |
---|---|---|
de45f55a AM |
1 | #!/bin/sh |
2 | set -e | |
3 | ||
4 | alias stripwhitespace="sed -e 's/^[[:blank:]]*//' -e 's/[[:blank:]]*$//'" | |
5 | ||
6 | installeddebconfversion="$(dpkg -s debconf | sed -ne '/^Version/s/^Version: //p')" | |
7 | if [ "reconfigure" != "$1" ] && \ | |
8 | dpkg --compare-versions "${installeddebconfversion}" "le" "1.4" && \ | |
9 | [ "$exim4postinstisrunning" != "true" ] ; then | |
10 | echo "exim4-config.postinst: [WARN] Installed debconf version is broken. Aborting preconfigure." 1>&2 | |
11 | exit 0 | |
12 | fi | |
13 | ||
14 | . /usr/share/debconf/confmodule | |
15 | ||
16 | if [ -n "$EX4DEBUG" ]; then | |
17 | echo "now debugging $0 $@" | |
18 | set -x | |
19 | fi | |
20 | ||
21 | UE4CC="/etc/exim4/update-exim4.conf.conf" | |
22 | ||
23 | convert_to_long () | |
24 | { | |
25 | case "$1" in | |
26 | internet) | |
27 | echo -n "internet site; mail is sent and received directly using SMTP" | |
28 | ;; | |
29 | smarthost) | |
30 | echo -n "mail sent by smarthost; received via SMTP or fetchmail" | |
31 | ;; | |
32 | satellite) | |
33 | echo -n "mail sent by smarthost; no local mail" | |
34 | ;; | |
35 | local) | |
36 | echo -n "local delivery only; not on a network" | |
37 | ;; | |
38 | none) | |
39 | echo -n "no configuration at this time" | |
40 | ;; | |
41 | esac | |
42 | } | |
43 | convert_to_short () | |
44 | { | |
45 | case "$1" in | |
46 | "internet site; mail is sent and received directly using SMTP") | |
47 | echo -n "internet" | |
48 | ;; | |
49 | "mail sent by smarthost; received via SMTP or fetchmail") | |
50 | echo -n "smarthost" | |
51 | ;; | |
52 | "mail sent by smarthost; no local mail") | |
53 | echo -n "satellite" | |
54 | ;; | |
55 | "local delivery only; not on a network") | |
56 | echo -n "local" | |
57 | ;; | |
58 | "no configuration at this time") | |
59 | echo -n "none" | |
60 | ;; | |
61 | esac | |
62 | } | |
63 | ||
64 | convert_transport_to_long () | |
65 | { | |
66 | case "$1" in | |
67 | maildir_home) | |
68 | echo -n "Maildir format in home directory" | |
69 | ;; | |
70 | mail_spool) | |
71 | echo -n "mbox format in /var/mail/" | |
72 | ;; | |
73 | *) | |
74 | echo -n "locally customized" | |
75 | ;; | |
76 | esac | |
77 | } | |
78 | convert_transport_to_short () | |
79 | { | |
80 | case "$1" in | |
81 | "Maildir format in home directory") | |
82 | echo -n "maildir_home" | |
83 | ;; | |
84 | "mbox format in /var/mail/") | |
85 | echo -n "mail_spool" | |
86 | ;; | |
87 | *) | |
88 | echo -n "custom" | |
89 | ;; | |
90 | esac | |
91 | } | |
92 | ||
93 | # store environment variables in debconf db. | |
94 | storevar2db() { | |
95 | dc_eximconfig_configtype="$(printf '%s\n' "${dc_eximconfig_configtype}" | stripwhitespace)" | |
96 | dc_local_interfaces="$(printf '%s\n' "${dc_local_interfaces}" | stripwhitespace)" | |
97 | dc_other_hostnames="$(printf '%s\n' "${dc_other_hostnames}" | stripwhitespace)" | |
98 | dc_readhost="$(printf '%s\n' "${dc_readhost}" | stripwhitespace)" | |
99 | dc_relay_domains="$(printf '%s\n' "${dc_relay_domains}" | stripwhitespace)" | |
100 | dc_relay_nets="$(printf '%s\n' "${dc_relay_nets}" | stripwhitespace)" | |
101 | dc_smarthost="$(printf '%s\n' "${dc_smarthost}" | stripwhitespace)" | |
102 | dc_minimaldns="$(printf '%s\n' "${dc_minimaldns}" | stripwhitespace)" | |
103 | dc_use_split_config="$(printf '%s\n' "${dc_use_split_config}" | stripwhitespace)" | |
104 | dc_hide_mailname="$(printf '%s\n' "${dc_hide_mailname}" | stripwhitespace)" | |
105 | # store externally changed values to debconf.db | |
106 | db_set exim4/dc_eximconfig_configtype \ | |
107 | "$(convert_to_long ${dc_eximconfig_configtype})" | |
108 | db_set exim4/dc_local_interfaces "${dc_local_interfaces}" | |
109 | db_set exim4/dc_other_hostnames "${dc_other_hostnames}" | |
110 | db_set exim4/dc_readhost "${dc_readhost}" | |
111 | db_set exim4/dc_relay_domains "${dc_relay_domains}" | |
112 | db_set exim4/dc_relay_nets "${dc_relay_nets}" | |
113 | db_set exim4/dc_smarthost "${dc_smarthost}" | |
114 | if [ "${dc_minimaldns}" != "" ]; then | |
115 | db_set exim4/dc_minimaldns "${dc_minimaldns}" | |
116 | fi | |
117 | db_set exim4/use_split_config "${dc_use_split_config}" | |
118 | db_set exim4/hide_mailname "${dc_hide_mailname}" | |
119 | # do not store "locally customized" in debconf db, otherwise simply | |
120 | # removing the custom dc_localdelivery from ue4cc won't work. | |
121 | if [ "${dc_localdelivery}" != "" ] && | |
122 | [ "$(convert_transport_to_long ${dc_localdelivery})" != "locally customized" ] ; then | |
123 | db_set exim4/dc_localdelivery \ | |
124 | "$(convert_transport_to_long ${dc_localdelivery})" | |
125 | fi | |
126 | db_fset "exim4/dc_other_hostnames" mailname "${dc_mailname_in_oh}" | |
127 | } | |
128 | ||
129 | # ipv6: replace double colons in colon-separated host lists with umlaut-o | |
130 | # replace ':' with ' : ', add leading and ending whitespace. | |
131 | # return empty string if custom delimiter was used: | |
132 | # local_domains = <; 172.16.0.0/12; 3ffe:ffff:836f::/48 | |
133 | # e.g: 'localhost : 172.16.0.1 :3ffe::ffff::836f::::: foo.org' | |
134 |