%define milterver 0.62 %define rpmrel 1 # Put `mdk' at end of release name for builds on Mandrake %define is_mandrake %(if %{__grep} '^Mandrake Linux' /etc/redhat-release >/dev/null 2>&1; then echo 1; else echo 0; fi) %if %{is_mandrake} %define rpmrelease %{rpmrel}mdk %else %define rpmrelease %{rpmrel} %endif # Where to put the initscript %{!?_initrddir: %define _initrddir /etc/rc.d/init.d} Summary: Sender Forgery Checker mail filter module Name: sfcmilter Epoch: 1 Version: %{milterver} Release: %{rpmrelease} License: ACME Labs Freeware License Group: System Environment/Daemons Url: http://www.acme.com/software/sfcmilter/ Source0: http://www.acme.com/software/sfcmilter/sfcmilter-%{version}.tar.gz Source1: sfcmilter-RPM-HOWTO Source2: sfc-redhat.init Requires: sendmail >= 8.12 BuildRequires: sendmail-devel >= 8.12 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Prereq: chkconfig >= 1.3, shadow-utils %description Sfcmilter is a plug-in that checks whether the SMTP-level mail sender is the same as the headers-level mail sender. It is intended to be used in conjunction with spfmilter. Spfmilter only checks the sender address in the SMTP transaction; that's not a bug, it's just how SPF is defined. But it does leave you open to messages that use an honest SMTP-level address but fake the address in the message itself. Sfcmilter closes this hole by checking that the address in the message matches the address in the SMTP transaction. Since spfmilter doesn't need to look at the message body, it's more efficient to run. Therefore, you should run spfmilter first. Any messages that spfmilter lets through then get checked by sfcmilter, and if they are possible forgeries sfcmilter will add a header saying "X-Sender-Check: possibly forged". Then a third layer of the delivery process, such as bogofilter or SpamAssassin, can look for that header and weigh it appropriately to decide if the message is junk or not. %prep %setup -q %{__cp} %{SOURCE1} %{SOURCE2} . %build %configure %{__make} %{?_smp_mflags} %install [ "$RPM_BUILD_ROOT" != "/" -a -n "$RPM_BUILD_ROOT" ] && %{__rm} -rf $RPM_BUILD_ROOT %{__make} BINDIR=$RPM_BUILD_ROOT%{_sbindir} MANDIR=$RPM_BUILD_ROOT%{_mandir} install %{__mkdir} -p $RPM_BUILD_ROOT{%{_sysconfdir}/{sysconfig,mail},%{_initrddir}} %{__install} -m 755 sfc-redhat.init $RPM_BUILD_ROOT%{_initrddir}/sfcmilter %{__install} -d -m 700 $RPM_BUILD_ROOT%{_localstatedir}/run/sfcmilter touch $RPM_BUILD_ROOT%{_localstatedir}/run/sfcmilter/sfcmilter.sock touch $RPM_BUILD_ROOT%{_localstatedir}/run/sfcmilter.pid %clean [ "$RPM_BUILD_ROOT" != "/" -a -n "$RPM_BUILD_ROOT" ] && %{__rm} -rf $RPM_BUILD_ROOT %pre # Create user sfcmilt to run the milter /usr/sbin/useradd -r -d /etc/mail -s /sbin/nologin \ -c "Sender Forgery Check Milter" sfcmilt >/dev/null 2>&1 || : exit 0 %post /sbin/chkconfig --add sfcmilter exit 0 %preun if [ $1 -eq 0 ]; then /sbin/service sfcmilter stop >/dev/null 2>&1 || : /sbin/chkconfig --del sfcmilter fi exit 0 %postun if [ $1 -eq 0 ]; then %{__rm} -rf %{_localstatedir}/run/sfcmilter /usr/sbin/userdel sfcmilt >/dev/null 2>&1 || : /usr/sbin/groupdel sfcmilt >/dev/null 2>&1 || : else /sbin/service sfcmilter condrestart >/dev/null 2>&1 || : fi exit 0 %files %defattr(-,root,root) %doc README sfcmilter-RPM-HOWTO %{_sbindir}/sfcmilter %{_mandir}/man8/sfcmilter.8* %{_initrddir}/sfcmilter %dir %attr(-,sfcmilt,sfcmilt) %{_localstatedir}/run/sfcmilter %ghost %{_localstatedir}/run/sfcmilter/sfcmilter.sock %ghost %{_localstatedir}/run/sfcmilter.pid %changelog * Sun Mar 26 2006 Petr Kriątof 0.62-1 - Rebuild on FC-5 * Mon Jun 20 2005 Petr Kriątof 0.51-4 - Rebuild on FC-4 * Mon Jan 17 2005 Paul Howarth 0.51-2 - incorporate suggestions from Petr Krištof (petr at kristov dot cz) replace _var with _localstatedir macro replace /etc with _sysconfdir macro stop sfcmilter service before removal of package remove %{_localstatedir}/run/sfcmilter and contents after removal of package restart milter after package upgrade * Wed Sep 15 2004 Paul Howarth 0.51-1 - first RPM version