From 45fbb3396dd262a5f85c0d1cceab52e35aa48e52 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Dec 19 2008 13:23:41 +0000 Subject: - run newaliases only when necessary --- diff --git a/sendmail.etc-mail-make b/sendmail.etc-mail-make index 6e962d8..f345b43 100644 --- a/sendmail.etc-mail-make +++ b/sendmail.etc-mail-make @@ -23,6 +23,43 @@ makedb() { fi } +makealiasesdb() { + uptodate=1 + + if [ -z "$SM_FORCE_DBREBUILD" ]; then + files=$(grep '^O AliasFile=' sendmail.cf | + while read a; do echo ${a#*=}; done) + + for a in $files; do + if [ "$a" = /etc/aliases ]; then + # /etc/aliases.db may be used by other MTA, make sure nothing + # has touched it since our last newaliases call + test "$a" -nt "${a}.db" || + test aliasesdb-stamp -nt "${a}.db" || + test aliasesdb-stamp -ot "${a}.db" || continue + else + test "$a" -nt "${a}.db" || continue + fi + + uptodate=0 + break + done + else + uptodate=0 + fi + + [ $uptodate = 1 ] && return 0 + + # check if alternatives is configured to sendmail + if [ "$(readlink -e /usr/bin/newaliases)" = /usr/sbin/sendmail.sendmail ] + then + /usr/bin/newaliases > /dev/null + touch -r /etc/aliases.db aliasesdb-stamp 2> /dev/null + else + rm -f aliasesdb-stamp + fi +} + makecf() { mc=${1%.cf}.mc @@ -76,8 +113,11 @@ for target; do all) makeall ;; + aliases) + makealiasesdb + ;; clean) - rm -f *.db *~ + rm -f *.db *~ aliasesdb-stamp ;; start|stop|restart) service sendmail "$target" diff --git a/sendmail.init b/sendmail.init index 87f3b8f..8430622 100644 --- a/sendmail.init +++ b/sendmail.init @@ -50,7 +50,7 @@ updateconf() { warning echo fi - /usr/bin/newaliases > /dev/null 2>&1 + /etc/mail/make aliases > /dev/null 2>&1 } start() { diff --git a/sendmail.spec b/sendmail.spec index 8029f2a..b203e81 100644 --- a/sendmail.spec +++ b/sendmail.spec @@ -15,7 +15,7 @@ Summary: A widely used Mail Transport Agent (MTA) Name: sendmail Version: 8.14.3 -Release: 2%{?dist} +Release: 3%{?dist} License: Sendmail Group: System Environment/Daemons URL: http://www.sendmail.org/ @@ -352,6 +352,8 @@ for map in virtusertable access domaintable mailertable ; do chmod 0644 %{buildroot}%{maildir}/${map}.db done +touch %{buildroot}%{maildir}/aliasesdb-stamp + install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/sendmail install -p -m 755 %{SOURCE1} %{buildroot}%{_initrddir}/sendmail install -p -m 755 %{SOURCE2} %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/10-sendmail @@ -426,8 +428,8 @@ exit 0 chown root %{_sysconfdir}/aliases.db %{maildir}/access.db \ %{maildir}/mailertable.db %{maildir}/domaintable.db \ %{maildir}/virtusertable.db - %{_bindir}/newaliases - SM_FORCE_DBREBUILD=1 /etc/mail/make + SM_FORCE_DBREBUILD=1 %{maildir}/make + SM_FORCE_DBREBUILD=1 %{maildir}/make aliases } > /dev/null 2>&1 exit 0 @@ -491,6 +493,7 @@ exit 0 %config(noreplace) %{maildir}/trusted-users %config(noreplace) %{maildir}/virtusertable +%ghost %{maildir}/aliasesdb-stamp %ghost %{maildir}/virtusertable.db %ghost %{maildir}/access.db %ghost %{maildir}/domaintable.db @@ -541,6 +544,9 @@ exit 0 %changelog +* Fri Dec 19 2008 Miroslav Lichvar 8.14.3-3 +- run newaliases only when necessary + * Wed Dec 03 2008 Miroslav Lichvar 8.14.3-2 - add NM dispatcher script (#451575) - print warning on service start when sendmail-cf is required (#447148)