Listing 2. mailage.sh Script

#!/bin/bash
# mailage.sh - Process each message and keep it
# or discard it.
MAILDATE=/usr/local/bin/maildate.sh
# Write rest of message to output
function writerest () {
   echo "$from $address $dayofweek $month "
   echo "$dayofmonth $time $timezone $year"
   cat -
   # If your cat is broken and doesn't echo
   # lines faithfully then comment
   # the _cat_ line above and uncomment the
   # following four lines
   #  while read -r inputstring
   #  do
   #     echo $inputstring
   #  done
}

# keepdate = integer representation of date before
# which to discard
keepdate=$1
read -r from address dayofweek month dayofmonth \
   time timezone year

# If formail had to fix the message date, there's
# no time zone in it.
if [ X"$year"X = XX ]
then
   year=$timezone
   timezone="GMT"
fi

msgdate=`$MAILDATE $month $dayofmonth $year`

if [ $? -le 1 ] # Parsing OK
then
   # Recent message
   if [ $msgdate -gt $keepdate ]
   then
      writerest
   fi

# Error in date parsing; save message
else
   writerest
fi