5 [ "$1" = "configure" ] || exit 0
6 [ "$DEBIAN_SCRIPT_DEBUG" ] && set -vx
9 . /usr/share/carnet-tools/functions.sh
11 . /usr/share/debconf/confmodule
13 db_get postfix-cn/rbl || true
16 # Tue, 19 Dec 2006 10:31:01 +0100
17 # relays.ordb.org se gasi 2006-12-31
18 if echo $rbl | grep -q relays.ordb.org; then
19 rbl="`echo $rbl | sed 's/relays.ordb.org, //g'`"
20 # za svaki slucaj, ako je na kraju
21 rbl="`echo $rbl | sed 's/relays.ordb.org//g'`"
22 db_set postfix-cn/rbl "$rbl" || true
25 # Thu, 21 Dec 2006 09:03:50 +0100
26 # opm.blitzed.org je ugasen 2006-05
27 if echo $rbl | grep -q opm.blitzed.org; then
28 rbl="`echo $rbl | sed 's/opm.blitzed.org, //g'`"
29 # za svaki slucaj, ako je na kraju
30 rbl="`echo $rbl | sed 's/opm.blitzed.org//g'`"
31 db_set postfix-cn/rbl "$rbl" || true
34 db_get postfix-cn/matchgecos || true
38 fqdn="`hostname --fqdn`"
39 domain="`dnsdomainname`"
40 mailname="`cat /etc/mailname 2> /dev/null || hostname --fqdn`"
41 cp_get_netaddr || true
44 # ako ne postoje konfiguracijske datoteke, napravi ih
45 [ -f /etc/postfix/master.cf ] || touch /etc/postfix/master.cf
46 [ -f /etc/postfix/main.cf ] || touch /etc/postfix/main.cf
48 # spremi pocetnu verziju
49 cp -pf /etc/postfix/master.cf /etc/postfix/master.cf.dpkg-tmp.$$
50 cp -pf /etc/postfix/main.cf /etc/postfix/main.cf.dpkg-tmp.$$
52 # srediti master.cf za TLS
53 if [ -f /etc/postfix/master.cf ]; then
54 cp_check_and_sed '^#tlsmgr' \
55 's/^#tlsmgr/tlsmgr/g' \
56 /etc/postfix/master.cf || true
58 cp_check_and_sed '^#smtps' \
60 /etc/postfix/master.cf || true
63 # ovo manje/vise uzima kao default, ali u slucaju da je multihomed stroj,
64 # i eventualno je sprckan, mozda nesto nece raditi kako spada pa cemo konfigurirati
65 postconf -e myhostname="$fqdn"
66 postconf -e mydomain="$domain"
67 postconf -e myorigin="$mailname"
69 # zbog problema sa squirrelmailom
70 postconf -e append_dot_mydomain="yes"
71 postconf -e append_at_myorigin="yes"
73 # dodaj 127.0.0.0/8 i netaddr
74 mynetworks="`postconf -h mynetworks`"
75 for i in "127.0.0.0/8" "$netaddr"; do
76 if ! echo $mynetworks | grep -q $i; then
77 mynetworks="$mynetworks, $i"
80 postconf -e mynetworks="$mynetworks"
82 # obrisati $mydomain, ako je upgrade sa starije verzije
83 # te srediti mydestination
84 if dpkg --compare-versions "$2" lt 2.3.8-2; then
85 mydestination="`postconf -h mydestination`"
86 if echo $mydestination | grep -q ", \$mydomain"; then
87 mydestination="`echo $mydestination | sed 's/, \$mydomain//g'`"
89 if ! echo $mydestination | grep -q "localhost.\$mydomain"; then
90 mydestination="$mydestination, localhost.\$mydomain"
92 if ! echo $mydestination | grep -q "\$myhostname"; then
93 mydestination="\$myhostname, $mydestination"
95 postconf -e mydestination="$mydestination"
98 # default je: $myhostname, localhost.$mydomain, localhost
99 # treba dodati jos ", $mydomain", ako je host mx
100 cp_get_mx_domain || true
102 if [ "$mx_domain" != "$fqdn" ]; then
103 mydestination="`postconf -h mydestination`"
104 if ! echo $mydestination | grep -q ", \$mydomain"; then
105 postconf -e mydestination="$mydestination, \$mydomain"
107 postconf -e relay_domains="\$mydestination"
108 if [ "$mx_domain" != "$domain" ]; then
109 if dpkg --compare-versions "$2" lt 2.1.5-8; then
110 cp_echo "CN: This host is MX for more than one domain! postfix-cn package will"
111 cp_echo "CN only set up $mx_domain, you HAVE TO add the other domains manually"
112 cp_echo "CN to mydestination variable in /etc/postfix/main.cf, if you haven't"
113 cp_echo "CN done that already or you may lose mail."
119 if [ "$matchgecos" = "true" ]; then
120 aliasmaps="hash:/etc/aliases hash:/var/lib/postfix-cn/aliases_gecos"
121 elif [ "$matchgecos" = "false" ]; then
122 aliasmaps="hash:/etc/aliases"
123 alias_maps="`postconf -h alias_maps | \
124 sed -e 's#hash:/var/lib/postfix-cn/aliases_gecos,*##g' -e 's/,*[[:space:]]*$//g'`"
125 postconf -e alias_maps="$alias_maps"
128 for i in $aliasmaps; do
129 alias_maps="`postconf -h alias_maps`"
130 if ! echo $alias_maps | grep -q "$i"; then
131 postconf -e alias_maps="$alias_maps, $i"
135 postconf -e alias_database="hash:/etc/aliases"
136 postconf -e local_recipient_maps="proxy:unix:passwd.byname \$alias_maps"
139 postconf -e recipient_delimiter="+"
140 postconf -e smtpd_helo_required="yes"
141 postconf -e smtpd_helo_restrictions="permit_mynetworks"
142 postconf -e in_flow_delay="2s"
143 postconf -e initial_destination_concurrency="10"
144 postconf -e default_destination_concurrency_limit="30"
145 postconf -e smtpd_recipient_limit="400"
146 postconf -e hash_queue_depth="3"
148 if dpkg --compare-versions "$2" lt 2.1.5-6; then
149 postconf -e bounce_queue_lifetime="5d"
150 postconf -e maximal_queue_lifetime="5d"
153 # ako netko zeli maknuti maskiranje, da mu ga nova verzija ne doda
154 if dpkg --compare-versions "$2" lt 2.1.5-2; then
155 postconf -e masquerade_domains="\$mydomain"
158 # sredi smtpd_recipient_restrictions
159 smtpd_recipient_restrictions="reject_invalid_hostname, \
160 reject_unknown_sender_domain, \
161 reject_unknown_recipient_domain, \
162 reject_unauth_pipelining, \
163 permit_sasl_authenticated, \
165 reject_unauth_destination"
167 # dodaj samo rbl-ove iz debconfa
169 for i in `echo $rbl | tr -d ,`; do
170 smtpd_recipient_restrictions="$smtpd_recipient_restrictions, reject_rbl_client $i"
174 # dodaj permit na kraj
175 smtpd_recipient_restrictions="$smtpd_recipient_restrictions, permit"
176 postconf -e smtpd_recipient_restrictions="$smtpd_recipient_restrictions"
179 postconf -e smtpd_sasl_auth_enable="yes"
180 postconf -e smtpd_sasl_security_options="noanonymous"
181 postconf -e smtpd_sasl_local_domain="\$myhostname"
182 postconf -e broken_sasl_auth_clients="yes"
184 [ -d /etc/postfix/sasl/ ] || mkdir -p /etc/postfix/sasl/
185 if [ ! -f /etc/postfix/sasl/smtpd.conf ]; then
186 cat - > /etc/postfix/sasl/smtpd.conf <<EOF
187 pwcheck_method: saslauthd
188 mech_list: plain login
190 restart_postfix="yes"
193 if [ -f /etc/default/saslauthd ]; then
194 cp_check_and_sed "^START=no" \
195 "s/^START=no/START=yes/g" \
196 /etc/default/saslauthd && restart_saslauthd="yes"
198 cp_check_and_sed "^#[[:blank:]]*START=" \
199 "s/^#[[:blank:]]*START=.*$/START=yes/g" \
200 /etc/default/saslauthd && restart_saslauthd="yes"
202 if ! grep -q "^START.*yes" /etc/default/saslauthd; then
203 echo "START=yes" >> /etc/default/saslauthd
204 restart_saslauthd="yes"
206 if ! grep -q "^PARAMS.*/var/spool/postfix/var/run/saslauthd" /etc/default/saslauthd; then
207 echo "PARAMS=\"-m /var/spool/postfix/var/run/saslauthd\"" >> /etc/default/saslauthd
208 restart_saslauthd="yes"
210 if ! grep -q "^PIDFILE.*/var/spool/postfix/var/run/saslauthd/saslauthd.pid" /etc/default/saslauthd; then
211 echo "PIDFILE=\"/var/spool/postfix/var/run/saslauthd/saslauthd.pid\"" >> /etc/default/saslauthd
212 restart_saslauthd="yes"
214 if ! grep -q "^PWDIR.*/var/spool/postfix/var/run/saslauthd" /etc/default/saslauthd; then
215 echo "PWDIR=\"/var/spool/postfix/var/run/saslauthd\"" >> /etc/default/saslauthd
216 restart_saslauthd="yes"
218 if ! grep -q "&& ln -s" /etc/default/saslauthd; then
219 echo "[ ! -L /var/run/saslauthd -a -d /var/spool/postfix/var/run/saslauthd -a ! -d /var/run/saslauthd ] && ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd || true" >> /etc/default/saslauthd
220 restart_saslauthd="yes"
222 if [ ! -L /var/run/saslauthd ]; then
223 mkdir -p /var/spool/postfix/var/run/
224 if [ -d /var/run/saslauthd -a ! -d /var/spool/postfix/var/run/saslauthd ]; then
225 mv /var/run/saslauthd /var/spool/postfix/var/run/
226 elif [ -d /var/run/saslauthd -a -d /var/spool/postfix/var/run/saslauthd ]; then
227 rm -rf /var/run/saslauthd/
230 # XXX jos kad bi ln -s u /var/run/ radio (bootclean.sh)
231 if [ -d /var/spool/postfix/var/run/saslauthd -a ! -d /var/run/saslauthd ]; then
232 ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
235 restart_saslauthd="yes"
237 if [ ! -d /var/spool/postfix/var/run/saslauthd ]; then
238 mkdir -p /var/spool/postfix/var/run/saslauthd
239 restart_saslauthd="yes"
241 if ! dpkg-statoverride --list /var/spool/postfix/var/run/saslauthd > /dev/null; then
242 dpkg-statoverride --update --add root sasl 710 /var/spool/postfix/var/run/saslauthd
247 if [ "$restart_saslauthd" = "yes" ]; then
248 if [ -x /usr/sbin/invoke-rc.d ]; then
249 [ -x /etc/init.d/saslauthd ] && invoke-rc.d saslauthd restart
251 [ -x /etc/init.d/saslauthd ] && /etc/init.d/saslauthd restart
255 # izgenerirati certifikate
256 cert="postfix" # basename of certificate
257 description="Postfix SMTP daemon" # descriptive text
259 PATH=$PATH:/usr/bin/ssl
260 if [ -f "$cert.pem" ]; then
261 echo "CN: You already have /etc/ssl/certs/$cert.pem"
263 echo "CN: Creating generic self-signed certificate: /etc/ssl/certs/$cert.pem"
264 echo "CN: (replace with hand-crafted or authorized one if needed)."
265 HOSTNAME=`hostname -s`
267 openssl req -new -x509 -days 365 -nodes -out "$cert.pem" -keyout "$cert.pem" > /dev/null 2>&1 <<+
276 ln -sf "$cert.pem" `openssl x509 -noout -hash < "$cert.pem"`.0
277 chown root.root "/etc/ssl/certs/$cert.pem"
278 chmod 0640 "/etc/ssl/certs/$cert.pem"
282 postconf -e smtp_use_tls="yes"
283 postconf -e smtp_tls_key_file="\$smtp_tls_cert_file"
284 postconf -e smtp_tls_session_cache_database="sdbm:/var/spool/postfix/smtp_scache"
285 postconf -e smtp_tls_session_cache_timeout="3600s"
286 postconf -e smtpd_use_tls="yes"
287 postconf -e smtpd_tls_key_file="\$smtpd_tls_cert_file"
288 postconf -e smtpd_tls_session_cache_database="sdbm:/var/spool/postfix/smtpd_scache"
289 postconf -e smtpd_tls_session_cache_timeout="3600s"
290 postconf -e tls_random_source="dev:/dev/urandom"
291 # ako je postavljen neki drugi certifikat, ne diraj
292 smtp_tls_cert_file="`postconf -h smtp_tls_cert_file`"
293 if [ -z "$smtp_tls_cert_file" ]; then
294 postconf -e smtp_tls_cert_file="/etc/ssl/certs/$cert.pem"
296 smtpd_tls_cert_file="`postconf -h smtpd_tls_cert_file`"
297 if [ -z "$smtpd_tls_cert_file" ]; then
298 postconf -e smtpd_tls_cert_file="/etc/ssl/certs/$cert.pem"
301 # prije bilo u /etc/postfix/, od verzije 2.1.5-2 je u /var/spool/postfix
302 [ -f /etc/postfix/smtp_scache.dir ] && rm -f /etc/postfix/smtp_scache.dir
303 [ -f /etc/postfix/smtp_scache.pag ] && rm -f /etc/postfix/smtp_scache.pag
304 [ -f /etc/postfix/smtpd_scache.dir ] && rm -f /etc/postfix/smtpd_scache.dir
305 [ -f /etc/postfix/smtpd_scache.pag ] && rm -f /etc/postfix/smtpd_scache.pag
311 # ako postoji amavis, sredi
312 if [ -x /usr/share/amavisd-cn/postfixize.sh ]; then
313 /usr/share/amavisd-cn/postfixize.sh
316 # provjeri da li postoji sendmail-base
317 if ! dpkg -l sendmail-base | grep -q '^.n'; then
319 cp_echo "CN: Package sendmail-base detected."
320 cp_echo "CN: Please, purge this package with command:"
321 cp_echo "CN: # dpkg --purge sendmail-base"
325 # sendmailov /etc/mail/access
326 if [ -f /etc/mail/access -a /etc/mail/access.db ]; then
328 cp_echo "CN: Sendmail's access file (/etc/mail/access) detected."
329 cp_echo "CN: Please, upgrade your's /etc/postfix/access."
330 cp_echo "CN: http://www.postfix.org/SMTPD_ACCESS_README.html"
334 if ! id postfix | grep -q sasl; then
335 adduser postfix sasl > /dev/null
336 restart_postfix="yes"
339 # ako ima razlika, backupiraj stari, ako ne, obrisi privremeni backup
340 if ! cmp -s /etc/postfix/master.cf /etc/postfix/master.cf.dpkg-tmp.$$; then
341 cp_echo "CN: Backing up old version of /etc/postfix/master.cf in /var/backups/..."
342 cp_backup_conffile /etc/postfix/master.cf.dpkg-tmp.$$ master.cf
343 restart_postfix="yes"
345 rm -f /etc/postfix/master.cf.dpkg-tmp.$$
347 if ! cmp -s /etc/postfix/main.cf /etc/postfix/main.cf.dpkg-tmp.$$; then
348 cp_echo "CN: Backing up old version of /etc/postfix/main.cf in /var/backups/..."
349 cp_backup_conffile /etc/postfix/main.cf.dpkg-tmp.$$ main.cf
350 restart_postfix="yes"
352 rm -f /etc/postfix/main.cf.dpkg-tmp.$$
354 # kreiraj aliases_gecos
355 if [ -x /usr/share/postfix-cn/make-aliases-gecos.sh ]; then
356 if [ "$matchgecos" = "true" ]; then
357 echo "CN: Creating GECOS alias map..."
358 /usr/share/postfix-cn/make-aliases-gecos.sh
363 if [ "$restart_postfix" = "yes" ]; then
364 if [ -x /usr/sbin/invoke-rc.d ]; then
365 [ -x /etc/init.d/postfix ] && invoke-rc.d postfix restart
367 [ -x /etc/init.d/postfix ] && /etc/init.d/postfix restart