diff --git a/.cvsignore b/.cvsignore index e69de29..42fabd5 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +postgrey-1.27.tar.gz diff --git a/README-rpm b/README-rpm new file mode 100644 index 0000000..bce1951 --- /dev/null +++ b/README-rpm @@ -0,0 +1,19 @@ +Edit your configuration files: + +/etc/postfix/main.cf: + + smtpd_recipient_restrictions = ... + check_policy_service unix:postgrey/socket, ... + + +Or if you like to use inet sockets (modify the IP if needed): + +/etc/sysconfig/postgrey: + + OPTIONS="--inet=127.0.0.1:10023" + +/etc/postfix/main.cf: + + smtpd_recipient_restrictions = ... + check_policy_service inet:127.0.0.1:10023, ... + diff --git a/postgrey-1.27-group.patch b/postgrey-1.27-group.patch new file mode 100644 index 0000000..70d2d2c --- /dev/null +++ b/postgrey-1.27-group.patch @@ -0,0 +1,21 @@ +diff -Naupr postgrey-1.27.orig/postgrey postgrey-1.27/postgrey +--- postgrey-1.27.orig/postgrey 2006-07-17 14:53:30.000000000 +0200 ++++ postgrey-1.27/postgrey 2006-11-06 13:34:04.000000000 +0100 +@@ -441,7 +441,7 @@ sub main() + port => [ $opt{inet} ? $opt{inet} : $opt{unix}."|unix" ], + proto => $opt{inet} ? 'tcp' : 'unix', + user => $opt{user} || 'postgrey', +- group => $opt{group} || 'nogroup', ++ group => $opt{group} || 'postgrey', + dbdir => $opt{dbdir} || '/var/spool/postfix/postgrey', + setsid => $opt{daemonize} ? 1 : undef, + pid_file => $opt{daemonize} ? $opt{pidfile} : undef, +@@ -623,7 +623,7 @@ B [I...] + -d, --daemonize run in the background + --pidfile=PATH put daemon pid into this file + --user=USER run as USER (default: postgrey) +- --group=GROUP run as group GROUP (default: nogroup) ++ --group=GROUP run as group GROUP (default: postgrey) + --dbdir=PATH put db files in PATH (default: /var/spool/postfix/postgrey) + --delay=N greylist for N seconds (default: 300) + --max-age=N delete entries older than N days since the last time diff --git a/postgrey.init b/postgrey.init new file mode 100755 index 0000000..c485df3 --- /dev/null +++ b/postgrey.init @@ -0,0 +1,85 @@ +#!/bin/sh +# +# chkconfig: - 79 31 +# description: Postfix Greylisting Policy Server +# +# processname: postgrey +# + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + +# Check that networking is up. +[ ${NETWORKING} = "no" ] && exit 0 + +prog=postgrey +postgrey=/usr/sbin/$prog +DBPATH=/var/spool/postfix/postgrey +SOCKET=$DBPATH/socket +OPTIONS="--unix=$SOCKET" + +# Source an auxiliary options file if we have one, and pick up OPTIONS, +if [ -r /etc/sysconfig/$prog ]; then + . /etc/sysconfig/$prog +fi + +[ -x $postgrey -a -d $DBPATH ] || exit 0 + +RETVAL=0 + +start() { + echo -n $"Starting $prog: " + daemon $postgrey -d $OPTIONS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog +} +stop() { + echo -n $"Stopping $prog: " + killproc $postgrey + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog +} + +restart() { + stop + start +} + +reload() { + echo -n $"Reloading $prog: " + killproc $postgrey -HUP + RETVAL=$? + echo +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + reload) + reload + ;; + condrestart) + [ -f /var/lock/subsys/$prog ] && restart + ;; + status) + status $postgrey + ;; + *) + echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}" + exit 1 +esac + +exit $RETVAL diff --git a/postgrey.spec b/postgrey.spec new file mode 100644 index 0000000..baed395 --- /dev/null +++ b/postgrey.spec @@ -0,0 +1,155 @@ +%define confdir %{_sysconfdir}/postfix + +Summary: Postfix Greylisting Policy Server +Name: postgrey +Version: 1.27 +Release: 4%{?dist} +License: GPL +Group: System Environment/Daemons +Source0: http://isg.ee.ethz.ch/tools/postgrey/pub/postgrey-%{version}.tar.gz +Source1: postgrey.init +Source2: README-rpm +Patch0: postgrey-1.27-group.patch +URL: http://isg.ee.ethz.ch/tools/postgrey/ +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +# We require postfix for its directories and gid +Requires: postfix +Requires(pre): /usr/sbin/useradd +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service, /sbin/chkconfig +Requires(postun): /sbin/service +BuildArch: noarch + +%description +Postgrey is a Postfix policy server implementing greylisting. When a request +for delivery of a mail is received by Postfix via SMTP, the triplet CLIENT_IP / +SENDER / RECIPIENT is built. If it is the first time that this triplet is +seen, or if the triplet was first seen less than 5 minutes, then the mail gets +rejected with a temporary error. Hopefully spammers or viruses will not try +again later, as it is however required per RFC. + + +%prep +%setup -q +%patch0 -p1 -b .group +%{__install} -p -m 0644 %{SOURCE2} README-rpm + + +%build +# We only have perl scripts, so just "build" the man page +pod2man \ + --center="Postgrey Policy Server for Postfix" \ + --section="8" \ + postgrey > postgrey.8 + + +%install +%{__rm} -rf %{buildroot} + +# Configuration files +%{__mkdir_p} %{buildroot}%{confdir} +%{__install} -p -m 0644 postgrey_whitelist_{clients,recipients} \ + %{buildroot}%{confdir}/ +# Local whitelist file +echo "# Clients that should not be greylisted. See postgrey(8)." \ + > %{buildroot}%{confdir}/postgrey_whitelist_clients.local + +# Main script +%{__install} -D -p -m 0755 postgrey %{buildroot}%{_sbindir}/postgrey + +# Spool directory +%{__mkdir_p} %{buildroot}%{_var}/spool/postfix/postgrey + +# Init script +%{__install} -D -p -m 0755 %{SOURCE1} \ + %{buildroot}%{_sysconfdir}/rc.d/init.d/postgrey + +# Man page +%{__install} -D -p -m 0644 postgrey.8 \ + %{buildroot}%{_mandir}/man8/postgrey.8 + +# Optional report script +%{__install} -D -p -m 0755 contrib/postgreyreport \ + %{buildroot}%{_sbindir}/postgreyreport + + +%clean +%{__rm} -rf %{buildroot} + + +%pre +/usr/sbin/useradd -d %{_var}/spool/postfix/postgrey -s /sbin/nologin \ + -M -r postgrey &>/dev/null || : + +%post +/sbin/chkconfig --add postgrey + +%preun +if [ $1 -eq 0 ]; then + /sbin/service postgrey stop &>/dev/null || : + /sbin/chkconfig --del postgrey +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service postgrey condrestart &>/dev/null || : +fi + + +%files +%defattr(-, root, root, 0755) +%doc Changes COPYING README README-rpm +%{_sysconfdir}/rc.d/init.d/postgrey +%config(noreplace) %{confdir}/postgrey_whitelist_clients +%config(noreplace) %{confdir}/postgrey_whitelist_recipients +%config(noreplace) %{confdir}/postgrey_whitelist_clients.local +%{_sbindir}/postgrey +%{_sbindir}/postgreyreport +%{_mandir}/man8/postgrey.8* +%dir %attr(0751, postgrey, postfix) %{_var}/spool/postfix/postgrey/ + + +%changelog +* Mon Feb 12 2007 Matthias Saou 1.27-4 +- Silence %%setup. +- Fix init script mode in the srpm. +- Remove explicit perl(IO::Multiplex) requirement, not needed on FC6 (but + probably still on RHEL4). +- Add a comment line to the empty local whitelist file. + +* Mon Dec 4 2006 Matthias Saou 1.27-3 +- Add man page generation (Mike Wohlgemuth). + +* Fri Dec 1 2006 Matthias Saou 1.27-2 +- Include postgreyreport script. + +* Mon Nov 6 2006 Matthias Saou 1.27-1 +- Spec file cleanup. + +* Wed Jan 18 2006 Levente Farkas 1.24 +- some minor changes thanks to Peter Bieringer + +* Mon Jan 16 2006 Levente Farkas 1.24 +- upgrade to 1.24 + +* Sun Nov 13 2005 Levente Farkas 1.22 +- upgrade to 1.22 + +* Mon Aug 22 2005 Levente Farkas 1.21 +- spec file update from Luigi Iotti + +* Thu Apr 28 2005 Levente Farkas 1.21 +- update to 1.21 + +* Tue Mar 8 2005 Levente Farkas 1.18 +- update to 1.18 + +* Tue Dec 14 2004 Levente Farkas 1.17 +- update to 1.17 + +* Wed Jul 14 2004 Levente Farkas 1.14 +- guard the pre and post scripts + +* Wed Jul 7 2004 Levente Farkas 1.13 +- initial release 1.13 + diff --git a/sources b/sources index e69de29..afb845d 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +df3a8b4a0c6ab7e8e5bb5be0de096c47 postgrey-1.27.tar.gz