home · contact · privacy
Use mailutils' mail as default mail sender.
[pingmail.git] / pingmail
1 #!/bin/sh
2
3 set -e
4
5 # read in dotfile
6 pingmailrc=$HOME'/.pingmailrc'
7 if [ ! -f $pingmailrc ]; then
8     echo 'No .pingmailrc found at '$pingmailrc', aborting.'
9     exit
10 fi
11 . $HOME'/.pingmailrc'
12 mkdir -p $testdir
13
14 # interpret arguments
15 if [ "$1" = "check" ]; then
16     continue
17 elif [ "$1" = "touch" ]; then
18     touch $ping_touch
19     exit
20 else
21     echo 'usage: '$0' COMMAND\n(COMMAND one of "check", "touch")'
22     exit
23 fi
24
25 # check test file for last modtime 
26 modtime_pingfile=0
27 if [ -f $ping_touch ]; then
28     modtime_pingfile=`stat $ping_touch --format=%Y`
29 fi
30
31 # search mailbox or maildir for last life sign datetime
32 modtime_mails=0
33 if [ ! "$mbox" = "" ]; then
34         modtime_mails=`stat "$mbox" --format=%Y`
35 else
36         while read file; do
37             if [ -z $file ]; then
38                 break
39             fi
40             modtime=`stat $file --format=%Y`
41             if [ "$modtime" -gt "$modtime_mails" ]; then
42                 modtime_mails=$modtime
43             fi
44         done <<EOF
45 $(grep -lER "$matchstring" $maildir)
46 EOF
47 fi
48
49 # find delta of last life sign datetime / test file modtime and current datetime
50 now=`date +%s`
51 modtime=0
52 if [ "$modtime_mails" -gt "$modtime_pingfile" ]; then
53     echo "The most recent life sign is in the mails."
54     modtime=$modtime_mails
55 else
56     echo "Ping wait file was updated more recently than last life sign from the mails."
57     modtime=$modtime_pingfile
58 fi
59 delta=`expr $now - $modtime`
60 echo "Wait time since last life sign or ping sent: "$delta" seconds."
61
62 # if delta > wait time, send reminder to person to check with, start reminder
63 # mail timer if not in existence, re-touch ping wait file
64 if [ "$delta" -gt "$wait_time" ]; then
65     echo $msg2checked | $mailclient_s "$subj2checked" $checked_address
66     echo "Sending ping message."
67     touch $ping_touch
68     if [ ! -f "$reminder_touch" ]; then
69         touch $reminder_touch
70         echo "Creating reminder message wait time file."
71     fi
72 fi
73
74 # if last life sign datetime / test file modtime > modtime of reminder touch
75 # file, delete it; otherwise, if delta between those > wait time, send reminder
76 # to person checking and then delete reminder touch file 
77 if [ -f "$reminder_touch" ]; then
78     modtime_reminder=`stat $reminder_touch --format=%Y`
79     if [ "$modtime" -gt "$modtime_reminder" ]; then
80         rm $reminder_touch
81         echo "Deleting reminder message wait time file."
82     else
83         delta=`expr $now - $modtime_reminder`
84         if [ "$delta" -gt "$wait_time" ]; then
85             echo $msg2checker | $mailclient_s "$subj2checker" $checker_address
86             echo "Sending reminder message."
87             rm $reminder_touch
88             echo "Deleting reminder message wait time file."
89         fi
90     fi
91 fi