Move milter apps to /usr/lib/pymilter
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# A simple milter that has grown quite a bit.
|
# A simple milter that has grown quite a bit.
|
||||||
# $Log$
|
# $Log$
|
||||||
|
# Revision 1.110 2007/07/02 03:06:10 customdesigned
|
||||||
|
# Ban ips on bad mailfrom offenses as well as bad rcpts.
|
||||||
|
#
|
||||||
# Revision 1.109 2007/06/23 20:53:05 customdesigned
|
# Revision 1.109 2007/06/23 20:53:05 customdesigned
|
||||||
# Ban IPs based on too many invalid recipients in a connection. Requires
|
# Ban IPs based on too many invalid recipients in a connection. Requires
|
||||||
# configuring check_user. Tighten HELO best_guess policy.
|
# configuring check_user. Tighten HELO best_guess policy.
|
||||||
@@ -292,6 +295,8 @@ def read_config(list):
|
|||||||
'case_sensitive_localpart': 'no'
|
'case_sensitive_localpart': 'no'
|
||||||
})
|
})
|
||||||
cp.read(list)
|
cp.read(list)
|
||||||
|
if cp.has_option('milter','datadir'):
|
||||||
|
os.chdir(cp.get('milter','datadir'))
|
||||||
|
|
||||||
# milter section
|
# milter section
|
||||||
tempfile.tempdir = cp.get('milter','tempdir')
|
tempfile.tempdir = cp.get('milter','tempdir')
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
# config: /etc/mail/pymilter.cfg
|
# config: /etc/mail/pymilter.cfg
|
||||||
# pidfile: /var/run/milter/milter.pid
|
# pidfile: /var/run/milter/milter.pid
|
||||||
|
|
||||||
python="python2.3"
|
python="python2.4"
|
||||||
|
|
||||||
pidof() {
|
pidof() {
|
||||||
set - ""
|
set - ""
|
||||||
@@ -32,7 +32,11 @@ start() {
|
|||||||
# Start daemons.
|
# Start daemons.
|
||||||
|
|
||||||
echo -n "Starting $prog: "
|
echo -n "Starting $prog: "
|
||||||
daemon --check milter --user mail /var/log/milter/start.sh
|
if ! test -d /var/run/milter; then
|
||||||
|
mkdir -p /var/run/milter
|
||||||
|
chown mail:mail /var/run/milter
|
||||||
|
fi
|
||||||
|
daemon --check milter --user mail /var/log/milter/start.sh milter bms
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
echo
|
echo
|
||||||
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/milter
|
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/milter
|
||||||
|
|||||||
+6
-2
@@ -8,7 +8,7 @@
|
|||||||
# config: /etc/mail/pymilter.cfg
|
# config: /etc/mail/pymilter.cfg
|
||||||
# pidfile: /var/run/milter/milter.pid
|
# pidfile: /var/run/milter/milter.pid
|
||||||
|
|
||||||
python="python2.3"
|
python="python2.4"
|
||||||
|
|
||||||
pidof() {
|
pidof() {
|
||||||
set - ""
|
set - ""
|
||||||
@@ -32,7 +32,11 @@ start() {
|
|||||||
# Start daemons.
|
# Start daemons.
|
||||||
|
|
||||||
echo -n "Starting $prog: "
|
echo -n "Starting $prog: "
|
||||||
daemon --check milter --user mail /var/log/milter/start.sh
|
if ! test -d /var/run/milter; then
|
||||||
|
mkdir -p /var/run/milter
|
||||||
|
chown mail:mail /var/run/milter
|
||||||
|
fi
|
||||||
|
daemon --check milter --user mail /var/log/milter/start.sh milter bms
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
echo
|
echo
|
||||||
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/milter
|
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/milter
|
||||||
|
|||||||
+53
-17
@@ -23,6 +23,11 @@
|
|||||||
%else
|
%else
|
||||||
%define python python
|
%define python python
|
||||||
%endif
|
%endif
|
||||||
|
%ifos aix4.1
|
||||||
|
%define libdir /var/log/milter
|
||||||
|
%else
|
||||||
|
%define libdir /usr/lib/pymilter
|
||||||
|
%endif
|
||||||
|
|
||||||
Summary: Python interface to sendmail milter API
|
Summary: Python interface to sendmail milter API
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
@@ -55,7 +60,17 @@ Summary: BMS spam and reputation milter
|
|||||||
Requires: pyspf >= 2.0.4
|
Requires: pyspf >= 2.0.4
|
||||||
|
|
||||||
%description -n milter
|
%description -n milter
|
||||||
An effective spam filtering and reputation tracking mail application.
|
A complex but effective spam filtering, SPF checking, and reputation tracking
|
||||||
|
mail application. It uses pydspam if installed for bayesian filtering.
|
||||||
|
|
||||||
|
%package spf
|
||||||
|
Group: Applications/System
|
||||||
|
Summary: BMS spam and reputation milter
|
||||||
|
Requires: pyspf >= 2.0.4
|
||||||
|
|
||||||
|
%description spf
|
||||||
|
A simple mail filter to add Received-SPF headers and reject forged mail.
|
||||||
|
Rejection policy is configured via sendmail access file.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup
|
%setup
|
||||||
@@ -75,7 +90,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
mkdir -p $RPM_BUILD_ROOT/var/log/milter
|
mkdir -p $RPM_BUILD_ROOT/var/log/milter
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/mail
|
mkdir -p $RPM_BUILD_ROOT/etc/mail
|
||||||
mkdir $RPM_BUILD_ROOT/var/log/milter/save
|
mkdir $RPM_BUILD_ROOT/var/log/milter/save
|
||||||
cp bms.py *.txt $RPM_BUILD_ROOT/var/log/milter
|
mkdir -p $RPM_BUILD_ROOT%{libdir}
|
||||||
|
cp *.txt $RPM_BUILD_ROOT/var/log/milter
|
||||||
|
cp bms.py spfmilter.py $RPM_BUILD_ROOT%{libdir}
|
||||||
cp milter.cfg $RPM_BUILD_ROOT/etc/mail/pymilter.cfg
|
cp milter.cfg $RPM_BUILD_ROOT/etc/mail/pymilter.cfg
|
||||||
|
|
||||||
# logfile rotation
|
# logfile rotation
|
||||||
@@ -109,7 +126,7 @@ EOF
|
|||||||
chmod a+x $RPM_BUILD_ROOT/etc/cron.daily/milter
|
chmod a+x $RPM_BUILD_ROOT/etc/cron.daily/milter
|
||||||
|
|
||||||
%ifos aix4.1
|
%ifos aix4.1
|
||||||
cat >$RPM_BUILD_ROOT/var/log/milter/start.sh <<'EOF'
|
cat >$RPM_BUILD_ROOT%{libdir}/start.sh <<'EOF'
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
cd /var/log/milter
|
cd /var/log/milter
|
||||||
# uncomment to enable sgmlop if installed
|
# uncomment to enable sgmlop if installed
|
||||||
@@ -117,15 +134,10 @@ cd /var/log/milter
|
|||||||
exec /usr/local/bin/python bms.py >>milter.log 2>&1
|
exec /usr/local/bin/python bms.py >>milter.log 2>&1
|
||||||
EOF
|
EOF
|
||||||
%else
|
%else
|
||||||
cat >$RPM_BUILD_ROOT/var/log/milter/start.sh <<'EOF'
|
cp start.sh $RPM_BUILD_ROOT%{libdir}
|
||||||
#!/bin/sh
|
|
||||||
cd /var/log/milter
|
|
||||||
exec >>milter.log 2>&1
|
|
||||||
%{python} bms.py &
|
|
||||||
echo $! >/var/run/milter/milter.pid
|
|
||||||
EOF
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
|
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
|
||||||
cp %{sysvinit} $RPM_BUILD_ROOT/etc/rc.d/init.d/milter
|
cp %{sysvinit} $RPM_BUILD_ROOT/etc/rc.d/init.d/milter
|
||||||
|
cp spfmilter.rc $RPM_BUILD_ROOT/etc/rc.d/init.d/spfmilter
|
||||||
ed $RPM_BUILD_ROOT/etc/rc.d/init.d/milter <<'EOF'
|
ed $RPM_BUILD_ROOT/etc/rc.d/init.d/milter <<'EOF'
|
||||||
/^python=/
|
/^python=/
|
||||||
c
|
c
|
||||||
@@ -135,7 +147,16 @@ w
|
|||||||
q
|
q
|
||||||
EOF
|
EOF
|
||||||
%endif
|
%endif
|
||||||
chmod a+x $RPM_BUILD_ROOT/var/log/milter/start.sh
|
ed $RPM_BUILD_ROOT/etc/rc.d/init.d/spfmilter <<'EOF'
|
||||||
|
/^python=/
|
||||||
|
c
|
||||||
|
python="%{python}"
|
||||||
|
.
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
||||||
|
%endif
|
||||||
|
chmod a+x $RPM_BUILD_ROOT%{libdir}/start.sh
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/var/run/milter
|
mkdir -p $RPM_BUILD_ROOT/var/run/milter
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/share/sendmail-cf/hack
|
mkdir -p $RPM_BUILD_ROOT/usr/share/sendmail-cf/hack
|
||||||
@@ -143,21 +164,29 @@ cp -p rhsbl.m4 $RPM_BUILD_ROOT/usr/share/sendmail-cf/hack
|
|||||||
|
|
||||||
%ifos aix4.1
|
%ifos aix4.1
|
||||||
%post
|
%post
|
||||||
mkssys -s milter -p /var/log/milter/start.sh -u 25 -S -n 15 -f 9 -G mail || :
|
mkssys -s milter -p %{libdir}/start.sh -u 25 -S -n 15 -f 9 -G mail || :
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 ]; then
|
||||||
rmssys -s milter || :
|
rmssys -s milter || :
|
||||||
fi
|
fi
|
||||||
%else
|
%else
|
||||||
%post
|
%post -n milter
|
||||||
#echo "pythonsock has moved to /var/run/milter, update /etc/mail/sendmail.cf"
|
#echo "pythonsock has moved to /var/run/milter, update /etc/mail/sendmail.cf"
|
||||||
/sbin/chkconfig --add milter
|
/sbin/chkconfig --add milter
|
||||||
|
|
||||||
%preun
|
%preun -n milter
|
||||||
if [ $1 = 0 ]; then
|
if [ $1 = 0 ]; then
|
||||||
/sbin/chkconfig --del milter
|
/sbin/chkconfig --del milter
|
||||||
fi
|
fi
|
||||||
|
%post spf
|
||||||
|
#echo "pythonsock has moved to /var/run/milter, update /etc/mail/sendmail.cf"
|
||||||
|
/sbin/chkconfig --add spfmilter
|
||||||
|
|
||||||
|
%preun spf
|
||||||
|
if [ $1 = 0 ]; then
|
||||||
|
/sbin/chkconfig --del spfmilter
|
||||||
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
@@ -166,6 +195,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%files -f INSTALLED_FILES
|
%files -f INSTALLED_FILES
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc README HOWTO ChangeLog NEWS TODO CREDITS sample.py milter-template.py
|
%doc README HOWTO ChangeLog NEWS TODO CREDITS sample.py milter-template.py
|
||||||
|
%config %{libdir}/start.sh
|
||||||
|
|
||||||
%files -n milter
|
%files -n milter
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@@ -178,10 +208,8 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%defattr(-,mail,mail)
|
%defattr(-,mail,mail)
|
||||||
%endif
|
%endif
|
||||||
%dir /var/log/milter
|
%dir /var/log/milter
|
||||||
%dir /var/run/milter
|
|
||||||
%dir /var/log/milter/save
|
%dir /var/log/milter/save
|
||||||
%config /var/log/milter/start.sh
|
%config %{libdir}/bms.py
|
||||||
%config /var/log/milter/bms.py
|
|
||||||
%config(noreplace) /var/log/milter/strike3.txt
|
%config(noreplace) /var/log/milter/strike3.txt
|
||||||
%config(noreplace) /var/log/milter/softfail.txt
|
%config(noreplace) /var/log/milter/softfail.txt
|
||||||
%config(noreplace) /var/log/milter/fail.txt
|
%config(noreplace) /var/log/milter/fail.txt
|
||||||
@@ -191,6 +219,12 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%config(noreplace) /etc/mail/pymilter.cfg
|
%config(noreplace) /etc/mail/pymilter.cfg
|
||||||
/usr/share/sendmail-cf/hack/rhsbl.m4
|
/usr/share/sendmail-cf/hack/rhsbl.m4
|
||||||
|
|
||||||
|
%files spf
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%dir /var/log/milter
|
||||||
|
%{libdir}/spfmilter.py
|
||||||
|
%config(noreplace) /etc/mail/spfmilter.cfg
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Jan 05 2007 Stuart Gathman <stuart@bmsi.com> 0.8.8-1
|
* Fri Jan 05 2007 Stuart Gathman <stuart@bmsi.com> 0.8.8-1
|
||||||
- move AddrCache, parse_addr, iniplist to Milter package
|
- move AddrCache, parse_addr, iniplist to Milter package
|
||||||
@@ -200,6 +234,8 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
- private_relay config option
|
- private_relay config option
|
||||||
- persist delayed DSN blacklisting
|
- persist delayed DSN blacklisting
|
||||||
- handle gossip server restart without disabling gossip
|
- handle gossip server restart without disabling gossip
|
||||||
|
- split out pymilter and pymilter-spf packages
|
||||||
|
- move milter apps to /usr/lib/pymilter
|
||||||
* Sat Nov 04 2006 Stuart Gathman <stuart@bmsi.com> 0.8.7-1
|
* Sat Nov 04 2006 Stuart Gathman <stuart@bmsi.com> 0.8.7-1
|
||||||
- More lame bounce heuristics
|
- More lame bounce heuristics
|
||||||
- SPF moved to pyspf RPM
|
- SPF moved to pyspf RPM
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ def read_config(list):
|
|||||||
"Return new config object."
|
"Return new config object."
|
||||||
cp = MilterConfigParser()
|
cp = MilterConfigParser()
|
||||||
cp.read(list)
|
cp.read(list)
|
||||||
|
if cp.has_option('milter','datadir'):
|
||||||
|
os.chdir(cp.get('milter','datadir'))
|
||||||
conf = Config()
|
conf = Config()
|
||||||
conf.socketname = cp.getdefault('milter','socketname', '/tmp/spfmiltersock')
|
conf.socketname = cp.getdefault('milter','socketname', '/tmp/spfmiltersock')
|
||||||
conf.miltername = cp.getdefault('milter','name','pyspffilter')
|
conf.miltername = cp.getdefault('milter','name','pyspffilter')
|
||||||
|
|||||||
Executable
+85
@@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# spfmilter This shell script takes care of starting and stopping spfmilter.
|
||||||
|
#
|
||||||
|
# chkconfig: 2345 80 30
|
||||||
|
# description: a process that checks SPF for messages sent through sendmail.
|
||||||
|
# processname: spfmilter
|
||||||
|
# config: /etc/mail/spfmilter.cfg
|
||||||
|
# pidfile: /var/run/milter/spfmilter.pid
|
||||||
|
|
||||||
|
python="python2.4"
|
||||||
|
|
||||||
|
pidof() {
|
||||||
|
set - ""
|
||||||
|
if set - `ps -e -o pid,cmd | grep "${python} spfmilter.py"` &&
|
||||||
|
[ "$2" != "grep" ]; then
|
||||||
|
echo $1
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Source function library.
|
||||||
|
. /etc/rc.d/init.d/functions
|
||||||
|
|
||||||
|
[ -x /usr/lib/pymilter/start.sh ] || exit 0
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
prog="spfmilter"
|
||||||
|
|
||||||
|
start() {
|
||||||
|
# Start daemons.
|
||||||
|
|
||||||
|
echo -n "Starting $prog: "
|
||||||
|
if ! test -d /var/run/milter; then
|
||||||
|
mkdir -p /var/run/milter
|
||||||
|
chown mail:mail /var/run/milter
|
||||||
|
fi
|
||||||
|
daemon --check milter --user mail /usr/lib/pymilter/start.sh spfmilter
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/spfmilter
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
# Stop daemons.
|
||||||
|
echo -n "Shutting down $prog: "
|
||||||
|
killproc milter
|
||||||
|
RETVAL=$?
|
||||||
|
echo
|
||||||
|
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/spfmilter
|
||||||
|
return $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
# See how we were called.
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
restart|reload)
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
RETVAL=$?
|
||||||
|
;;
|
||||||
|
condrestart)
|
||||||
|
if [ -f /var/lock/subsys/spfmilter ]; then
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
RETVAL=$?
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status spfmilter
|
||||||
|
RETVAL=$?
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart|condrestart|status}"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit $RETVAL
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
appname="$1"
|
||||||
|
script="${2:-${appname}}"
|
||||||
|
datadir=/var/log/milter
|
||||||
|
exec >>${datadir}/${appname}.log 2>&1
|
||||||
|
if test -s ${datadir}/${script}.py; then
|
||||||
|
cd %{datadir} # use version in log dir if it exists for debugging
|
||||||
|
else
|
||||||
|
cd /usr/lib/pymilter
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /var/log/milter
|
||||||
|
exec >>${appname}.log 2>&1
|
||||||
|
python2.4 ${appname}.py &
|
||||||
|
echo $! >/var/run/milter/${appname}.pid
|
||||||
Reference in New Issue
Block a user