52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
MAILDIR=/var/mail/working
|
|
DESTINATION=/output
|
|
DEBUG=0
|
|
|
|
echo "== $(date -Is) =="
|
|
|
|
# retrieve
|
|
fetchmail
|
|
|
|
# shuffle around some files to the working directory
|
|
mv $MAILDIR/new/* $MAILDIR/landing/
|
|
cd $MAILDIR/landing/
|
|
|
|
# process each message in a loop
|
|
shopt -s nullglob
|
|
for i in *
|
|
do
|
|
echo "[$(date '+%T')] Backing up $i and processing..."
|
|
cp $i $MAILDIR/cur/
|
|
mkdir $MAILDIR/extracted/$i
|
|
mv $i $MAILDIR/extracted/$i/
|
|
|
|
munpack -C $MAILDIR/extracted/$i -q $MAILDIR/extracted/$i/$i
|
|
|
|
if [ -f /config/custom-handler ]; then
|
|
# allow custom handler script to do something here
|
|
exec /config/custom-handler "$MAILDIR/extracted/$i/"
|
|
fi
|
|
|
|
echo "[$(date '+%T')] Copying extracted attachments, if any..."
|
|
# need to extract date from email header
|
|
MSGTIMESTAMP=$(cat $MAILDIR/extracted/$i/$i | sed -n 's/^Date: *\([^\n]*\)/\1/p')
|
|
MSGDATE=$(date --date="$MSGTIMESTAMP" '+%F')
|
|
MSGTIME=$(date --date="$MSGTIMESTAMP" '+%H%M%S')
|
|
mkdir -p $DESTINATION/$MSGDATE/$MSGTIME
|
|
rm $MAILDIR/extracted/$i/$i
|
|
for z in $MAILDIR/extracted/$i/*
|
|
do
|
|
cp -v $z $DESTINATION/$MSGDATE/$MSGTIME/$(basename $z)
|
|
rm $z
|
|
done
|
|
done
|
|
|
|
shopt -u nullglob
|
|
|
|
if [[ $DEBUG -eq 0 ]]; then
|
|
rm -fr $MAILDIR/extracted/$i/
|
|
fi
|
|
|
|
echo "[$(date '+%T')] Done!"
|