-cat /usr/lib/local-aliases >> /usr/lib/aliases.new
-/bin/cp /dev/null /u1/usr/lib/aliases.new.dir
-/bin/cp /dev/null /u1/usr/lib/aliases.new.pag
-/usr/lib/sendmail -bi -oA/u1/usr/lib/aliases.new
+MR_MISSINGFILE=47836473
+MR_NOCRED=47836470
+
+root=/usr/local/sendmail
+
+if [ -r $root/etc/aliases.new ]; then
+ chmod 644 $root/etc/aliases.new
+else
+ exit $MR_MISSINGFILE
+fi
+
+if [ ! -r $root/etc/aliases ]; then
+ logger -p mail.error -t mailhub.sh "No current aliases file, aborting."
+ exit $MR_NOCRED
+fi
+
+# Play it safe and be sure we have reasonable data
+olines=`wc -l $root/etc/aliases | awk '{print $1}'`
+nlines=`wc -l $root/etc/aliases.new | awk '{print $1}'`
+diff=`expr $nlines - $olines`
+thresh=`expr $olines / 10`
+
+# Catch the zero case
+if [ $nlines -eq 0 ]; then
+ logger -p mail.error -t mailhub.sh "Recieved empty aliases file, aborting."
+ exit $MR_MISSINGFILE
+fi
+
+# If its a greater than 10% shift bomb out to be safe
+if [ $diff -gt $thresh ]; then
+ logger -p mail.error -t mailhub.sh "Alias changes threshold exceeded, aborting."
+ exit $MR_NOCRED
+fi
+
+cp /dev/null $root/etc/aliases.new.db
+
+$root/sbin/sendmail -bi -oA$root/etc/aliases.new