postinst is in xmail 1.27-1.1build1.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | #! /bin/bash -e
# postinst script for xmail
# Use debconf.
. /usr/share/debconf/confmodule
case "$1" in
configure)
#this is used to see if the user is running dpkg-reconfigure
CUR_VER=`cat /var/lib/xmail/curr_ver`
#these configuration changes don't require xmail to run.
if [ -z "$2" ]; then
#we are installing for the first time
cp /usr/share/doc/xmail/sample/*.tab /etc/xmail
cp /usr/share/doc/xmail/sample/dnsroots /etc/xmail
#make links to xmail config files
ln -s /etc/xmail/*.tab /var/lib/xmail/
ln -s /etc/xmail/dnsroots /var/lib/xmail
chmod 711 /var/lib/xmail
chmod 711 /var/spool/xmail
chmod 711 /var/spool/xmail/spool
chmod 770 /var/spool/xmail/spool/local
chown root:mail /var/spool/xmail/spool/local
chmod 770 /var/spool/xmail/spool/temp
chown root:mail /var/spool/xmail/spool/temp
chmod 700 /var/cache/xmail
else if dpkg --compare-versions "$2" lt "1.21" ; then
echo "E: Backporting from 1.21 is not longer supported. Please purge the old version and reinstall."
fi
fi
SSL_CERT="/var/lib/xmail/server.cert"
SSL_KEY="/var/lib/xmail/server.key"
if [ ! -f "$SSL_CERT" ] && [ ! -f "$SSL_KEY" ];then
echo "I: Creating generic self-signed certificates."
echo "I: (replace with hand-crafted or authorized one if needed)."
cd /etc/ssl/certs
PATH=$PATH:/usr/bin/ssl
HOSTNAME=`hostname -s`
FQDN=`hostname -f`
MAILNAME=`cat /etc/mailname 2> /dev/null || hostname -f`
(openssl req -new -x509 -days 365 -nodes -out $SSL_CERT -keyout $SSL_KEY > /dev/null 2>&1 <<+
.
.
.
XMail mail server
$HOSTNAME.$DOMAINNAME
$FQDN
root@$MAILNAME
+
) || echo "Warning : Bad SSL config, can't generate certificate"
chown root:root $SSL_CERT || true
chmod 0644 $SSL_CERT || true
chown root:root $SSL_KEY || true
chmod 0600 $SSL_KEY || true
fi
chmod +t /var/spool/xmail/spool/temp
chmod +t /var/spool/xmail/spool/local
dpkg-statoverride --force --update --add root mail 2555 /var/lib/xmail/sendmail/xsendmail
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# Automatically added by dh_installinit
if [ -x "/etc/init.d/xmail" ]; then
update-rc.d xmail defaults >/dev/null
invoke-rc.d xmail start || exit $?
fi
# End automatically added section
if [ "$1" = "configure" ]; then
if [ ! -f /var/run/XMail.pid ]; then
echo "E: XMail not started. Skipping configuration...."
exit 0
fi
if [ -z "$2" ] || [ "$2" = "$CUR_VER" ]; then
#Make sure xmail starts
while [ ! -d /var/lib/xmail/spool/22/22/ ] ; do
sleep 1;
done
#there is not much i can do here, xmail's startup sucks
sleep 2
db_get xmail/domainname && domainname="$RET"
db_get xmail/daemonuser && daemonuser="$RET"
db_get xmail/daemonpasswd && daemonpasswd="$RET"
db_get xmail/redirect && redirect="$RET"
if [ "$domainname" = "/etc/mailname" ]; then
if [ -f "/etc/mailname" ]; then
domainname=`cat /etc/mailname`
else
echo "I: Configured to use /etc/mailname but none exists. Using hostname --fqdn."
domainname=`hostname --fqdn`
fi
fi
#add control account data - TAB is a MUST here.
cat >> /etc/xmail/ctrlaccounts.tab <<EOF
"debian" "0100070c040b"
EOF
#maybe we are reconfiguring
if [ -f "/etc/xmail/default_domain" ]; then
old_domain=`cat /etc/xmail/default_domain`
else
old_domain="xmailserver.test"
fi
echo "I: Adding new domain."
#Let's see if the domain exists or is an alias to another domain
EXISTS_D=$(CtrlClnt -s localhost -u debian -p debian domainlist "$domainname")
ALIAS_D=$(CtrlClnt -s localhost -u debian -p debian aliasdomainlist "*" "$domainname")
if [ -z "$EXISTS_D" ] && [ -z "$ALIAS_D" ]; then
CtrlClnt -s localhost -u debian -p debian domainadd $domainname
fi
#an alias domain with the same name exists
if [ "$ALIAS_D" ]; then
CtrlClnt -s localhost -u debian -p debian aliasdomaindel $domainname
CtrlClnt -s localhost -u debian -p debian domainadd $domainname
fi
echo "I: Adding user."
#Let's see if the special user exists
EXISTS=$(CtrlClnt -s localhost -u debian -p debian userlist "$domainname" "$daemonuser")
ALIAS=$(CtrlClnt -s localhost -u debian -p debian aliaslist "$domainname" "$daemonuser")
if [ -z "$ALIAS" ]; then
if [ "$EXISTS" ]; then
CtrlClnt -s localhost -u debian -p debian userpasswd $domainname $daemonuser $daemonpasswd
else
CtrlClnt -s localhost -u debian -p debian useradd $domainname $daemonuser $daemonpasswd U
fi
fi
if [ "$ALIAS" ]; then
CtrlClnt -s localhost -u debian -p debian aliasdel $domainname $daemonuser
CtrlClnt -s localhost -u debian -p debian useradd $domainname $daemonuser $daemonpasswd U
fi
# add aliases
for daemon in root postmaster abuse; do
if [ "$daemonuser" != "$daemon" ]; then
#delete old aliases if needed
EXISTS_U=$(CtrlClnt -s localhost -u debian -p debian userlist "$domainname" "$daemon")
ALIAS_U=$(CtrlClnt -s localhost -u debian -p debian aliaslist "$domainname" "$daemon")
if [ "$ALIAS_U" ]; then
CtrlClnt -s localhost -u debian -p debian aliasdel $domainname $daemon;
fi
#if there is already an daemon account then don't touch it
if [ -z "$EXISTS_U" ]; then
CtrlClnt -s localhost -u debian -p debian aliasadd $domainname $daemon $daemonuser;
fi
fi
done
# domain alias to `hostname`
EXISTS_H=$(CtrlClnt -s localhost -u debian -p debian domainlist "`hostname`")
ALIAS_H=$(CtrlClnt -s localhost -u debian -p debian aliasdomainlist "*" "`hostname`")
if [ -z "$EXISTS_H" ]; then
#make sure we delete the old alias if we have to
if [ "$ALIAS_H" ]; then
CtrlClnt -s localhost -u debian -p debian aliasdomaindel `hostname`
fi
CtrlClnt -s localhost -u debian -p debian aliasdomainadd $domainname `hostname`
else if [ "$domainname" != "`hostname`" ]; then
echo "E: A domain called `hostname` already exists. Please remove it and run dpkg-reconfigure."
fi
fi
#clear out debian install ctrl account
sed -i '/"debian"\t"0100070c040b"/d' /etc/xmail/ctrlaccounts.tab
#add default domain to cmdline
echo $domainname > /etc/xmail/default_domain
#change settings in server.tab and xsendmail
sed -i "s/${old_domain}/${domainname}/g" /etc/xmail/server.tab
sed -i "s/${old_domain}\|xmailserver.test/${domainname}/g" /var/lib/xmail/sendmail/xsendmail
#Add redirect settings in case it's not set
if [ "$redirect" ]; then
mailproc="/var/lib/xmail/domains/${domainname}/${daemonuser}/mailproc.tab"
if [ -f "$mailproc" ]; then
is_redirect=$(cat $mailproc | grep "redirect");
if [ -z "$is_redirect" ]; then ADD=1; fi
else ADD=1
fi
if [ "$ADD" ]; then
echo "I: Adding redirect."
# TAB is a MUST here too.
cat >> /var/lib/xmail/domains/${domainname}/${daemonuser}/mailproc.tab <<EOF
"redirect" "${redirect}"
EOF
fi
fi
#restart xmail
invoke-rc.d xmail restart
fi
fi
exit 0
|