######################################## # Configure the bucket count. The default is 23. # If you change it, the value should be prime, otherwise the buckets can # become imbalanced over time. %define buckets 23 ######################################## # The "root directory" where the software will be installed on the target # machine. This is normally /var/qmail. %define vqdir /var/qmail ######################################## # Disable debug packages, disable binary stripping %global _enable_debug_package 0 %global debug_package %{nil} #%global __os_install_post %{nil} ############################################################################### ############################################################################### Summary: qmail with jms1 patches Name: qmail-jms1 Version: 7.11 Release: 1 Source0: http://cr.yp.to/software/qmail-1.03.tar.gz Source1: https://qmail.jms1.net/scripts/service-qmail-send-run Source2: https://qmail.jms1.net/scripts/service-any-log-run Patch0: https://qmail.jms1.net/patches/qmail-1.03-jms1-%{version}.patch License: Public Domain Group: Applications/Communications Packager: John Simpson Requires: daemontools, daemontools-jms1 Requires(pre): /usr/bin/getent, /usr/sbin/useradd, /usr/sbin/groupadd Provides: smtpdaemon Conflicts: exim Conflicts: postfix Conflicts: qmail Conflicts: sendmail %description This is the qmail MTA, version 1.03, patched with John Simpson's combined patch, version %{release}. The conf-split for this package is %{buckets}. The combined patch is documented here: https://qmail.jms1.net/patches/combined-details.shtml ############################################################################### ############################################################################### # # prep: extract and patch the source, prepare for build %prep ######################################## # make sure bucket count is prime for (( n=2 ; $((n*n)) <= %{buckets} ; n++ )) do if [[ $(((%{buckets}/$n)*$n )) == %{buckets} ]] then echo "ERROR: bucket count %{buckets} is not prime" exit 1 fi done ######################################## # set up the build directory rm -rf %{name}-%{version}-%{release} tar xzf %{SOURCE0} mv qmail-1.03 %{name}-%{version}-%{release} cd %{name}-%{version}-%{release} ######################################## # apply the combined patch patch < %{PATCH0} ######################################## # configure the bucket count sed -i -e "1s/.*/%{buckets}/" conf-split ######################################## # configure the /var/qmail directory name mv conf-qmail conf-qmail.bak ( echo %{vqdir} ; sed 1d conf-qmail.bak ) > conf-qmail ############################################################################### ############################################################################### # # build: compile the software %build cd %{name}-%{version}-%{release} make clean it man ############################################################################### ############################################################################### # # install: "install" the software under the %{buildroot} directory. # # We can't use the normal "make setup check", because the conf-qmail directory # is hard-coded into most of the binaries, including the "install" binary which # djb's "make setup" uses to actually do the install. There is no way to use # the normal Makefile to install the software in any directory other than the # conf-qmail directory, so we have to do it all by hand. # # Note that we aren't setting ownerships on any of the files, because (1) the # %attr declarations in the %files section will take care of all this when the # package is installed on the final system, (2) the qmail users may not exist # on the machine where we're building the RPM, and (3) if we're building the # RPM as a non-root user, we won't be able to set ownership of a file anyway. %install ######################################## # set up the "build root" (i.e. the fake system root directory within which # the software is "installed") rm -rf %{buildroot} mkdir -p %{buildroot} mkdir -p -m 0755 %{buildroot}%{vqdir} mkdir -m 01755 %{buildroot}%{vqdir}/alias ######################################## # create /var/qmail/bin and install its contents mkdir -m 0755 %{buildroot}%{vqdir}/bin for n in bouncesaying condredirect datemail elq except forward maildir2mbox \ maildirmake maildirwatch mailsubj pinq predate preline qail qbiff \ qmail-inject qmail-pop3d qmail-qmqpc qmail-qmqpd qmail-qmtpd qmail-qread \ qmail-qstat qmail-showctl qmail-smtpd qmail-tcpok qmail-tcpto qreceipt \ qsmhook sendmail tcp-env do install -m 0755 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n \ %{buildroot}%{vqdir}/bin/ done for n in qmail-clean qmail-getpw qmail-local qmail-popup qmail-pw2u \ qmail-remote qmail-rspawn qmail-send qmail-todo splogger do install -m 0711 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n \ %{buildroot}%{vqdir}/bin/ done for n in qmail-lspawn qmail-newmrh qmail-newu qmail-start do install -m 0700 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n \ %{buildroot}%{vqdir}/bin/ done install -m 01711 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/qmail-queue \ %{buildroot}%{vqdir}/bin/ ######################################## # create /var/qmail/boot and install its contents mkdir -m 0755 %{buildroot}%{vqdir}/boot for n in binm1 binm1+df binm2 binm2+df binm3 binm3+df home home+df proc proc+df do install -m 0755 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n \ %{buildroot}%{vqdir}/boot/ done ######################################## # create /var/qmail/control mkdir -m 0755 %{buildroot}%{vqdir}/control ######################################## # create /var/qmail/doc and install its contents mkdir -m 0755 %{buildroot}%{vqdir}/doc for n in FAQ INSTALL INSTALL.alias INSTALL.ctl INSTALL.ids INSTALL.maildir \ INSTALL.mbox INSTALL.vsm PIC.local2alias PIC.local2ext PIC.local2local \ PIC.local2rem PIC.local2virt PIC.nullclient PIC.relaybad PIC.relaygood \ PIC.rem2local README.qregex REMOVE.binmail REMOVE.sendmail SENDMAIL \ TEST.deliver TEST.receive UPGRADE do install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n \ %{buildroot}%{vqdir}/doc/ done ######################################## # create /var/qmail/man and install its contents mkdir -m 0755 %{buildroot}%{vqdir}/man mkdir -m 0755 %{buildroot}%{vqdir}/man/cat1 mkdir -m 0755 %{buildroot}%{vqdir}/man/man1 for n in bouncesaying condredirect except forward maildir2mbox maildirmake \ maildirwatch mailsubj preline qbiff qreceipt tcp-env do install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.0 \ %{buildroot}%{vqdir}/man/cat1/ install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.1 \ %{buildroot}%{vqdir}/man/man1/ done mkdir -m 0755 %{buildroot}%{vqdir}/man/cat5 mkdir -m 0755 %{buildroot}%{vqdir}/man/man5 for n in addresses dot-qmail envelopes maildir mbox qmail-control \ qmail-header qmail-log qmail-users tcp-environ do install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.0 \ %{buildroot}%{vqdir}/man/cat5/ install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.5 \ %{buildroot}%{vqdir}/man/man5/ done mkdir -m 0755 %{buildroot}%{vqdir}/man/cat7 mkdir -m 0755 %{buildroot}%{vqdir}/man/man7 for n in forgeries qmail qmail-limits do install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.0 \ %{buildroot}%{vqdir}/man/cat7/ install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.7 \ %{buildroot}%{vqdir}/man/man7/ done mkdir -m 0755 %{buildroot}%{vqdir}/man/cat8 mkdir -m 0755 %{buildroot}%{vqdir}/man/man8 for n in qmail-clean qmail-command qmail-getpw qmail-inject qmail-local \ qmail-lspawn qmail-newmrh qmail-newu qmail-pop3d qmail-popup qmail-pw2u \ qmail-qmqpc qmail-qmqpd qmail-qmtpd qmail-qread qmail-qstat qmail-queue \ qmail-remote qmail-rspawn qmail-send qmail-showctl qmail-smtpd \ qmail-start qmail-tcpok qmail-tcpto splogger do install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.0 \ %{buildroot}%{vqdir}/man/cat8/ install -m 0644 \ $RPM_BUILD_DIR/%{name}-%{version}-%{release}/$n.8 \ %{buildroot}%{vqdir}/man/man8/ done ######################################## # create /var/qmail/queue and its sub-directories mkdir -m 0750 %{buildroot}%{vqdir}/queue mkdir -m 0700 %{buildroot}%{vqdir}/queue/bounce mkdir -m 0700 %{buildroot}%{vqdir}/queue/info mkdir -m 0700 %{buildroot}%{vqdir}/queue/intd mkdir -m 0700 %{buildroot}%{vqdir}/queue/local mkdir -m 0750 %{buildroot}%{vqdir}/queue/lock touch %{buildroot}%{vqdir}/queue/lock/sendmutex chmod 0600 %{buildroot}%{vqdir}/queue/lock/sendmutex dd bs=1024 count=1 if=/dev/zero of=%{buildroot}%{vqdir}/queue/lock/tcpto chmod 0644 %{buildroot}%{vqdir}/queue/lock/tcpto mkfifo -m 0622 %{buildroot}%{vqdir}/queue/lock/trigger mkdir -m 0750 %{buildroot}%{vqdir}/queue/mess mkdir -m 0700 %{buildroot}%{vqdir}/queue/pid mkdir -m 0700 %{buildroot}%{vqdir}/queue/remote mkdir -m 0750 %{buildroot}%{vqdir}/queue/todo for n in $( seq 0 $((%{buckets}-1)) ) do mkdir -m 0700 %{buildroot}%{vqdir}/queue/info/$n mkdir -m 0700 %{buildroot}%{vqdir}/queue/local/$n mkdir -m 0750 %{buildroot}%{vqdir}/queue/mess/$n mkdir -m 0700 %{buildroot}%{vqdir}/queue/remote/$n done ######################################## # create /var/qmail/users mkdir -m 0755 %{buildroot}%{vqdir}/users ######################################## # create the sendmail symlinks mkdir -p -m 0755 %{buildroot}/usr/lib %{buildroot}/usr/sbin ln -s %{vqdir}/bin/sendmail %{buildroot}/usr/lib/sendmail ln -s %{vqdir}/bin/sendmail %{buildroot}/usr/sbin/sendmail ######################################## # Set up the daemontools "qmail-send" service. Note that this will not create # the final symlink from /service/ because you will need to create control # files before it will be able to run. mkdir -p -m 0755 %{buildroot}/var/service/qmail-send/log install -m 0755 %{SOURCE1} %{buildroot}/var/service/qmail-send/run install -m 0755 %{SOURCE2} %{buildroot}/var/service/qmail-send/log/run ############################################################################### ############################################################################### # # pre: create the users and groups before installing the package. %pre export PATH="/usr/bin:/bin:/usr/sbin" getent group nofiles > /dev/null || groupadd -r nofiles getent group qmail > /dev/null || groupadd -r qmail getent passwd alias > /dev/null || useradd -r -g nofiles -d %{vqdir}/alias -s /bin/true alias getent passwd qmaild > /dev/null || useradd -r -g nofiles -d %{vqdir} -s /bin/true qmaild getent passwd qmaill > /dev/null || useradd -r -g nofiles -d %{vqdir} -s /bin/true qmaill getent passwd qmailp > /dev/null || useradd -r -g nofiles -d %{vqdir} -s /bin/true qmailp getent passwd qmailq > /dev/null || useradd -r -g qmail -d %{vqdir} -s /bin/true qmailq getent passwd qmailr > /dev/null || useradd -r -g qmail -d %{vqdir} -s /bin/true qmailr getent passwd qmails > /dev/null || useradd -r -g qmail -d %{vqdir} -s /bin/true qmails mkdir -p -m 0755 /var/service ######################################## # Before uninstall, stop the qmail-send service %preun export PATH="/usr/bin:/bin:/usr/local/bin" if [[ "$1" = "0" ]] then ### fully un-installing: remove the service if [ -e /service/qmail-send ] then cd /service/qmail-send rm /service/qmail-send /usr/local/bin/svc -dx . log fi else ### upgrading: stop the service if [ -e /service/qmail-send ] then /usr/local/bin/svc -d /service/qmail-send fi fi ######################################## # List of files to be included %files %defattr(-,root,qmail) /usr/lib/sendmail /usr/sbin/sendmail /var/service/qmail-send %dir %{vqdir} %attr(0755,alias,qmail) %{vqdir}/alias %dir %{vqdir}/bin %{vqdir}/bin/bouncesaying %{vqdir}/bin/condredirect %{vqdir}/bin/datemail %{vqdir}/bin/elq %{vqdir}/bin/except %{vqdir}/bin/forward %{vqdir}/bin/maildir2mbox %{vqdir}/bin/maildirmake %{vqdir}/bin/maildirwatch %{vqdir}/bin/mailsubj %{vqdir}/bin/pinq %{vqdir}/bin/predate %{vqdir}/bin/preline %{vqdir}/bin/qail %{vqdir}/bin/qbiff %attr(0711,root,qmail) %{vqdir}/bin/qmail-clean %attr(0711,root,qmail) %{vqdir}/bin/qmail-getpw %{vqdir}/bin/qmail-inject %attr(0711,root,qmail) %{vqdir}/bin/qmail-local %attr(0700,root,qmail) %{vqdir}/bin/qmail-lspawn %attr(0700,root,qmail) %{vqdir}/bin/qmail-newmrh %attr(0700,root,qmail) %{vqdir}/bin/qmail-newu %{vqdir}/bin/qmail-pop3d %attr(0711,root,qmail) %{vqdir}/bin/qmail-popup %attr(0711,root,qmail) %{vqdir}/bin/qmail-pw2u %{vqdir}/bin/qmail-qmqpc %{vqdir}/bin/qmail-qmqpd %{vqdir}/bin/qmail-qmtpd %{vqdir}/bin/qmail-qread %{vqdir}/bin/qmail-qstat %attr(04711,qmailq,qmail) %{vqdir}/bin/qmail-queue %attr(0711,root,qmail) %{vqdir}/bin/qmail-remote %attr(0711,root,qmail) %{vqdir}/bin/qmail-rspawn %attr(0711,root,qmail) %{vqdir}/bin/qmail-send %{vqdir}/bin/qmail-showctl %{vqdir}/bin/qmail-smtpd %attr(0700,root,qmail) %{vqdir}/bin/qmail-start %{vqdir}/bin/qmail-tcpok %{vqdir}/bin/qmail-tcpto %attr(0711,root,qmail) %{vqdir}/bin/qmail-todo %{vqdir}/bin/qreceipt %{vqdir}/bin/qsmhook %{vqdir}/bin/sendmail %attr(0711,root,qmail) %{vqdir}/bin/splogger %{vqdir}/bin/tcp-env %{vqdir}/boot %dir %{vqdir}/control %{vqdir}/doc %{vqdir}/man %attr(0750,qmailq,qmail) %dir %{vqdir}/queue %attr(0700,qmails,qmail) %{vqdir}/queue/bounce %attr(0700,qmails,qmail) %{vqdir}/queue/info %attr(0700,qmailq,qmail) %{vqdir}/queue/intd %attr(0700,qmails,qmail) %{vqdir}/queue/local %attr(0750,qmailq,qmail) %dir %{vqdir}/queue/lock %attr(0600,qmails,qmail) %{vqdir}/queue/lock/sendmutex %attr(0600,qmails,qmail) %{vqdir}/queue/lock/sendmutex %attr(0644,qmailr,qmail) %{vqdir}/queue/lock/tcpto %attr(0622,qmails,qmail) %{vqdir}/queue/lock/trigger %attr(0750,qmailq,qmail) %{vqdir}/queue/mess %attr(0700,qmailq,qmail) %{vqdir}/queue/pid %attr(0700,qmails,qmail) %{vqdir}/queue/remote %attr(0750,qmailq,qmail) %{vqdir}/queue/todo %{vqdir}/users