From 4ad3b1699283caeed9c5808dcf3f4855862c9d6f Mon Sep 17 00:00:00 2001 From: Vasiliy Glazov Date: Dec 27 2019 06:04:34 +0000 Subject: Merge branch 'master' into epel8 --- diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 --- a/.cvsignore +++ /dev/null diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96709de --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +postgrey-1.32.tar.gz +/postgrey-1.34.tar.gz +/postgrey-1.36.tar.gz +/postgrey-1.37.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index 79bca95..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: postgrey -# $Id$ -NAME := postgrey -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/README-rpm b/README-rpm new file mode 100644 index 0000000..7e3f3cb --- /dev/null +++ b/README-rpm @@ -0,0 +1,34 @@ +1. To make use of postgrey in postfix, edit postfix configuration file: + +/etc/postfix/main.cf: + + smtpd_recipient_restrictions = ... + check_policy_service unix:postgrey/socket, ... + +Or if TCP sockets (modify IP / port if needed) is preferred, first change +POSTGREY_TYPE: + +/etc/sysconfig/postgrey: + + POSTGREY_TYPE="--inet=127.0.0.1:10023" + +then modify postfix configuration file: + +/etc/postfix/main.cf: + + smtpd_recipient_restrictions = ... + check_policy_service inet:127.0.0.1:10023, ... + +After above steps, please restart the postfix service to make sure postfix has +loaded the changes. And don't forget to activate the service on startup! + +2. If --privacy option is passed to postgrey in /etc/sysconfig/postgrey, make +sure perl(Digest::SHA) is installed, using dnf to install if not available: + + dnf install perl\(Digest::SHA\) + +Don't forget to escape the parentheses if other perl modules are absent. + +3. Postgrey could be used with exim if you want, but need to modify the +systemd service file like removing the dependency of postfix.service. More +details in README.exim underneath /usr/share/doc/postgrey. diff --git a/postgrey.init b/postgrey.init new file mode 100755 index 0000000..17f9f19 --- /dev/null +++ b/postgrey.init @@ -0,0 +1,113 @@ +#!/bin/sh +# +# postgrey Postfix Greylisting Policy Server +# +# chkconfig: - 79 31 +# description: Postfix Greylisting Policy Server + +### BEGIN INIT INFO +# Provides: postgrey +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Should-Start: +# Should-Stop: +# Default-Start: +# Default-Stop: 0 1 2 3 4 5 6 +# Short-Description: Postfix Greylisting Policy Server +# 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. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/sbin/postgrey" +prog="postgrey" +options="--unix=/var/spool/postfix/postgrey/socket" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + echo -n $"Starting $prog: " + daemon $exec -d $options + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + echo -n $"Reloading $prog: " + killproc $prog -HUP + retval=$? + echo + return $retval +} + +force_reload() { + restart +} + +rh_status() { + status $prog +} + +rh_status_q() { + rh_status &>/dev/null +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? + diff --git a/postgrey.service b/postgrey.service new file mode 100644 index 0000000..9da9c13 --- /dev/null +++ b/postgrey.service @@ -0,0 +1,26 @@ +[Unit] +Description=Postfix Greylisting Service +Documentation=man:postgrey(8) +Before=postfix.service + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/postgrey +ExecStartPre=-/bin/rm -f /var/run/postgrey.pid +PIDFile=/var/run/postgrey.pid +ExecStart=/usr/sbin/postgrey \ + $POSTGREY_TYPE \ + $POSTGREY_PID \ + $POSTGREY_GROUP \ + $POSTGREY_USER \ + '--greylist-text=Greylisted for %%s seconds' \ + --daemonize \ + $POSTGREY_DELAY \ + $POSTGREY_OPTS + +Restart=always +RestartSec=1 +TimeoutSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/postgrey.spec b/postgrey.spec new file mode 100644 index 0000000..d8646d3 --- /dev/null +++ b/postgrey.spec @@ -0,0 +1,301 @@ +%global confdir %{_sysconfdir}/postfix + +Name: postgrey +Version: 1.37 +Release: 9%{?dist} +Summary: Postfix Greylisting Policy Server +# File headers only state "GNU GPL", but the LICENSE sections state v2 and "any +# later version" +License: GPLv2+ +URL: http://postgrey.schweikert.ch/ +Source0: http://postgrey.schweikert.ch/pub/postgrey-%{version}.tar.gz +Source1: postgrey.service +Source2: README-rpm +Source3: postgrey.sysconfig +BuildArch: noarch +BuildRequires: perl-generators +BuildRequires: perl-podlators +BuildRequires: systemd +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +## Note: If --privacy specified, perl(Digest::SHA) will be needed. +#Requires: perl(BerkeleyDB) +#Requires: perl(Fcntl) +#Requires: perl(Getopt::Long) +#Requires: perl(IO::Multiplex) +#Requires: perl(Net::DNS) +#Requires: perl(Net::Server) +#Requires: perl(Pod::Usage) +#Requires: perl(POSIX) +#Requires: perl(strict) +#Requires: perl(Sys::Hostname) +#Requires: perl(Sys::Syslog) +# Requiring postfix for its directories and GID. +Recommends: postfix +Requires(pre): shadow-utils +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%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 +# Set default group tp postgrey. +sed -i 's|nogroup|postgrey|g' postgrey +# No perldoc, man is enough. +sed -i 's|POD ||g;s|perldoc|man|g' README +install -pm0644 %{SOURCE2} README.Fedora + +%build +# We only have perl scripts, so just "build" the man page. +pod2man \ + --center="Postgrey Policy Server for Postfix" \ + --section="8" \ + --release="Postgrey %{version}" \ + postgrey > postgrey.8 + +%install +# Configuration files. +mkdir -p %{buildroot}%{confdir} +install -pm0644 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 -pDm0755 postgrey %{buildroot}%{_sbindir}/postgrey + +# Spool directory. +mkdir -p %{buildroot}%{_localstatedir}/spool/postfix/postgrey + +# Systemd service. +install -pDm0644 %{SOURCE1} \ + %{buildroot}%{_unitdir}/postgrey.service + +# Sysconfig file. +install -pDm0644 %{SOURCE3} \ + %{buildroot}%{_sysconfdir}/sysconfig/postgrey + +# Manpage. +install -pDm0644 postgrey.8 \ + %{buildroot}%{_mandir}/man8/postgrey.8 + +# Optional report script. +install -pDm0755 contrib/postgreyreport \ + %{buildroot}%{_sbindir}/postgreyreport + +%pre +getent group postgrey >/dev/null || groupadd -r postgrey +getent passwd postgrey >/dev/null || \ + useradd -r -g postgrey -d %{_localstatedir}/spool/postfix/postgrey -s /sbin/nologin \ + -c "Postfix Greylisting Service" postgrey +exit 0 + +%post +%systemd_post postgrey.service + +%preun +%systemd_preun postgrey.service + +%postun +%systemd_postun postgrey.service + +%triggerun -- postgrey < 1.34-3 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply postgrey +# to migrate them to systemd targets +/usr/bin/systemd-sysv-convert --save postgrey >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del postgrey >/dev/null 2>&1 || : +/bin/systemctl try-restart postgrey.service >/dev/null 2>&1 || : + +%files +%doc Changes README README.exim README.Fedora +%license COPYING +%{_unitdir}/postgrey.service +%{_sysconfdir}/sysconfig/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) %{_localstatedir}/spool/postfix/postgrey/ + +%changelog +* Fri Jul 26 2019 Fedora Release Engineering - 1.37-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu May 30 2019 Jitka Plesnikova - 1.37-8 +- Perl 5.30 rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 1.37-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 1.37-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jun 28 2018 Jitka Plesnikova - 1.37-5 +- Perl 5.28 rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 1.37-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.37-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sun Jun 04 2017 Jitka Plesnikova - 1.37-2 +- Perl 5.26 rebuild + +* Sat Mar 11 2017 Nils Philippsen - 1.37-1 +- version 1.37 +- fix syntax error in sysconfig file (#1292066) + +* Sat Feb 11 2017 Fedora Release Engineering - 1.36-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun May 15 2016 Jitka Plesnikova - 1.36-4 +- Perl 5.24 rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 1.36-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Nov 26 2015 Petr Pisar - 1.36-2 +- Rebuild against fixed "file" tool that broke Perl dependencies (bug #1279401) + +* Fri Sep 04 2015 Christopher Meng - 1.36-1 +- Update to 1.36 (1.35 skipped) +- Refine release section of postgrey manpage. +- Refine configuration instructions. + +* Thu Jun 18 2015 Fedora Release Engineering - 1.34-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 03 2015 Jitka Plesnikova - 1.34-16 +- Perl 5.22 rebuild + +* Fri Nov 07 2014 Petr Pisar - 1.34-15 +- Build-require perl-podlators for pod2man (bug #1161477) + +* Wed Aug 27 2014 Jitka Plesnikova - 1.34-14 +- Perl 5.20 rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.34-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Feb 06 2014 Christopher Meng - 1.34-12 +- Correct the syntax of systemd unit to support option with space-separated content. + +* Tue Jan 21 2014 Christopher Meng - 1.34-11 +- Let perl magic determine the dependencies. +- Fix systemd unit typo. + +* Tue Jan 14 2014 Christopher Meng - 1.34-10 +- Fix typo in the SPEC. + +* Sun Jan 12 2014 Christopher Meng - 1.34-9 +- Update systemd service unit to be more powerful. +- SPEC cleanup(BZ#850279). +- Add missing dependencies(BZ#1039355). + +* Wed Jan 01 2014 Nils Philippsen - 1.34-8 +- make postgrey work with perl 5.18 (#1039551) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.34-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jul 17 2013 Petr Pisar - 1.34-6 +- Perl 5.18 rebuild +- Build-require systemd-units + +* Thu Feb 14 2013 Fedora Release Engineering - 1.34-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 1.34-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Mar 20 2012 Jon Ciesla - 1.34-3 +- Migrate to systemd, BZ 714430. + +* Sat Jan 14 2012 Fedora Release Engineering - 1.34-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Jun 7 2011 Matthias Saou 1.34-1 +- Update to 1.34. + +* Wed Feb 09 2011 Fedora Release Engineering - 1.32-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Jul 26 2009 Fedora Release Engineering - 1.32-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sun Apr 12 2009 Matthias Saou 1.32-1 +- Update to 1.32. +- Update init script to the new style. +- Slightly update README-rpm instructions. + +* Thu Feb 26 2009 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu May 22 2008 Matthias Saou 1.31-1 +- Update to 1.31. + +* Mon Aug 6 2007 Matthias Saou 1.30-1 +- Update to 1.30. +- Update License field. + +* Fri Jun 22 2007 Matthias Saou 1.28-1 +- Update to 1.28. +- Update URL to the new homepage. + +* 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/postgrey.sysconfig b/postgrey.sysconfig new file mode 100644 index 0000000..b2aa724 --- /dev/null +++ b/postgrey.sysconfig @@ -0,0 +1,25 @@ +# Postgrey offers 2 listening types, --inet and --unix. As default, Fedora +# postgrey works under UNIX socket, but, changing to TCP socket on user's own +# is also available, for instance, let it work at 10023 port of localhost: +# --inet=10023 +# To be more detailed, there is another way if you still run it at localhost: +# --inet=127.0.0.1:10023 +POSTGREY_TYPE="--unix=/var/spool/postfix/postgrey/socket" + +# If postgrey works under UNIX socket way, PID file can be specified to +# custom location, note that no need to set this if postgrey is working +# under TCP socket way. +POSTGREY_PID="--pidfile=/var/run/postgrey.pid" + +# Name of group which postgrey belongs, default is postgrey +POSTGREY_GROUP="--group=postgrey" + +# Name of user which postgrey belongs, default is postgrey +POSTGREY_USER="--user=postgrey" + +# DELAY +POSTGREY_DELAY="--delay=60" + +# For more options can be used, please read manpage or execute `postgrey -h`. +# Custom options. +POSTGREY_OPTS="" diff --git a/sources b/sources index e69de29..eaf5fbc 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +SHA512 (postgrey-1.37.tar.gz) = 369968212ea60539efc0d4a7ae84f7c3ce13f5622e6ee070a0089423ef81ca8f7541ebd20289291d0e6a3aec2ca30dbc9c0d9c0a6f0a686adfadb5d0dd7830ca