Reading files in realtime is tricky things in bash.
It's not built to be doing things simultaineous, as in reading a file and doing things with it.
You're better of using perl or some language that is built for this.
You can however mimic this behaviour by doing something like this. (This is not stream reading a file!)
Code:
#!/bin/bash
old_len=0
len=0
while [ true ]; do
len=$(wc -l /var/log/mail | awk {'print $1'})
if [ $len -ge $old_len ]; then
content=$(egrep "to=\<\(?:[^\>]\+\)\>\s\+status=sent" /var/log/mail)
# ... process content of $content here, most likely a regexp solution (using sed) or awk can be used.
# But since I don't have a mail log file available atm I can't do this part :)
fi
old_len=$len
sleep 3600
done
There's a possible performance issue using this thou, when the file is very large (as in 30mb+ in size) it can take a very long time to process.
This will work even if the file rotates, which is not the case if the file is read constantly... it will only be delayed for up to "sleep" seconds

Best regards
Fredrik eriksson