#!/bin/sh set -u package=exim version=4.43 release=1 eximuser=eximuser eximgroup=mailadm set +e rpmbuild=rpmbuild alternatives=0 if ver=`rpm -q --qf '%{VERSION}' redhat-release`; then dist=redhat initlocation=etc/rc.d/init.d release="$release.rhl${ver/./}" major=${ver%%.*} if [ $major -ge 9 ]; then alternatives=1 fi elif ver=`rpm -q --qf '%{VERSION}' suse-release`; then dist=suse initlocation=etc/init.d release="$release.suse${ver/./}" else echo "$0: Unknown distribution - halting" >&2 exit 1 fi set -e function writespec { cat < Source0: %{name}-%{version}.tar.bz2 Source1: %{name}-Makefile Source2: %{name}-sysconfig Source3: %{name}-init Source4: %{name}-logrotate Patch2: %{name}-configfix Summary: Mail Transfer Agent BuildRoot: $dir/%{name}-%{version}-root Provides: %{smtpdaemon} Provides: %{_sbindir}/sendmail %{_bindir}/mailq %{_bindir}/runq %if %{alternatives} Prereq: /usr/sbin/alternatives %endif %if %{dist} == redhat Prereq: chkconfig >= 1.3 %endif Prereq: /usr/sbin/useradd /usr/sbin/groupadd fileutils sh-utils %if %{dist} == suse Prereq: insserv Requires: netcfg %endif %description Exim is a mail transfer agent (MTA) for hosts that are running Unix or Unix-like operating systems. It was designed on the assumption that it would be run on hosts that are permanently connected to the Internet. However, it can be used on intermittently connected hosts with suitable configuration adjustments. %if %{buildmonitor} %package monitor Summary: Monitor mail queue Group: Applications/System %description monitor Monitor mail queues %endif %prep %setup -q %patch2 -p1 cp exim_monitor/EDITME Local/eximon.conf %if %{buildmonitor} cp %{_sourcedir}/%{name}-Makefile Local/Makefile %else sed 's/^EXIM_MONITOR/# EXIM_MONITOR/' <%{_sourcedir}/%{name}-Makefile >Local/Makefile %endif mv doc/README doc/README.DOCS %build EXIM_ARCHTYPE=i386 make CFLAGS=-O2 %install for i in /usr/bin /usr/sbin /etc/exim /usr/share/doc /usr/lib \\ %{_mandir}/man8 /etc/sysconfig /$initlocation/ /etc/logrotate.d \\ /var/log/exim /var/spool/exim; do mkdir -p %{buildroot}/\$i done for i in exim exim_dumpdb exim_fixdb exim_tidydb exinext \\ exiwhat exim_dbmbuild exicyclog exigrep eximstats exiqsumm \\ exim_lock exim_checkaccess; do cp build-Linux-i386/\$i %{buildroot}/usr/sbin/ done %if %{buildmonitor} for i in eximon eximon.bin; do cp build-Linux-i386/\$i %{buildroot}/usr/sbin/ done %endif cp src/configure.default %{buildroot}/etc/exim/config cp src/aliases.default %{buildroot}/etc/exim/aliases for i in /usr/sbin/sendmail /usr/bin/mailq /usr/bin/runq; do %if %{alternatives} ln -s ../sbin/exim %{buildroot}\$i.exim %else ln -s ../sbin/exim %{buildroot}\$i %endif done ln -s ../sbin/sendmail %{buildroot}/usr/lib/sendmail cp %{_sourcedir}/%{name}-sysconfig %{buildroot}/etc/sysconfig/exim cp %{_sourcedir}/%{name}-init %{buildroot}/$initlocation/exim cp %{_sourcedir}/%{name}-logrotate %{buildroot}/etc/logrotate.d/exim mv doc/exim.8 %{buildroot}/%{_mandir}/man8/exim.8 %clean rm -rf %{buildroot} %files %defattr(0755,root,root) %config(noreplace) /etc/exim/config %config(noreplace) /$initlocation/exim %config(noreplace) /etc/exim/aliases %config(noreplace) /etc/sysconfig/exim %config(noreplace) /etc/logrotate.d/exim %attr(4755,root,root) /usr/sbin/exim /usr/sbin/exim_dumpdb /usr/sbin/exim_fixdb /usr/sbin/exim_tidydb /usr/sbin/exinext /usr/sbin/exiwhat /usr/sbin/exim_dbmbuild /usr/sbin/exicyclog /usr/sbin/exigrep /usr/sbin/eximstats /usr/sbin/exiqsumm /usr/sbin/exim_lock /usr/sbin/exim_checkaccess %{_mandir}/man8/exim.8* %attr(0755,$eximuser,$eximgroup) /var/log/exim %attr(0755,$eximuser,$eximgroup) /var/spool/exim /usr/lib/sendmail %if %{alternatives} /usr/sbin/sendmail.exim /usr/bin/mailq.exim /usr/bin/runq.exim %else /usr/sbin/sendmail /usr/bin/mailq /usr/bin/runq %endif %defattr(-,root,root) %doc doc/* CHANGES LICENCE NOTICE README README.UPDATING src/configure.default %if %{buildmonitor} %files monitor /usr/sbin/eximon /usr/sbin/eximon.bin %endif %pre output=\`/usr/sbin/groupadd -r $eximgroup 2>&1\` if [ \$? -ne 0 -a \$? -ne 9 ]; then echo "\$output" >&2 exit 1 fi output=\`/usr/sbin/useradd -c "Exim MTA" -d /var/spool/exim -g $eximgroup -m -r -s /dev/null $eximuser 2>&1\` if [ \$? -ne 0 -a \$? -ne 9 ]; then echo "\$output" >&2 exit 1 fi %post for i in main process panic reject; do touch /var/log/exim/\${i}log chown $eximuser:$eximgroup /var/log/exim/\${i}log chmod 644 /var/log/exim/\${i}log done %if %{alternatives} /usr/sbin/alternatives --install %{_sbindir}/sendmail mta %{_sbindir}/sendmail.exim 90 \\ --slave %{_bindir}/mailq mta-mailq %{_bindir}/mailq.exim \\ --slave %{_bindir}/runq mta-runqq %{_bindir}/runq.exim \\ --slave %{_bindir}/newaliases mta-newaliases /bin/true \\ --slave %{_bindir}/rmail mta-rmail /bin/false \\ --initscript exim %endif /sbin/chkconfig --add %{name} %preun if [ "\$1" = 0 ] then /sbin/service %{name} stop > /dev/null 2>&1 /sbin/chkconfig --del %{name} fi %postun if [ "\$1" -ge "1" ]; then /sbin/service %{name} condrestart >/dev/null 2>&1 fi %changelog * Sun Mar 21 2004 Peter Benie - Made the alternatives support optional * Wed Sep 17 2003 Peter Benie - Incorported fix to init file from jp107. Now use -oP to force a pid file, even when there is no smtp listener. * Thu Jan 30 2003 Peter Benie - Removed scanner patch, changed configuration to suite engineering dept. * Sat Dec 21 2002 Peter Benie - Packaged up version 4.12 * Wed Dec 11 2002 Peter Benie - Packaged up version 4.11 * Thu Dec 5 2002 Peter Benie - Applied security patch for pid filename generation * Mon Jul 22 2002 Peter Benie - Packaged up version 4.10 * Mon Jun 24 2002 Peter Benie - Packaged up version 4.05 EOF } function writeMakefile { cat < /dev/null 2>&1 rc_status -v ;; stop) echo -n "Shutting down mail service (Exim)" /sbin/killproc -p /var/run/exim.pid -TERM /usr/sbin/exim rc_status -v ;; try-restart) \$0 status >/dev/null && \$0 restart rc_status ;; restart) \$0 stop \$0 start rc_status ;; force-reload) echo -n "Reload mail service (Exim)" /sbin/killproc -p /usr/sbin/exim.pid -HUP /usr/sbin/exim rc_status -v ;; reload) echo -n "Reload mail service (Exim)" /sbin/killproc -p /var/run/exim.pid -HUP /usr/sbin/exim rc_status -v ;; status) echo -n "Checking for service Exim: " /sbin/checkproc -p /var/run/exim.pid /usr/sbin/exim rc_status -v ;; *) echo "Usage: \$0 {start|stop|status|try-restart|restart|force-reload|reload}" exit 1 ;; esac rc_exit EOF } function writelogrotate { cat <"$dir/$package.spec" if [ $dist = suse ]; then writeinitsuse >"$dir/$package-init" else writeinitrh >"$dir/$package-init" fi writeMakefile >"$dir/$package-Makefile" writesysconfig >"$dir/$package-sysconfig" writelogrotate >"$dir/$package-logrotate" writeconfigfix >"$dir/$package-configfix" echo "%_topdir $dir %_tmppath $dir" >>"$dir/macros" echo "`rpm --showrc | grep '^macrofiles *:'`:$dir/macros" >"$dir/rpmrc" for i in SPECS SOURCES BUILD SRPMS RPMS i386 i586; do ln -nfs . "$dir/$i"; done rpmbuild --rcfile "/usr/lib/rpm/rpmrc:$dir/rpmrc" -bb "$dir/$package.spec" cp "$dir/"*.rpm .