docker-save-attachments/save-attachments.sh

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 -p $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 --no-preserve=mode,ownership $z $DESTINATION/$MSGDATE/$MSGTIME/$(basename $z)
rm $z
done
if [[ $DEBUG -eq 0 ]]; then
rm -fr $MAILDIR/extracted/$i/
fi
done
shopt -u nullglob
echo "[$(date '+%T')] Done!"