# $Id: qpsmtpd.spec,v 1.21 2009/11/03 21:53:04 slords Exp $ Name: qpsmtpd Version: 0.83 Release: 0.5%{?dist} Summary: qpsmtpd + qpsmtpd-apache + qpsmtpd-async License: distributable Group: System Environment/Daemons URL: http://smtpd.develooper.com/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: perl >= 0:5.00503 BuildArchitectures: noarch Requires: perl(Mail::Header), perl(Net::DNS) perl(Net::IP) Requires(pre): coreutils, shadow-utils, perl Source0: %{name}-%{version}.tar.gz Source1: qpsmtpd-forkserver.rc Source2: qpsmtpd-forkserver.sysconfig Source3: qpsmtpd-plugin-file_connection Source4: qpsmtpd-xinetd Source5: in.qpsmtpd Source6: qpsmtpd.conf Source7: README.selinux Patch10: qpsmtpd-0.83-loginit.patch Patch100: qpsmtpd-0.40-badrcptto_allowrelay.patch Patch101: qpsmtpd-0.83-peer_hooks.patch Patch102: qpsmtpd-0.83-clamd_conf.patch Patch103: qpsmtpd-0.83-clamav-headers.patch %description qpsmtpd is a flexible smtpd daemon written in Perl. Apart from the core SMTP features, all functionality is implemented in small "extension plugins" using the easy to use object oriented plugin API. qpsmtpd was originally written as a drop-in qmail-smtpd replacement, but now it also includes a smtp forward and a postfix "backend". %package apache Requires: perl(mod_perl2) Summary: mod_perl-2 connection handler for qpsmtpd Group: System Environment/Daemons %package async Summary: qpsmtpd using async I/O in a single process Group: System Environment/Daemons %description apache This module implements a mod_perl/apache 2.0 connection handler that turns Apache into an SMTP server using Qpsmtpd. %description async This package contains the Qpsmtpd::PollServer module, which allows qpsmtd to handle many connections in a single process and the qpsmpd-async which uses it. %prep %setup -q %patch10 -p1 %patch100 -p1 %patch101 -p1 %patch102 -p1 %patch103 -p1 %build CFLAGS="$RPM_OPT_FLAGS" perl Makefile.PL INSTALLSITELIB=%{_prefix}/lib/perl5/site_perl make %clean rm -rf $RPM_BUILD_ROOT %install rm -rf $RPM_BUILD_ROOT eval `perl '-V:installarchlib'` mkdir -p $RPM_BUILD_ROOT/$installarchlib if grep -q DESTDIR Makefile then make DESTDIR=$RPM_BUILD_ROOT find blib/lib -name '*.pm.*' -exec rm -f {} \; make DESTDIR=$RPM_BUILD_ROOT install else make PREFIX=$RPM_BUILD_ROOT/usr find blib/lib -name '*.pm.*' -exec rm -f {} \; make PREFIX=$RPM_BUILD_ROOT/usr install fi mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/%{name} rm -f ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins/*.* cp -r plugins ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name} rm -f ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/*.* cp -r config.sample/* ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/ echo %{_datadir}/%{name}/plugins > ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/plugin_dirs echo %{_localstatedir}/spool/qpsmtpd > ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/spool_dir echo logging/file_connection loglevel LOGINFO %{_localstatedir}/log/qpsmtpd/%Y-%m-%d > ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/logging mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} cp %{SOURCE1} ${RPM_BUILD_ROOT}%{_initrddir}/qpsmtpd-forkserver mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig cp %{SOURCE2} ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/qpsmtpd-forkserver cp %{SOURCE3} ${RPM_BUILD_ROOT}%{_datadir}/%{name}/plugins/logging/file_connection mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/spool/qpsmtpd mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/log/qpsmtpd mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/xinetd.d cp %{SOURCE4} ${RPM_BUILD_ROOT}%{_sysconfdir}/xinetd.d/smtp mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} cp %{SOURCE5} ${RPM_BUILD_ROOT}%{_sbindir}/in.smtp mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf.d cp %{SOURCE6} ${RPM_BUILD_ROOT}%{_sysconfdir}/httpd/conf.d mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-apache-%{version} cp %{SOURCE7} $RPM_BUILD_ROOT%{_docdir}/%{name}-apache-%{version} rm -f ${RPM_BUILD_ROOT}%{_bindir}/%{name}-prefork [ -x /usr/lib/rpm/brp-compress ] && /usr/lib/rpm/brp-compress find ${RPM_BUILD_ROOT}%{_prefix} \( -name perllocal.pod -o -name .packlist \) -exec rm {} \; find ${RPM_BUILD_ROOT}%{_prefix} -type f -print | \ sed "s@^$RPM_BUILD_ROOT@@g" | \ grep -v [Aa]sync | \ grep -v packaging | \ grep -v README.selinux | \ grep -v /Apache | \ grep -v /Danga | \ grep -v Qpsmtpd/ConfigServer.pm | \ grep -v Qpsmtpd/PollServer.pm > %{name}-%{version}-%{release}-filelist if [ "$(cat %{name}-%{version}-%{release}-filelist)X" = "X" ] ; then echo "ERROR: EMPTY FILE LIST" exit -1 fi %files -f %{name}-%{version}-%{release}-filelist %defattr(-,root,root) %doc CREDITS Changes LICENSE README README.plugins STATUS %{_initrddir}/qpsmtpd-forkserver %config(noreplace) %{_sysconfdir}/qpsmtpd/* %config(noreplace) %{_sysconfdir}/xinetd.d/smtp %config(noreplace) %{_sysconfdir}/sysconfig/qpsmtpd-forkserver %attr(2750,qpsmtpd,clamav) %dir %{_localstatedir}/spool/qpsmtpd %attr(2750,smelog,smelog) %dir %{_localstatedir}/log/qpsmtpd %files apache %defattr(-,root,root) %{_prefix}/lib/perl5/site_perl/Apache/Qpsmtpd.pm %{_mandir}/man3/Apache::Qpsmtpd.3pm.gz %config(noreplace) %{_sysconfdir}/httpd/conf.d/* %doc %{_docdir}/%{name}-apache-%{version}/README.selinux %files async %defattr(-,root,root) %{_bindir}/qpsmtpd-async %{_prefix}/lib/perl5/site_perl/Danga/Client.pm %{_prefix}/lib/perl5/site_perl/Danga/TimeoutSocket.pm %{_prefix}/lib/perl5/site_perl/Qpsmtpd/ConfigServer.pm %{_prefix}/lib/perl5/site_perl/Qpsmtpd/Plugin/Async/DNSBLBase.pm %{_prefix}/lib/perl5/site_perl/Qpsmtpd/PollServer.pm %{_mandir}/man1/qpsmtpd-async.1.gz %{_datadir}/%{name}/plugins/async/* %pre if ! id smtpd >/dev/null 2>&1 then # need to create smtpd user. if perl -e 'exit ! defined(getgrnam("postdrop"))' then # if postfix is installed, we will probably use # queue/postfix, which will need this: supp="-G postdrop" fi useradd -r -m $supp smtpd fi %changelog * Tue Nov 3 2009 0.83-0.5.sme - Update pre requires so scripts don't fail on install [SME: 5558] * Sat Oct 31 2009 0.83-0.4.sme - Rebase bad_rcptto patch to remove orig file [SME: 5548] - Change logging in tls init to prevent warnings [SME: 5551] * Thu Oct 29 2009 0.83-0.3.sme - Only run/initialize plugins once [SME: 5533] * Mon Oct 26 2009 0.83-0.2.sme - Change spool dir permissions and owner to qpsmtpd:clamav - Change log dir permissions and owner to smelog:smelog * Tue Sep 22 2009 0.83-0.2.sme - add sme specific patches * Fri Sep 18 2009 0.83-0.1 - Update to 0.83 * Sun Jul 12 2009 0.82-0.1 - Update to latest release - don't add qpsmtpd to start-up by default - add apache config file to qpsmtpd-apache package - remove all patches - use rpm macros for dirs - use a filelist for main package instead of a long list of files * Tue Jul 15 2008 0.43-0.7 - Removed SelectServer.pm from .spec file * Tue Mar 18 2008 0.43-0.6 - moved config files back to /etc/qpsmtpd following some changes to the qpsmtpd src * Tue Mar 18 2008 0.43-0.5 - moved config files to /etc/qpsmtpd/config * Tue Mar 18 2008 0.43-0.4 - Moved qpsmtpd-async to /usr/bin - Added qpsmtpd-async man page to async package - Added async smtproute plugin to async package * Wed Mar 12 2008 0.43-0.3 - Makefile.PL now updated in svn, so remove hack * Wed Mar 12 2008 0.43-0.2 - Added qpsmtpd-prefork to qpsmtpd RPM, inc. hack to work round deficiency in Makefile.PL * Mon Mar 10 2008 0.43-0.1 - Updated to work with Makefile to build from svn * Wed Sep 12 2007 0.40-2.0 - Updated to build trunk-r790 * Tue Jun 12 2007 0.40-1.0 - updated to 0.40 - no code change. * Thu Jun 07 2007 0.40-0.2 - unset environment variables which are normally tainted in perl. - updated to 0.40rc1 - added dependency on Net::IP (needed by some plugins) * Sat May 05 2007 0.33-0.5 - moved environment cleanup into start() function, otherwise LANG just gets reinitialized. * Sat May 05 2007 0.33-0.4 - split qpsmtpd-async into a separate package to avoid dependency on ParaDNS. * Sat May 05 2007 0.33-0.3 - also unset LANG, LC_ALL and LC_TIME in startup script to prevent locale specific Received headers (bug reported by Dominik Meyer) * Sun Feb 25 2007 0.33-0.2 - 0.3x branch has been merged back to trunk. Got current snapshot (r715) from trunk. * Sun Feb 25 2007 0.33-0.1 - Start forkserver via "daemon" (Gavin Carr) - Fixed 'service qpsmtpd-forkserver status' (Gavin Carr) - Changed policy for config files to noreplace (Gavin Carr) * Sun Nov 05 2006 0.33-0.0 - Upgraded to current snapshot from 0.3x branch (which should become 0.33 soon-ish) - included xinetd-support again. * Sat Mar 18 2006 0.32-2 - fix dnsbl to check whether answer fits query. - randomize Net::DNS ids for qpsmtpd-forkserver child processes. * Wed Mar 08 2006 0.32-1 - New upstream 0.32 - rc-file unsets PERL_UNICODE (bug #38397) * Sat Jan 28 2006 0.31.1-3 - Use ${SOURCE*} macros to refer to source files - Avoid invoking rpm and other cleanup in %pre section - Invoke chkconfig in %post. - (Thanks to Josko Plazonic for the reporting these problems and suggesting fixes) * Tue Nov 30 2005 0.31.1-2 - Revision 170 of plugins/loggin/file_connection: Return DECLINED from open_log. Open log in write_log if it isn't already open. * Tue Nov 29 2005 0.31.1-1 - Commented out queue plugins from sample config - Added dependencies - Create smtpd user if it doesn't exist - Added /var/log/qpsmtpd and /var/spool/qpsmtpd * Sat Nov 26 2005 - Added file_connection plugin - Startup file for qpsmtpd-forkserver now uses --detach and assumes that a suitable logging module is configured (file_connection by default) * Wed Nov 23 2005 - Forkserver drops privileges before loading plugins now. * Sun Nov 20 2005 - New upstream 0.31.1 * Mon Nov 14 2005 0.31-8 - New upstream 0.31rc3. - pre-connection patch slightly simplified since upstream fixed one of the bugs. * Tue Aug 23 2005 - forced INSTALLSITELIB=/usr/lib/perl5/site_perl as suggested by Charlie Brady. * Sat Aug 20 2005 0.31-7 - RC2 from upstream. - Removed patches which aren't applied from spec file. * Fri Jul 22 2005 0.31-6 - New upstream snapshot from 0.31 branch: svn revision 509. * Sun Jul 17 2005 0.31-5 - include only /etc/init.d/qpsmtpd-forkserver, not /etc/init.d it conflicts with old initscripts packages. * Sun Jul 17 2005 0.31-4 - removed tabs from forkserver * Sun Jul 17 2005 0.31-3 - added startup script for forkserver - changed BuildArchitectures to noarch. * Sat Jul 16 2005 0.31-2 - pre-connection hook is now actually called, not just defined. * Fri Jul 15 2005 0.31-1 - merged with 0.31. Most of my patches are now in the official release. - merged Gavin's per-user-config patch with my dirs patch, since the latter needs a way to turn off logging. - added /etc/qpsmtpd/plugin_dir to package. * Mon Jun 13 2005 0.29-6 - fixed removal of patch backup files - fixed option --pid-file * Sun Jun 12 2005 - avoid installing patch backup files - split Apache::Qpsmtpd into separate package to avoid dependency hell. - fixed URL - changed group to Daemons. - Fixed installation for newer versions of ExtUtils::MakeMaker * Wed Jun 1 2005 0.29-5 - Really don't reap children in signal handler. * Tue May 31 2005 0.29-4 - Return 421 for DENYSOFT_DISCONNECT - Don't reap children in signal handler. * Thu May 19 2005 0.29-3 - removed code to accept paths without <>. * Thu May 19 2005 0.29-2 - added QPSMTPD_CONFIG env variable and plugin_dir config. - added supplemental groups and support for pid file - added shared_connect hook - changed log level for SMTP dialog from DEBUG to INFO * Thu Apr 21 2005 hjp@hjp.at - added plugins, /etc and docs. * Mon Apr 18 2005 hjp@hjp.at - Specfile autogenerated