%define milterver 0.51 %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/%{name}-%{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 %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 "SFC Milter" sfcmilt > /dev/null 2>&1 || : %post /sbin/chkconfig --add sfcmilter %preun if [ $1 -eq 0 ]; then /sbin/service sfcmilter stop > /dev/null 2>&1 || : /sbin/chkconfig --del sfcmilter fi %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 %files %defattr(-,root,root) %{_sbindir}/sfcmilter %{_mandir}/man8/sfcmilter.8* %{_initrddir}/sfcmilter %dir %attr(-,sfcmilt,sfcmilt) %{_localstatedir}/run/sfcmilter %doc README sfcmilter-RPM-HOWTO %changelog * Sun Jan 9 2005 Petr Krištof 0.51-2 - %pre, %post, %preun, %postun scripts fix * Wed Sep 15 2004 Paul Howarth 0.51-1 - First RPM version.