home · contact · privacy
Handle mailbox files instead of maildirs too.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 3 Dec 2018 17:48:35 +0000 (18:48 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 3 Dec 2018 17:48:35 +0000 (18:48 +0100)
README
pingmail
pingmailrc.example

diff --git a/README b/README
index 5908bcddc5d25368655a67c0f7ad4b65fe4d2299..9ce62079a53cdebc7c1cccffb562c85fdf1f0843 100644 (file)
--- a/README
+++ b/README
@@ -1,5 +1,14 @@
 Small shell script to regularly check a target person's responsiveness via mail.
 
+When run as "pingmail check", tries to derive the last time a person sent a
+mail to the local system by either a) searching a maildir for the most recent
+file matching a regex pattern (such as a "From: " field matching the target
+person), and looking at thta file's modification time, or b) checking the
+modification time of a defined mailbox file. If that point in time is too
+distant, sends an e-mail to the target person requesting some sign of life.
+After some more wait time without a sign of life, sends a warning message to
+another mail address that target person is unresponsive.
+
 When run as "pingmail check", searches a maildir for the most recent file
 matching a regex pattern (such as a "From: " field matching the target person),
 and if the most recent file is too old, sends an e-mail to the target person
index b59fa4906adb4b0ec3fc94cf3f03ade8463be2d5..f40eb0fba5c711bf0649ac6ce4eeaf579e8afe48 100755 (executable)
--- a/pingmail
+++ b/pingmail
@@ -28,19 +28,23 @@ if [ -f $ping_touch ]; then
     modtime_pingfile=`stat $ping_touch --format=%Y`
 fi
 
-# search maildir for last life sign datetime
+# search mailbox or maildir for last life sign datetime
 modtime_mails=0
-while read file; do
-    if [ -z $file ]; then
-        break
-    fi
-    modtime=`stat $file --format=%Y`
-    if [ "$modtime" -gt "$modtime_mails" ]; then
-        modtime_mails=$modtime
-    fi
-done <<EOF
+if [ ! "$mbox" = "" ]; then
+       modtime_mails=`stat "$mbox" --format=%Y`
+else
+       while read file; do
+           if [ -z $file ]; then
+               break
+           fi
+           modtime=`stat $file --format=%Y`
+           if [ "$modtime" -gt "$modtime_mails" ]; then
+               modtime_mails=$modtime
+           fi
+       done <<EOF
 $(grep -lER "$matchstring" $maildir)
 EOF
+fi
 
 # find delta of last life sign datetime / test file modtime and current datetime
 now=`date +%s`
index 97a9de0076d8ce4e899a880895db514f12b6175f..954e8ff0fa13ef66ca030edae587c72d6d39e3f1 100644 (file)
@@ -7,9 +7,6 @@ ping_touch=$testdir'/ping_touch'
 # modification time is when the count for sending checker a warning mail starts
 reminder_touch=$testdir'/reminder_touch'
 
-# to recursively search for most recent matches to $matchstring as lifesigns
-maildir=$HOME'/mail'
-
 # how long to wait for lifesigns before sending a ping; double is time to wait
 # for a lifesign before sending a warning message to checker
 wait_time=86400
@@ -37,6 +34,12 @@ msg2checker='pingmail reporting in:\n
 # mail client command reading message body from stdin and subject from parameter
 mailclient_s='mutt -s'
 
+# mailbox file to check for most recent life sign
+mbox=$HOME'/mail/foo'
+
+# to recursively search for most recent matches to $matchstring as lifesigns
+maildir=$HOME'/mail'
+
 # pattern to search $maildir for recursively for lifesigns
 checked_address_escaped=`echo $checked_address | sed 's/\./\\./g'`
 matchstring='^From: .*('$checked_address_escaped'|alternate@example\.org)'