Blob Blame History Raw
## $Id$

## This package accepts the following switches:
##   --with spf        ...  enable SPF support
##   --without minit   ...  disable creation of 'minit' subpackage
##   --without initng  ...  disable creation of 'initng' subpackage

## Fedora Extras specific customization below...
%{!?_with_minit:%global		_without_minit		--without minit}
%{!?_with_initng:%global	_without_initng		--without initng}
##

%global username	grmilter
%global minitdir	%_sysconfdir/minit
%global minitsvcdir	%minitdir/services/grmilter
%global vardir		%_var/lib/%name
%global dbdir		%vardir/db
%global rundir		%_var/run/%name
%global __chkconfig	/sbin/chkconfig

%{!?release_func:%global release_func() %1%{?dist}}

Summary:	Milter for greylisting, the next step in the spam control war
Name:		milter-greylist
Version:	2.0.2
Release:	%release_func 2
License:	BSD w/ advertising
Group:		System Environment/Daemons
URL:		http://hcpnet.free.fr/milter-greylist/
Source0:	ftp://ftp.espci.fr/pub/milter-greylist/%name-%version.tgz
Patch0:		milter-greylist-2.0.2-sysv.patch
BuildRoot:	%_tmppath/%name-%version-%release-root
Requires:		init(%name)
Requires(pre):		fedora-usermgmt
Requires(postun):	fedora-usermgmt
BuildRequires:		bison flex m4
BuildRequires:		sendmail-devel %{?_with_spf:libspf-devel}

%package sysv
Summary:	Sysv initscripts for %name
Group:		System Environment/Daemons
Provides:	init(%name) = sysv
Requires(preun):	%name = %version-%release
Requires(postun):	%name = %version-%release
Requires(preun):	initscripts
Requires(postun):	initscripts
Requires(post):		%__chkconfig
Requires(preun):	%__chkconfig

%package minit
Summary:	Minit initscripts for %name
Group:		System Environment/Daemons
Source20:	milter-greylist.params
Provides:		init(%name) = minit
Requires:		%name = %version-%release
Requires(pre):		minit-setup
Requires(postun):	minit-setup

%package initng
Summary:	initng initscripts for %name
Group:		System Environment/Daemons
Source30:	milter-greylist.i
Provides:		init(%name) = initng
Requires:		%name = %version-%release
Requires(pre):		%_sysconfdir/initng %name
Requires(preun):	initng %name
Requires(postun):	initng %name


%description
Greylisting is a new method of blocking significant amounts of spam at
the mailserver level, but without resorting to heavyweight statistical
analysis or other heuristical (and error-prone) approaches. Consequently,
implementations are fairly lightweight, and may even decrease network
traffic and processor load on your mailserver.

This package provides a greylist filter for sendmail's milter API.


%description sysv
Greylisting is a new method of blocking significant amounts of spam at
the mailserver level, but without resorting to heavyweight statistical
analysis or other heuristical (and error-prone) approaches. Consequently,
implementations are fairly lightweight, and may even decrease network
traffic and processor load on your mailserver.

This package provides the SysV initscripts for the %name package.


%description minit
Greylisting is a new method of blocking significant amounts of spam at
the mailserver level, but without resorting to heavyweight statistical
analysis or other heuristical (and error-prone) approaches. Consequently,
implementations are fairly lightweight, and may even decrease network
traffic and processor load on your mailserver.

This package provides the minit initscripts for the %name package.


%description initng
Greylisting is a new method of blocking significant amounts of spam at
the mailserver level, but without resorting to heavyweight statistical
analysis or other heuristical (and error-prone) approaches. Consequently,
implementations are fairly lightweight, and may even decrease network
traffic and processor load on your mailserver.

This package provides the initng initscripts for the %name package.


%prep
%setup -q
%patch0 -p1 -b .sysv

perl -pi -e 's!--rpath!--XXXX!g' configure
sed  -i  -e 's!^\#user .*!user "%username"!;
             s!^\#socket !socket !' greylist.conf

for i in `find -type f`; do
    sed -e 's!/var/milter-greylist/milter-greylist.sock!%rundir/milter-greylist.sock!g;
            s!/var/milter-greylist/greylist.db!%dbdir/greylist.db!g;
	    s!/var/milter-greylist/milter-greylist.pid!%_var/run/milter-greylist.pid!g;
           ' "$i" >"$i.tmp"
    cmp -s "$i" "$i.tmp" || cat "$i.tmp" >"$i"
    rm -f "$i".tmp
done


%define makeflags	TEST=false BINDIR=%_sbindir
%build
%configure \
	--with-user=%username \
	%{?_with_spf:--with-libspf=/usr}

## is not SMP safe :(
%__make %makeflags


%install
rm -rf $RPM_BUILD_ROOT

%__install -d -m755 $RPM_BUILD_ROOT{%_initrddir,%minitsvcdir,%rundir,%dbdir,%_var/run} \
		    $RPM_BUILD_ROOT%_sysconfdir/initng/daemon
%__make DESTDIR=$RPM_BUILD_ROOT install %makeflags USER="$(id -u)"
%__install -p -m755 rc-redhat.sh $RPM_BUILD_ROOT%_initrddir/%name

# the minit stuff
ln -s %_sbindir/milter-greylist $RPM_BUILD_ROOT%minitsvcdir/run
%__install -p -m644 %SOURCE20   $RPM_BUILD_ROOT%minitsvcdir/params
touch                           $RPM_BUILD_ROOT%minitsvcdir/respawn

# the initng stuff
%__install -p -m644 %SOURCE30	$RPM_BUILD_ROOT%_sysconfdir/initng/daemon/milter-greylist.i

# create temporary files
touch $RPM_BUILD_ROOT%rundir/milter-greylist.sock
touch $RPM_BUILD_ROOT%_var/run/milter-greylist.pid

## Remove the unwanted init-methods
%{?_without_sysv:  rm -rf $RPM_BUILD_ROOT%_initrddir}
%{?_without_minit: rm -rf $RPM_BUILD_ROOT%_sysconfdir/minit}
%{?_without_initng:rm -rf $RPM_BUILD_ROOT%_sysconfdir/initng}


%pre
/usr/sbin/fedora-groupadd 7 -r %username &>/dev/null || :
/usr/sbin/fedora-useradd  7 -r -s /sbin/nologin -M -d %vardir \
                            -c 'Greylist-milter user' -g %username %username &>/dev/null || :


%postun
test "$1" != 0 || /usr/sbin/fedora-userdel  %username &>/dev/null || :
test "$1" != 0 || /usr/sbin/fedora-groupdel %username &>/dev/null || :



%post sysv
%__chkconfig --add %name

%preun sysv
test "$1" != 0 || %__chkconfig --del %name
test "$1" != 0 || %_initrddir/%name stop >/dev/null || :

%postun sysv
test "$1"  = 0 || %_initrddir/%name condrestart >/dev/null || :


%preun initng
test "$1" != 0 || {
	/sbin/ngc --stop    daemon/milter-greylist &>/dev/null || :
	/sbin/ng-update del daemon/milter-greylist &>/dev/null || :
}

%postun initng
test "$1"  = 0 || /sbin/ngc --restart daemon/milter-greylist &>/dev/null || :


%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc ChangeLog README
%_mandir/man*/*
%attr(0640,root,%username) %verify(not mtime) %config(noreplace) %_sysconfdir/mail/greylist.conf
%dir %attr(0751,%username,%username) %vardir
%dir %attr(0770,root,%username) %dbdir
%dir %attr(0700,%username,root) %rundir
%_sbindir/*

%ghost %rundir/milter-greylist.sock
%ghost %_var/run/milter-greylist.pid

%if 0%{!?_without_sysv:1}
%files sysv
  %defattr(-,root,root,-)
  %config %_initrddir/*
%endif

%if 0%{!?_without_initng:1}
%files initng
  %defattr(-,root,root,-)
  %config %_sysconfdir/initng/daemon/*
%endif

%if 0%{!?_without_minit:1}
%files minit
  %defattr(-,root,root,-)
  %dir %minitsvcdir
  %minitsvcdir/run
  %minitsvcdir/respawn
  %config(noreplace) %minitsvcdir/params
%endif

%changelog
* Sat Dec 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 2.0.2-2
- use /var/run/milter-greylist as directory for the socket (bz #162334#6)
- do not set user and socket in the sysv-initscript anymore; instead
  of uncomment the configfile entries
- ship minit params file as SOURCE instead of generating it on-the-fly
- added -initng subpackage
- minor specfile cleanups

* Sat Oct 22 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 2.0.2-1
- updated to 2.0.2

* Sat Jun 25 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 2.0-2
- updated to final 2.0

* Sat Jun 25 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 2.0-0.1.rc5
- updated to 2.0rc5
- added patch which changes the way how the user will be switched in
  the SysV initscript
- removed all other patches as they are upstream now

* Thu May 19 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.6-3
- set %%dist
- use %%global instead of %%define
- do not require 'setuidgid' for -minit anymore

* Fri Apr  7 2005 Michael Schwendt <mschwendt[AT]users.sf.net>
- rebuilt

* Thu Feb  3 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:1.6
- updated to 1.6

* Thu Oct  7 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:1.4-0.fdr.2
- rebuilt
- applied patch to build with libspf-1.0.0

* Tue Jun 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:1.4-0.fdr.1
- updated to 1.4

* Fri Jun 11 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:1.3.9-0.fdr.1
- updated to 1.3.9

* Thu Apr 29 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:1.2.1-1
- Initial build.