- run newaliases only when necessary

This commit is contained in:
Miroslav Lichvar 2008-12-19 13:23:41 +00:00
parent e861a83e20
commit 45fbb3396d
3 changed files with 51 additions and 5 deletions

View File

@ -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"

View File

@ -50,7 +50,7 @@ updateconf() {
warning
echo
fi
/usr/bin/newaliases > /dev/null 2>&1
/etc/mail/make aliases > /dev/null 2>&1
}
start() {

View File

@ -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 <mlichvar@redhat.com> 8.14.3-3
- run newaliases only when necessary
* Wed Dec 03 2008 Miroslav Lichvar <mlichvar@redhat.com> 8.14.3-2
- add NM dispatcher script (#451575)
- print warning on service start when sendmail-cf is required (#447148)