%{?dist: %{expand: %%define %dist 1}} # internal variabls %define control /etc/qmail/control Name: qmail Version: 1.03 Release: 38 Epoch: 4 Group: Networking/Daemons URL: http://www.qmail.org/ License: Check with djb@koobera.math.uic.edu Packager: Scott R. Shinn BuildRoot: %{_tmppath}/%{name}-%{version}-root Source0: http://cr.yp.to/qmail/qmail-%{version}.tar.gz Source1: qmail-rhinit.tar.gz Source3: http://untroubled.org/qmail/syncdir.c Source4: cron.hourly Source5: sslcert.conf Patch0: netqmail-1.05.patch Patch1: qmail-spp-smtpauth-tls-20060105.diff Patch2: qmail-1.03-bind-interface.patch Patch3: http://www.dataloss.net/qmtpd-badmailfrom-1.1.patch Patch4: big-ext-todo-20070103 Patch5: qmail-1.03-install-path-big-todo.patch Patch6: qmail-1.03-autouidgid-tls.patch Patch7: http://untroubled.org/qmail/qmail-1.03-syncdir.patch Patch8: http://qmail.org/big-concurrency.patch Patch10: qmail-smtpd-relay-reject.patch Patch11: http://qmail.org/doublebounce-trim.patch Patch12: qmail-1.03-dns.patch Patch14: qmail-bounce.patch Patch15: qmail-bouncecontrol-1.03.patch Patch20: http://shupp.org/patches/netqmail-1.05-tls-smtpauth-20060105.patch Patch21: http://qmail.org/accept-5xx.patch Patch200: qmail-1.03-showctl-20070105.patch Summary: Qmail Mail Transfer Agent #Provides: MTA Provides: smtpdaemon Provides: pop3daemon Provides: qmtpdaemon Provides: qmqpdaemon Obsoletes: qmail-cyclog Obsoletes: qmail-utils Obsoletes: qmail-pop3d Obsoletes: qmail-qmqpd Obsoletes: qmail-qmtpd Obsoletes: qmail-smtpd BuildRequires: ucspi-tcp >= 0.86-1 openssl-devel Requires: initscripts net-tools sh-utils shadow-utils supervise-scripts >= 3.2 Requires: ucspi-unix ucspi-tcp >= 0.86-1 #Conflicts: sendmail Conflicts: psa, psa-qmail %description Qmail is a small, fast, secure replacement for the sendmail package, which is the program that actually receives, routes, and delivers electronic mail. The source for this RPM can be found at: http://3es.atomicrocketturtle.com/packages/qmail/ %prep %setup -n qmail-1.03 %patch0 -p1 %patch20 -p1 %patch1 -p0 %patch3 -p1 %patch4 -p1 %patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch14 -p1 %patch15 -p1 %patch200 -p1 fds=`ulimit -n` let spawnlimit='(fds-6)/2' echo $spawnlimit >conf-spawn tar -xzf %{SOURCE1} cp $RPM_SOURCE_DIR/cron.hourly . cp $RPM_SOURCE_DIR/syncdir.c . %build %{?rhel3:echo "cc -O2 -DTLS=20060104 -I/usr/kerberos/include" > conf-cc} make compile makelib ./compile syncdir.c ./makelib libsyncdir.a syncdir.o make it man make -C qmail-rhinit all #make cert #make tmprsadh %install export PATH="/sbin:/usr/sbin:/bin:/usr/bin" add_user() { useradd -d "$3" -g "$2" -M -r -s /bin/true "$1" || true; } add_group() { groupadd -r "$1" || true; } install_file() { source="$1" dest="$2" shift 2 install "$@" "$source" $RPM_BUILD_ROOT/"$dest" } add_group qmail add_group nofiles add_user alias nofiles /etc/qmail/alias add_user qmaild nofiles /var/qmail add_user qmaill nofiles /var/qmail add_user qmailp nofiles /var/qmail add_user qmailq qmail /var/qmail add_user qmailr qmail /var/qmail add_user qmails qmail /var/qmail add_user qmaillog qmail /var/log /bin/rm -rf $RPM_BUILD_ROOT mkdir $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT%{_bindir} install -d $RPM_BUILD_ROOT%{_mandir} install -d $RPM_BUILD_ROOT%{_sbindir} pushd $RPM_BUILD_ROOT install -d bin install -d etc/cron.hourly install -d -o alias -g qmail etc/qmail/alias install -d -o root -g qmail etc/qmail install -d -g qmail etc/qmail/control install -d -g qmail etc/qmail/owners install -d -g qmail etc/qmail/users install -d etc/tcpcontrol install -d usr/lib install -d -g qmail var/qmail #install -d -o qmaillog -g qmail var/log/{qmail,qmtpd,smtpd,pop3d,qmqpd} ln -s ../../etc/qmail/alias var/qmail/alias ln -s ../../etc/qmail/control var/qmail/control ln -s ../../etc/qmail/owners var/qmail/owners ln -s ../../etc/qmail/users var/qmail/users ln -s ../..%{_bindir} var/qmail/bin ln -s ../..%{_mandir} var/qmail/man popd # Build the user and group files, required for qmail-hier ./make-owners . # INSTALL IT ./install $RPM_BUILD_ROOT/var/qmail # CHECK IT ./instcheck $RPM_BUILD_ROOT/var/qmail # Remove preformatted man pages rm -rf $RPM_BUILD_ROOT/var/qmail/man/cat* rm $RPM_BUILD_ROOT/var/qmail/man # Fix for sendmail add-ons pushd $RPM_BUILD_ROOT/usr mv bin/sendmail sbin/sendmail ln -s ../sbin/sendmail lib/sendmail popd # create plugins dir mkdir -p $RPM_BUILD_ROOT/var/qmail/plugins/ # Install some extra configuration programs install ipmeprint $RPM_BUILD_ROOT%{_bindir} pushd qmail-rhinit make PREFIX=$RPM_BUILD_ROOT bindir=%{_bindir} mandir=%{_mandir} install popd # Install extra shell scripts install_file cron.hourly etc/cron.hourly/qmail -m 755 pushd $RPM_BUILD_ROOT/etc/qmail/alias echo '&root' >.qmail-postmaster echo '&root' >.qmail-mailer-daemon touch .qmail-root chmod 644 .qmail* popd pushd $RPM_BUILD_ROOT/etc/qmail/control touch defaultdomain locals me plusdomain rcpthosts smtpplugins chmod 644 defaultdomain locals me plusdomain rcpthosts # SSL Certificates yes "" | openssl req -new -x509 -nodes -out servercert.pem -days 366 -keyout servercert.pem -config %{SOURCE5} openssl genrsa -out rsa512.pem 512 openssl dhparam -2 -out dh512.pem 512 openssl dhparam -2 -out dh1024.pem 1024 ln servercert.pem clientcert.pem chmod 640 servercert.pem chmod 600 rsa512.pem dh512.pem dh1024.pem # Basic configuration settings # SMTP greeting echo "Project Gamera Mail Firewall" > smtpgreeting # Local users echo -e "localhost.localdomain" > locals # Timeouts echo "60" > timeoutconnect echo "300" > timeoutremote echo "300" > timeoutsmtpd # Disable doublebounceto echo > doublebounceto echo >> doublebounceto popd pushd $RPM_BUILD_ROOT/etc/qmail/users touch append assign cdb include exclude mailnames subusers chmod 644 * popd $RPM_BUILD_ROOT%{_bindir}/make-owners $RPM_BUILD_ROOT/etc/qmail echo ./Maildir/ >$RPM_BUILD_ROOT/etc/qmail/control/aliasempty # rebuild the sym-links under /var/qmail pushd $RPM_BUILD_ROOT/var/qmail rm -f alias control users owners bin man ln -s /etc/qmail/alias alias ln -s /etc/qmail/control control ln -s /etc/qmail/owners owners ln -s /etc/qmail/users users ln -s %{_bindir} bin ln -s %{_mandir} man rm -rf boot rm -rf doc ln -s %{_docdir}/qmail-$RPM_PACKAGE_VERSION doc popd # Build the default tcpcontrol rules & CDBs pushd $RPM_BUILD_ROOT/etc/tcpcontrol echo :allow >pop-3.rules echo :deny >qmqp.rules echo :allow >qmtp.rules #echo :allow >spop3.rules echo :allow >smtp.rules tcprules pop-3.cdb pop-3.tmp /dev/null || useradd -d "$3" -g "$2" -M -r -s /bin/true "$1"; } add_group() { grep "^$1:" /etc/group >/dev/null || groupadd -r "$1"; } add_group qmail add_group nofiles add_user alias nofiles /etc/qmail/alias add_user qmaild nofiles /var/qmail add_user qmaill nofiles /var/qmail add_user qmailp nofiles /var/qmail add_user qmailq qmail /var/qmail add_user qmailr qmail /var/qmail add_user qmails qmail /var/qmail add_user qmaillog qmail /var/log if [ -f /etc/init.d/sendmail ]; then service sendmail stop 1>/dev/null 2>/dev/null chkconfig --del sendmail fi %post %{_bindir}/maketcprules %{_bindir}/qmail-rhconfig %{_bindir}/make-owners /etc/qmail for svc in qmail qread qstat smtpd ssmtpd # pop3d qmqpd qmtpd do if ! [ -e /service/$svc ] then svc-add /var/qmail/service/$svc fi done # NEAT! I forgot I did this if [ "$1" = 1 ]; then cd /etc if [ -f inetd.conf ] && egrep '^smtp' inetd.conf >/dev/null 2>&1; then if ! [ -e inetd.conf.rpmsave ]; then cp -v inetd.conf inetd.conf.rpmsave fi sed -e 's/^smtp[ ]/#smtp /' inetd.conf >inetd.conf.new mv inetd.conf.new inetd.conf echo "inetd may need to be restarted before incoming SMTP connections" echo "will work. Do this by typing '/etc/rc.d/init.d/inet restart'" fi fi #echo Read %{_docdir}/qmail-1.03+patches/README.service #echo for instructions on starting and stopping qmail services. %preun if [ $1 -gt 0 ]; then exit 0; fi for svc in pop3d qmail qmqpd qmtpd qread qstat smtpd do if [ -e /service/$svc ] then svc-remove $svc fi done echo "Removing Qmail user ids..." userdel alias userdel qmaild userdel qmaill userdel qmailp userdel qmailq userdel qmailr userdel qmails userdel qmaillog echo "Removing Qmail group ids..." groupdel qmail groupdel nofiles # Files List ################################################################### %files %defattr(-,root,qmail) %doc BLURB BLURB2 BLURB3 BLURB4 CHANGES FAQ FILES %doc INSTALL INSTALL.* INTERNALS PIC.* README REMOVE.* %doc SECURITY SENDMAIL TEST.* THANKS THOUGHTS TODO UPGRADE %doc qmail-rhinit/README.* %config /etc/profile.d/* %config(noreplace) /etc/tcpcontrol/pop-3.rules %config(noreplace) /etc/tcpcontrol/qmqp.rules %config(noreplace) /etc/tcpcontrol/qmtp.rules %config(noreplace) /etc/tcpcontrol/smtp.rules #%config(noreplace) /etc/tcpcontrol/spop3.rules %config /etc/tcpcontrol/pop-3.cdb %config /etc/tcpcontrol/qmqp.cdb %config /etc/tcpcontrol/qmtp.cdb %config /etc/tcpcontrol/smtp.cdb %defattr(-,-,qmail) %config /etc/cron.hourly/qmail %dir /etc/qmail %attr(2755, alias, qmail) %dir /etc/qmail/alias/ %attr(-, alias, qmail) %config(noreplace) /etc/qmail/alias/.qmail-* %dir /etc/qmail/owners %config(noreplace) /etc/qmail/owners/gidn %config(noreplace) /etc/qmail/owners/gidq %config(noreplace) /etc/qmail/owners/uida %config(noreplace) /etc/qmail/owners/uidd %config(noreplace) /etc/qmail/owners/uidl %config(noreplace) /etc/qmail/owners/uido %config(noreplace) /etc/qmail/owners/uidp %config(noreplace) /etc/qmail/owners/uidq %config(noreplace) /etc/qmail/owners/uidr %config(noreplace) /etc/qmail/owners/uids %dir /etc/qmail/users %ghost %config(missingok,noreplace) /etc/qmail/users/assign %ghost %config(missingok,noreplace) /etc/qmail/users/cdb %ghost %config(missingok,noreplace) /etc/qmail/users/include %config(noreplace) /etc/qmail/users/append %config(noreplace) /etc/qmail/users/exclude %config(noreplace) /etc/qmail/users/mailnames %config(noreplace) /etc/qmail/users/subusers %dir /etc/qmail/control %ghost %config(missingok,noreplace) /etc/qmail/control/defaultdomain %ghost %config(missingok,noreplace) /etc/qmail/control/locals %ghost %config(missingok,noreplace) /etc/qmail/control/plusdomain %ghost %config(missingok,noreplace) /etc/qmail/control/rcpthosts %verify(mode,group,user) %config(noreplace) /etc/qmail/control/aliasempty %verify(mode,group,user) %config(noreplace) /etc/qmail/control/me %verify(mode,group,user) %config(noreplace) /etc/qmail/control/doublebounceto %verify(mode,group,user) %config(noreplace) /etc/qmail/control/smtpplugins %verify(mode,group,user) %config(noreplace) /etc/qmail/control/smtpgreeting %verify(mode,group,user) %config(noreplace) /etc/qmail/control/timeoutconnect %verify(mode,group,user) %config(noreplace) /etc/qmail/control/timeoutremote %verify(mode,group,user) %config(noreplace) /etc/qmail/control/timeoutsmtpd %attr(0640, qmaild, qmail) %config(noreplace) /etc/qmail/control/servercert.pem %attr(0640, qmaild, qmail) %config(noreplace) /etc/qmail/control/clientcert.pem %attr(0600, qmaild, qmail) %config(noreplace) /etc/qmail/control/dh1024.pem %attr(0600, qmaild, qmail) %config(noreplace) /etc/qmail/control/dh512.pem %attr(0600, qmaild, qmail) %config(noreplace) /etc/qmail/control/rsa512.pem %{_bindir}/bouncesaying %{_bindir}/condredirect %{_bindir}/datemail %{_bindir}/elq %{_bindir}/except %{_bindir}/forward %{_bindir}/ipmeprint %{_bindir}/maildir2mbox #%{_bindir}/maildirmake %{_bindir}/maildirwatch %{_bindir}/mailq %{_bindir}/mailsubj %{_bindir}/make-owners %{_bindir}/pinq %{_bindir}/predate %{_bindir}/preline %{_bindir}/qail %{_bindir}/qbiff %{_bindir}/qmail-reload %attr(0711,root,qmail) %{_bindir}/qmail-clean %attr(0711,root,qmail) %{_bindir}/qmail-getpw %{_bindir}/qmail-inject %attr(0711,root,qmail) %{_bindir}/qmail-local %attr(0700,root,qmail) %{_bindir}/qmail-lspawn %attr(0700,root,qmail) %{_bindir}/qmail-newmrh %attr(0700,root,qmail) %{_bindir}/qmail-newu %{_bindir}/qmail-pop3d %attr(0700,root,qmail) %{_bindir}/qmail-popup %attr(0711,root,qmail) %{_bindir}/qmail-pw2u %{_bindir}/qmail-qmqpc %{_bindir}/qmail-qmqpd %{_bindir}/qmail-qmtpd %{_bindir}/qmail-qread %{_bindir}/qmail-qstat %attr(04711,qmailq,qmail) %{_bindir}/qmail-queue %attr(0711,root,qmail) %{_bindir}/qmail-remote %{_bindir}/qmail-rhconfig %attr(0711,root,qmail) %{_bindir}/qmail-rspawn %attr(0711,root,qmail) %{_bindir}/qmail-send %{_bindir}/qmail-showctl %{_bindir}/qmail-smtpd %attr(0700,root,qmail) %{_bindir}/qmail-start %{_bindir}/qmail-tcpok %{_bindir}/qmail-tcpto %{_bindir}/qmail-todo %{_bindir}/qreceipt %{_bindir}/qsmhook %attr(0711,root,qmail) %{_bindir}/splogger %{_bindir}/tcp-env %{_bindir}/update_tmprsadh /usr/lib/sendmail %{_mandir}/man?/* /usr/share/qmail %{_sbindir}/sendmail %attr(0700,qmaillog,qmail) %dir /var/log/* /var/qmail %changelog * Fri Jan 5 2007 Scott R. Shinn - 1.03-38 - sendmail trigger tweak - made plugins dir * Fri Jan 5 2007 Scott R. Shinn - 1.03-37 - added some default configuration settings, disabled doublebounceto, greeting - updated README.patches to document the patches added in to this release - added in SSL SMTP support * Wed Jan 3 2007 Scott R. Shinn - 1.03-36 - major changes ensue - added SPP plugin architecture - removed validrcptto - added qmail-spp-smtpauth-tls-20060105, implements TLS and SMTP_AUTH - added qmtpd-badmailfrom-1.1.patch, /etc/qmail/control/badmailfrom - updated big-ext-todo-20070103 to work with SPP/TLS patches - updated qmail-1.03-install-path-big-todo.patch to work with SPP/TLS patches - updated qmail-1.03-autouidgid-tls.patch to work with SPP/TLS patches - added qmail-1.03-syncdir.patch, performance fix - updated big-concurrency.patch to work with SPP/TLS patches - added qmail-smtpd-relay-reject.patch, fix for anti-spammer cleanup - added doublebounce-trim.patch, a newline in /etc/qmail/control/doublebounceto will disable doublebounces - added qmail-1.03-dns.patch, oversize dns fix - added qmail-bounce.patch, /etc/qmail/control/bouncemaxbytes controls max size of bounce msg - added qmail-bouncecontrol-1.03.patch, /etc/qmail/control/bouncesubject /etc/qmail/control/bouncemessage /etc/qmail/control/doublebouncesubject /etc/qmail/control/doublebouncemessage - pondered after all that work, why I didn't switch to postfix. * Wed Sep 27 2006 Scott R. Shinn - 1.03-35 - added validrcptto patch * Thu Aug 11 2005 Scott R. Shinn - 1.03-34 - added badmailto patch - disabled smtpd-relay-reject patch * Sun May 22 2005 Scott R. Shinn - added qmail-smtpd-relay-reject patch * Wed Dec 1 2004 Scott R. Shinn - ripped out msglog stuff with great vengence, and furious anger * Sat Dec 27 2003 Scott R. Shinn - Added in the errno patch so this would compile on rh9 - fixed a few minor missing file issues