PREIN
/bin/sh
# Create "sympa" group if it is not already there
if ! grep -q "^sympa:" /etc/group; then
echo "Adding system group: sympa."
/usr/sbin/groupadd sympa
fi
# Add "apache" in group "sympa" so that it could access
# /etc/sympa/wwsympa.conf and therefore a working wwsympa ;-)
if ! grep -q "^sympa:.*\<apache\>" /etc/group; then
echo "Adding apache in group sympa."
comma="";
[ -n "$(grep '^sympa:' /etc/group | sed -e 's/^sympa:.*:.*://')" ] && comma=",";
perl -pi -e "s/^(sympa:.*)/\1${comma}apache/" /etc/group
fi
# Create "sympa" user if it is not already there
home_s_pw=`sed -n -e "/^sympa:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\):.*/s//\1/p" /etc/passwd`
if [ -z "$home_s_pw" ]; then
echo "Adding system user: sympa."
/usr/sbin/useradd -u 89 -m -g sympa -d /var/lib/sympa sympa -c "Sympa mailing-list manager" -s "/bin/false"
elif [ "$home_s_pw" != "/var/lib/sympa" ]; then
echo "Problem: user \"sympa\" already exists with a home different from /var/lib/sympa"
exit 0
fi
PREUN
/bin/sh
if [ $1 = 0 ]; then service sympa stop > /dev/null 2>/dev/null || :; /sbin/chkconfig --del sympa; fi;
POSTIN
/bin/sh
if [ $1 = 1 ]; then /sbin/chkconfig --add sympa; else if [ -f /var/lock/subsys/sympa ]; then service sympa restart > /dev/null 2>/dev/null || : ; fi; fi;
# Install sympa.conf
if [ ! -f "/etc/sympa/sympa.conf" ]; then
cp /usr/share/sympa/examples/config/sympa.conf /etc/sympa/sympa.conf
fi
# Add new parameters
if ! grep -q "^[:space:]*spool[:space:]\+" /etc/sympa/sympa.conf; then
echo -e "\n## Parent directory containing all spools\n" >> /etc/sympa/sympa.conf
echo -e "spool\t\t/var/spool/sympa\n" >> /etc/sympa/sympa.conf
fi
if ! grep -q "^[:space:]*spool[:space:]\+" /etc/sympa/sympa.conf; then
echo -e "\n## Temporary directory\n" >> /etc/sympa/sympa.conf
echo -e "tmpdir\t\t/var/spool/sympa\n" >> /etc/sympa/sympa.conf
fi
# Setup a correct hostname
perl -pi -e "s|MY_HOST|${HOSTNAME}|g" /etc/sympa/sympa.conf
# Ensure permissions and ownerships are right
chown -R root.root /usr/lib/sympa
chown -R sympa.sympa /var/spool/sympa
chmod -R ug=rwX,o=X /var/spool/sympa
chown -R sympa.sympa /var/run/sympa
chown -R sympa.sympa /etc/sympa/*
chmod 0640 /etc/sympa/sympa.conf
if [ -e "/var/log/sympa" ] && [ ! -f "/var/log/sympa" ]; then
echo "Problem: /var/log/sympa.log already exists but it is not a file!"
fi
touch /var/log/sympa || /bin/true
chown sympa.sympa /var/log/sympa
chmod 0640 /var/log/sympa
chown sympa.sympa /usr/lib/sympa/bin/queue
chown sympa.sympa /usr/lib/sympa/bin/bouncequeue
# Get rid of the old /etc/sympa/config directory
if [ -d "/etc/sympa/config" ]; then
rm -f /etc/sympa/config/helpfile
rm -f /etc/sympa/config/helpfile.advanced
rm -f /etc/sympa/config/lists
rmdir /etc/sympa/config || true
fi
# Try to add some sample entries in /etc/aliases for sympa
# TODO: handle updates from sympa 2.x entries to sympa 3.x entries ?
# (sympa, listmaster, bounce+*, sympa-request, sympa-owner)
for a_file in /etc/aliases /etc/postfix/aliases; do
if [ -f ${a_file} ]; then
if [ `grep -c sympa ${a_file}` -eq 0 ]; then
cp -f ${a_file} ${a_file}.rpmorig
echo >> ${a_file}
echo "# added by sympa-3.2.1 rpm " $(date) >> ${a_file}
if [ `grep -c listmaster ${a_file}` -eq 0 ]; then
echo "# listmaster: root" >> ${a_file}
fi
echo "# sympa: \"|/var/lib/sympa/bin/queue 0 sympa\"" >> ${a_file}
echo "# sympa-request: listmaster@${HOSTNAME}" >> ${a_file}
echo "# sympa-owner: listmaster@${HOSTNAME}" >> ${a_file}
echo "" >> ${a_file}
# (gb) The user have to manually comment out the new aliases
# and then invoke: /usr/bin/newaliases
echo "Your new aliases have been set up in ${a_file}. Please check them out before running /usr/bin/newaliases"
else
# Possibly fix up bad paths in aliases file
perl -pi -e "s|/var/lib/sympa/bin/queue|/usr/lib/sympa/bin/queue|" ${a_file}
/usr/bin/newaliases
fi
fi
done
# Setup log facility for Sympa
if [ -f /etc/syslog.conf ] ;then
if [ `grep -c sympa /etc/syslog.conf` -eq 0 ] ;then
typeset -i cntlog
cntlog=0
while [ `grep -c local${cntlog} /etc/syslog.conf` -gt 0 ];do cntlog=${cntlog}+1;done
if [ ${cntlog} -le 9 ];then
echo "# added by sympa-3.2.1 rpm $(date)" >> /etc/syslog.conf
echo "local${cntlog}.* /var/log/sympa" >> /etc/syslog.conf
fi
fi
fi
# Fix syslog variable for the correct subsystem to use in config files
cntlog=`sed -n -e "/^local.*sympa/s|^local\([0-9][0-9]*\)\.\*[ \t]*/var/log/sympa|\1|p" < /etc/syslog.conf`
for conffile in /etc/sympa/sympa.conf; do
perl -pi -e "s|syslog(\s+)LOCAL[0-9]+|syslog\1LOCAL${cntlog}|" $conffile
done
# Eventually, add queue to sendmail security shell
if [ -d /etc/smrsh ]; then
if [ ! -e /etc/smrsh/queue ]; then
ln -s /var/lib/sympa/bin/queue /etc/smrsh/queue
fi
fi
##
## WWSympa postinstall
##
# Install wwsympa.conf
if [ ! -f "/etc/sympa/wwsympa.conf" ]; then
cp /usr/share/sympa/examples/wwsympa.conf /etc/sympa/wwsympa.conf
fi
# Setup a correct hostname
perl -pi -e "s|MY_HOST|${HOSTNAME}|g" /etc/sympa/wwsympa.conf
# Ensure permissions are correctly set for wwsympa.conf
chmod 0640 /etc/sympa/wwsympa.conf
# Setup log facility for Sympa
if [ -f /etc/syslog.conf ] ;then
if [ `grep -c sympa /etc/syslog.conf` -eq 0 ] ;then
typeset -i cntlog
cntlog=0
while [ `grep -c local${cntlog} /etc/syslog.conf` -gt 0 ];do cntlog=${cntlog}+1;done
if [ ${cntlog} -le 9 ];then
echo "# added by sympa-3.2.1 rpm $(date)" >> /etc/syslog.conf
echo "local${cntlog}.* /var/log/sympa" >> /etc/syslog.conf
fi
fi
fi
# Fix syslog variable for the correct subsystem to use in config files
cntlog=`sed -n -e "/^local.*sympa/s|^local\([0-9][0-9]*\)\.\*[ \t]*/var/log/sympa|\1|p" < /etc/syslog.conf`
for conffile in /etc/sympa/wwsympa.conf; do
perl -pi -e "s|syslog(\s+)LOCAL[0-9]+|syslog\1LOCAL${cntlog}|" $conffile
done
POSTUN
/bin/sh
#if [ $1 = 0 ]; then
# if [ -d "/var/lib/sympa" ]; then
# rm -rf /var/lib/sympa/*
# fi
#fi
if [ ! -d "/var/lib/sympa" ]; then
/usr/sbin/userdel -r sympa
/usr/sbin/groupdel sympa
fi
if [ $1 = 0 -a -d /etc/smrsh ]; then
if [ -L /etc/smrsh/queue ]; then
rm -f /etc/smrsh/queue
fi
fi
##
## Sympa file list
##