Merge remote-tracking branch 'origin/master'

# Conflicts:
#	debian/DEBIAN/postinst
#	rhel/mailscanner.spec
This commit is contained in:
Jerry.Benton 2017-06-08 07:22:28 -04:00
commit b02c2fbbfd
14 changed files with 338 additions and 15 deletions

View file

@ -96,6 +96,7 @@ chmod +x $WORK/DEBIAN/postrm
chmod +x $WORK/usr/lib/MailScanner/wrapper/*-autoupdate
chmod +x $WORK/usr/lib/MailScanner/wrapper/*-wrapper
chmod +x $WORK/usr/lib/MailScanner/init/*
chmod +x $WORK/usr/lib/MailScanner/systemd/*
chmod +x $WORK/etc/cron.daily/*
chmod +x $WORK/etc/cron.hourly/*

View file

@ -96,6 +96,7 @@ cp -fr $DEVBASEDIR/rhel/etc/* $WORK/etc/
# usr
cp -fr $DEVBASEDIR/common/usr/* $WORK/usr/
cp -fr $DEVBASEDIR/rhel/usr/* $WORK/usr/
# Insert the version number we are building
perl -pi -e 's/VersionNumberHere/'$MSVERSION'/;' $WORK/etc/MailScanner/MailScanner.conf

View file

@ -219,10 +219,15 @@ do_stop()
rm -f /var/lock/subsys/MailScanner
fi
# remove pid file
if [ -f $PIDFILE ] ; then
rm -f $PIDFILE
fi
s='-\|/';
x=0
i=0
while [ "$x" -lt 400 -a -f $PIDFILE ]; do
x=$((x+1));
i=$(( (i+1) %4 ));
printf "\r${s:$i:1}";
sleep .1;
done
# create stopped file
touch $stopped_lockfile

View file

@ -0,0 +1,19 @@
[Unit]
Description=LSB: MailScanner daemon
Documentation=man:systemd-sysv-generator(8)
SourcePath=/usr/lib/MailScanner/init/ms-init
After=network-online.target remote-fs.target rsyslog.service
[Service]
Type=forking
Restart=no
TimeoutSec=1min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/lib/MailScanner/init/ms-init start
ExecStop=/usr/lib/MailScanner/init/ms-init stop
[Install]
WantedBy=multi-user.target

View file

@ -47,8 +47,8 @@ if [ ! -f $CONFIGDIR/phishing.bad.sites.custom ]; then
echo '#' >> $CONFIGDIR/phishing.bad.sites.custom
fi
curl --compressed -o $CONFIGDIR/phishing.bad.sites.conf.master $THEURL || \
wget --no-check-certificate -O $CONFIGDIR/phishing.bad.sites.conf.master $THEURL || \
curl --silent --compressed -o $CONFIGDIR/phishing.bad.sites.conf.master $THEURL || \
wget --quiet --no-check-certificate -O $CONFIGDIR/phishing.bad.sites.conf.master $THEURL || \
( logger -p mail.warn -t update.bad.phishing.sites Cannot find wget or curl, update failed. ; echo Cannot find wget or curl to do phishing sites update. ; exit 1 )
if [ -s phishing.bad.sites.conf.master ]; then

View file

@ -50,8 +50,8 @@ if [ ! -f $CONFIGDIR/phishing.safe.sites.custom ]; then
echo 'mailscanner.info' >> $CONFIGDIR/phishing.safe.sites.custom
fi
curl --compressed -o $CONFIGDIR/phishing.safe.sites.conf.master $THEURL || \
wget --no-check-certificate -O $CONFIGDIR/phishing.safe.sites.conf.master $THEURL || \
curl --silent --compressed -o $CONFIGDIR/phishing.safe.sites.conf.master $THEURL || \
wget --quiet --no-check-certificate -O $CONFIGDIR/phishing.safe.sites.conf.master $THEURL || \
( logger -p mail.warn -t update.phishing.sites Cannot find wget or curl, update failed. ; echo Cannot find wget or curl to do phishing sites update. ; exit 1 )
if [ -s phishing.safe.sites.conf.master ]; then

View file

@ -94,6 +94,7 @@ $VERSION = substr q$Revision: 5099 $, 10;
# $sascore set by IsSpam
# $spamreport set by IsSpam
# $sarules set by IsSpam (ref to hash of rulenames hit)
# $saruleaction set by IsSpam (hash of triggered actions by rulename)
# $mcpwhitelisted set by IsMCP
# $ismcp set by IsMCP
# $issamcp set by IsMCP
@ -1068,6 +1069,11 @@ sub HandleHamAndSpam {
$action =~ s/\s+$//;
next unless $action;
#print STDERR "*sarule $looprule gave action $action\n";
if (defined($this->{saruleaction}{$looprule})) {
$this->{saruleaction}{$looprule} .= ','.$action;
} else {
$this->{saruleaction}{$looprule} = $action;
}
MailScanner::Log::InfoLog("SpamAssassin Rule Actions: rule %s caused action %s in message %s", $looprule, $action, $this->{id}) if $logsaactions;
if ($action !~ /^notify/ && $action =~ s/^no\w?\W*//) { # Anything started no, not not, etc.
#

View file

@ -142,8 +142,16 @@ if [ -f '/etc/init.d/MailScanner' ]; then
rm -f /etc/init.d/MailScanner
fi
# remove old systemd file if present
if [ -f '/lib/systemd/system/mailscanner.service' ]; then
rm -f /lib/systemd/system/mailscanner.service
fi
# Check for systemd
if [ -d '/usr/lib/systemd' ]; then
cp /usr/lib/MailScanner/systemd/ms-systemd /lib/systemd/system/mailscanner.service
# add symlink to init script
if [ ! -L '/etc/init.d/mailscanner' ]; then
elif [ ! -L '/etc/init.d/mailscanner' ]; then
ln -s /usr/lib/MailScanner/init/ms-init /etc/init.d/mailscanner
fi
@ -260,7 +268,22 @@ CAVNEW='AllowSupplementaryGroups true';
if [ -f '/etc/clamav/clamd.conf' ]; then
sed -i "s/${CAVOLD}/${CAVNEW}/g" /etc/clamav/clamd.conf
fi
<<<<<<< HEAD
update-rc.d mailscanner defaults 80 80
=======
# postfix fix
if [ -f '/etc/postfix/master.cf' ]; then
sed -i "s/pickup unix/pickup fifo/g" /etc/postfix/master.cf
sed -i "s/qmgr unix/qmgr fifo/g" /etc/postfix/master.cf
fi
if [ -d '/usr/lib/systemd' ]; then
systemctl enable mailscanner.service
else
update-rc.d mailscanner defaults 80 80
fi
>>>>>>> origin/master
exit 0

View file

@ -6,6 +6,11 @@ set -e
# unregister the old startup script
update-rc.d -f mailscanner remove
if [ -d '/usr/lib/systemd' && -f '/lib/systemd/system/mailscanner.service' ]; then
systemctl disable mailscanner.service
rm -f /lib/systemd/system/mailscanner.service
fi
if [ -L '/etc/init.d/mailscanner' ]; then
rm -f /etc/init.d/mailscanner
fi

View file

@ -0,0 +1,194 @@
#!/bin/bash
#
# mailscanner-sendmail This shell script takes care of starting and stopping
# the sendmail processes as needed by mailscanner
#
# chkconfig: 2345 79 30
# description: start sendmail queues for mailscanner
# processname: mailscanner-sendmail
# pidfile: /var/run/sendmail.*.pid, /var/run/sm-client.pid
### BEGIN INIT INFO
# Provides: sendmail mail-transport-agent
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Sendmail Mail Transport Agent
# Description: sendmail is a Mail Transport agent
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
MTA=sendmail
QUEUETIME=15m
WORKDIR=/var/spool/MailScanner/incoming
QUARDIR=/var/spool/MailScanner/quarantine
INQDIR=/var/spool/mqueue.in
RUNAS=root
INPID=/var/run/sendmail.in.pid
OUTPID=/var/run/sendmail.out.pid
SMPID=/var/run/sm-client.pid
MSPUSER=smmsp
MSPGROUP=smmsp
SENDMAIL=/usr/sbin/sendmail
RESTART_DELAY=10
export HOSTNAME
export MTA
export QUEUETIME
export WORKDIR
export QUARDIR
export INQDIR
export RUNAS
export INPID
export OUTPID
export SMPID
export MSPUSER
export MSPGROUP
export SENDMAIL
export RESTART_DELAY
# Check that networking is up.
if [ -n ${NETWORKING} ]; then
[ ${NETWORKING} = "no" ] && exit 0
fi
[ -f $SENDMAIL ] || exit 0
# Start both sendmail processes
StartInSendmail() {
if [ $MTA = 'sendmail' ]; then
/usr/bin/newaliases > /dev/null 2>&1
if test -x /usr/bin/make -a -f /etc/mail/Makefile ; then
make -C /etc/mail -s
else
for i in virtusertable access domaintable mailertable ; do
if [ -f /etc/mail/$i ] ; then
makemap hash /etc/mail/$i < /etc/mail/$i
fi
done
fi
$SENDMAIL -bd -OPrivacyOptions=noetrn \
-ODeliveryMode=queueonly \
-OQueueDirectory=$INQDIR \
-OPidFile=$INPID
# rhbz#200920
if [ ! -f $SMPID ]; then
touch $SMPID
chown $MSPUSER:$MSPGROUP $SMPID 2>/dev/null
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
/sbin/restorecon $SMPID
fi
fi
$SENDMAIL -L sm-msp-queue -Ac -q15m -OPidFile=$SMPID 2>/dev/null
success
echo
else
failure
echo
fi
}
StartOutSendmail() {
if [ $MTA = 'sendmail' ]; then
$SENDMAIL $([ -n "$QUEUETIME" ] && echo -q$QUEUETIME) \
-OPidFile=$OUTPID
success
echo
else
failure
echo
fi
}
RETVAL=0
# See how we were called.
case "$1" in
startin)
# Start just incoming sendmail
echo "Starting incoming $MTA only:"
echo -n ' incoming' $MTA': '
StartInSendmail
;;
startout)
# Start just outgoing sendmail
echo "Starting outgoing $MTA only:"
echo -n ' outgoing' $MTA': '
StartOutSendmail
;;
start)
[ -x /sbin/portrelease ] && /sbin/portrelease smtp &>/dev/null || :
# Start daemons.
echo 'Starting sendmail daemons:'
echo -n ' incoming' $MTA': '
StartInSendmail
echo -n ' outgoing' $MTA': '
StartOutSendmail
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mailscanner-sendmail
;;
stop)
# Stop daemons.
echo 'Stopping sendmail daemons:'
echo -n ' incoming' $MTA': '
if [ $MTA = "sendmail" ]; then
#killproc sendmail 2>/dev/null
[ -r $INPID ] && kill `head -1 $INPID` 2>/dev/null
[ -r /var/run/sm-client.pid ] && \
kill `head -1 /var/run/sm-client.pid` 2>/dev/null
success
else
failure
echo
fi
echo
echo -n ' outgoing' $MTA': '
if [ $MTA = "sendmail" ]; then
#killproc /usr/sbin/sendmail 2>/dev/null
[ -r $OUTPID ] && kill `head -1 $OUTPID` 2>/dev/null
success
else
failure
echo
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mailscanner-sendmail
# Clear out the old incoming dirs
cd $WORKDIR && ls | egrep '^[0123456789]+$' | xargs /bin/rm -rf 2>/dev/null
;;
status)
# Work out if sendmail daemons are running
echo 'Checking sendmail daemons:'
if [ $MTA = "sendmail" ]; then
# Now the incoming sendmail
echo -n ' incoming sendmail: '
alive=`ps axww | grep 'mqueue.i[n]' | awk '{ print $1 }' | head -1`
[ -r $INPID ] && pid=`head -1 $INPID` && alive=`ps ax | awk '{ print $1 }' | grep '^'$pid'$'`
if [ -z "$alive" ] ; then failure; else success; fi
echo
# Now the outgoing sendmail
echo -n ' outgoing sendmail: '
alive=
[ -r $OUTPID ] && pid=`head -1 $OUTPID` && alive=`ps ax | awk '{ print $1 }' | grep '^'$pid'$'`
if [ -z "$alive" ] ; then failure; else success; fi
echo
fi
;;
restart)
$0 stop
sleep 1
$0 start
RETVAL=$?
;;
*)
echo "Usage: service mailscanner-sendmail {start|stop|status|restart|restartms|reload|startin|startout|stopms}"
exit 1
esac
exit $RETVAL

View file

@ -0,0 +1,20 @@
[Unit]
Description=Sendmail Mail Transport Client for MailScanner
After=syslog.target network.target
Conflicts=postfix.service exim.service sendmail.service sm-client.service
Wants=ms-sendmail-in.service ms-sendmail-out.service
BindsTo=ms-sendmail-in.service ms-sendmail-out.service
[Service]
Type=forking
PIDFile=/run/sm-client.pid
Environment=SENDMAIL_OPTS=-q1h
ExecStartPre=/bin/touch /run/sm-client.pid
ExecStartPre=/bin/chown smmsp:smmsp /run/sm-client.pid
ExecStartPre=-/sbin/restorecon /run/sm-client.pid
ExecStartPre=-/etc/mail/make
ExecStart=/usr/sbin/sendmail -L sm-msp-queue -Ac $SENDMAIL_OPTS
[Install]
WantedBy=multi-user.target
Also=ms-sendmail-in.service ms-sendmail-out.service

View file

@ -0,0 +1,15 @@
[Unit]
Description=Sendmail Mail Transport Inbound Agent for MailScanner
After=syslog.target network.target
Conflicts=postfix.service exim.service sendmail.service sm-client.service
Wants=ms-sendmail.service ms-sendmail-out.service
BindsTo=ms-sendmail.service ms-sendmail-out.service
[Service]
Type=forking
PIDFile=/run/sendmail.in.pid
ExecStart=/usr/sbin/sendmail -bd -OPrivacyOptions=noetrn -ODeliveryMode=queueonly -OQueueDirectory=/var/spool/mqueue.in -OPidFile=/run/sendmail.in.pid
[Install]
WantedBy=multi-user.target
Also=ms-sendmail.service ms-sendmail-out.service

View file

@ -0,0 +1,15 @@
[Unit]
Description=Sendmail Mail Transport Outbound Agent for MailScanner
After=syslog.target network.target
Conflicts=postfix.service exim.service sendmail.service sm-client.service
Wants=ms-sendmail.service ms-sendmail-in.service
BindsTo=ms-sendmail.service ms-sendmail-in.service
[Service]
Type=forking
PIDFile=/run/sendmail.out.pid
ExecStart=/usr/sbin/sendmail -q15m -OPidFile=/run/sendmail.out.pid
[Install]
WantedBy=multi-user.target
Also=ms-sendmail.service ms-sendmail-in.service

View file

@ -53,7 +53,7 @@ mkdir -p ${RPM_BUILD_ROOT}/etc/MailScanner/{conf.d,rules,mcp}
mkdir -p ${RPM_BUILD_ROOT}/etc/{cron.hourly,cron.daily}
mkdir -p ${RPM_BUILD_ROOT}/usr/share/MailScanner/reports/{hu,de,se,ca,cy+en,pt_br,fr,es,en,cz,it,dk,nl,ro,sk}
mkdir -p ${RPM_BUILD_ROOT}/usr/share/MailScanner/perl/{MailScanner,custom}
mkdir -p ${RPM_BUILD_ROOT}/usr/{lib/MailScanner/wrapper,lib/MailScanner/init}
mkdir -p ${RPM_BUILD_ROOT}/usr/{lib/MailScanner/wrapper,lib/MailScanner/init,lib/MailScanner/systemd}
mkdir -p ${RPM_BUILD_ROOT}/var/spool/MailScanner/{archive,incoming,quarantine}
### etc
@ -220,6 +220,7 @@ EOF
### usr/lib/MailScanner
install usr/lib/MailScanner/init/ms-init ${RPM_BUILD_ROOT}/usr/lib/MailScanner/init/
install usr/lib/MailScanner/systemd/ms-systemd ${RPM_BUILD_ROOT}/usr/lib/MailScanner/systemd/
while read f
do
@ -273,6 +274,12 @@ if [ -f '/etc/init.d/MailScanner' ]; then
rm -f /etc/init.d/MailScanner
fi
# remove systemd if present
if [ -f '/usr/lib/systemd/system/mailscanner.service' ]; then
systemctl disable mailscanner.service
rm -f /usr/lib/systemd/system/mailscanner.service
fi
if [ -d '/usr/lib/MailScanner/MailScanner/CustomFunctions' ]; then
mkdir -p ${SAVEDIR}/usr/lib/MailScanner/MailScanner/CustomFunctions
cp -f /usr/lib/MailScanner/MailScanner/CustomFunctions/* ${SAVEDIR}/usr/lib/MailScanner/MailScanner/CustomFunctions
@ -501,14 +508,16 @@ if [ -d '/usr/share/MailScanner/reports' -a ! -L '/etc/MailScanner/reports' ]; t
ln -s /usr/share/MailScanner/reports /etc/MailScanner/reports
fi
# Check for systemd
if [ -d '/usr/lib/systemd' -a -f '/usr/lib/MailScanner/systemd/ms-systemd' ]; then
cp /usr/lib/MailScanner/systemd/ms-systemd /usr/lib/systemd/system/mailscanner.service
# create init.d symlink
if [ -d '/etc/init.d' -a ! -L '/etc/init.d/mailscanner' -a -f '/usr/lib/MailScanner/init/ms-init' ]; then
ln -s /usr/lib/MailScanner/init/ms-init /etc/init.d/mailscanner
elif [ -d '/etc/init.d' -a ! -L '/etc/init.d/mailscanner' -a -f '/usr/lib/MailScanner/init/ms-init' ]; then
ln -s /usr/lib/MailScanner/init/ms-init /etc/init.d/mailscanner
# Sort out the rc.d directories
chkconfig --add mailscanner
fi
# Sort out the rc.d directories
chkconfig --add mailscanner
echo
echo
echo To configure MailScanner, edit the following files:
@ -519,9 +528,14 @@ echo
echo
echo To activate MailScanner run the following commands:
echo
echo --SysV Init--
echo chkconfig mailscanner on
echo service mailscanner start
echo
echo --Systemd--
echo systemctl enable mailscanner.service
echo systemctl start mailscanner.service
echo
echo
%preun
@ -548,6 +562,7 @@ exit 0
%attr(755,root,root) %dir /etc/MailScanner/conf.d
%attr(755,root,root) %dir /usr/lib/MailScanner/wrapper
%attr(755,root,root) %dir /usr/lib/MailScanner/init
%attr(755,root,root) %dir /usr/lib/MailScanner/systemd
%attr(755,root,root) %dir /var/spool/MailScanner/archive
%attr(755,root,root) %dir /var/spool/MailScanner/incoming
%attr(755,root,root) %dir /var/spool/MailScanner/quarantine
@ -576,6 +591,7 @@ exit 0
%attr(755,root,root) /usr/sbin/ms-upgrade-conf
%attr(755,root,root) /usr/lib/MailScanner/init/ms-init
%attr(755,root,root) /usr/lib/MailScanner/systemd/ms-systemd
%attr(755,root,root) /usr/lib/MailScanner/wrapper/avast-wrapper
%attr(755,root,root) /usr/lib/MailScanner/wrapper/avg-autoupdate
@ -1088,6 +1104,9 @@ exit 0
%changelog
* Sun May 28 2017 Shawn Iverson <shawniverson@gmail.com>
- mailscanner systemd support for SuSE Linux
* Thu Nov 10 2016 Jerry Benton <mailscanner@mailborder.com>
- see https://github.com/MailScanner/v5/blob/master/changelog