commit 56d0edaa3ef47245a49045cb6e2d90f340857ac6
parent 5bcaa0d3e80c7cb6c96931e6309f80d73d394a31
Author: Jaromil <jaromil@dyne.org>
Date: Wed, 13 May 2015 14:21:25 +0200
checksum control on queue to outbox, early quiet and debug flag fix, better group sending
Diffstat:
4 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -30,8 +30,8 @@ JAROMAILEXEC=$0
umask 066
# honor quiet and debug flags as early as possible
-if [[ ${@} == *-q* ]]; then quiet=1; fi
-if [[ ${@} == *-D* ]]; then debug=1; fi
+if [[ ${@} == *-q* ]]; then QUIET=1; fi
+if [[ ${@} == *-D* ]]; then DEBUG=1; fi
# check if we are inside the directory
@@ -143,7 +143,7 @@ vars+=(e_parsed)
# global array for maildirs (filled by list_maildirs)
typeset -al maildirs
-
+vars+=(last_deliver)
# global variable for mutt binary
vars+=(mutt pgpewrap dotlock)
diff --git a/src/mutt/general b/src/mutt/general
@@ -18,7 +18,8 @@ unset suspend
unset wait_key
set send_charset = utf-8
-set assumed_charset = us-ascii
+set assumed_charset = utf-8
+# assumed was us-ascii
#set charset = iso-8859-1
#set send_charset = us-ascii
diff --git a/src/zlibs/email b/src/zlibs/email
@@ -46,9 +46,14 @@ queue() {
/User-Agent:/ { print "User-Agent: Jaro Mail <http://jaromail.dyne.org>"; next }
{ print $0 }
' > "$tmpqueue"
+ [[ $? = 0 ]] || { error "Error queing email from stdin into outbox"; return 1 }
+
+ # calculate the sha1sum of the body to check integrity of delivery
+ _sha1sum=`body $ztmpfile | sha1sum -t`
+ _sha1sum=${_sha1sum[(w)1]}
maildirmake "$MAILDIRS/outbox"
- ${=mkdir} "$MAILDIRS/outbox/send"
+ # ${=mkdir} "$MAILDIRS/outbox/send"
lock "$MAILDIRS/outbox"
# check if recipients are a Group
@@ -64,8 +69,8 @@ queue() {
error "Group not found: $groupfile"
return 1 }
- grep -v '^#' $MAILDIRS/Groups/$groupfile | sysread recipients
- groupnum=`print ${recipients} | wc -l`
+ recipients=`grep -v '^#' $MAILDIRS/Groups/$groupfile`
+ groupnum=`grep -v '^#' $MAILDIRS/Groups/$groupfile | wc -l`
groupmode=`head -n1 "$MAILDIRS/Groups/$groupfile" | awk '/^#mode/ { print $2 } { next }'`
[[ "$groupmode" = "" ]] && { groupmode="individual" }
act "$groupnum recipients in total, sending mode $groupmode"
@@ -79,7 +84,7 @@ queue() {
ig=${base}-${RANDOM}
cat "$tmpqueue" | \
awk '/^To:/ { print "'"To: $i"'"; next } { print $0 }' \
- > "${MAILDIRS}/outbox/new/${ig}.mail"
+ | deliver outbox # > "${MAILDIRS}/outbox/new/${ig}.mail"
done
;;
@@ -95,18 +100,27 @@ queue() {
cat "$tmpqueue" | \
awk '/^To:/ { print "'"To: $cc"'"; print "'"Reply-To: $cc"'"; next }
{ print $0 }' \
- > "${MAILDIRS}/outbox/new/${ig}.mail"
+ | deliver outbox # "${MAILDIRS}/outbox/new/${ig}.mail"
;;
esac
else
# recipients are set in the email envelope
- printfile "$tmpqueue" | deliver "outbox"
+ printfile "$tmpqueue" | deliver outbox
fi
-
+
unlock "$MAILDIRS/outbox"
- return 0
+ _sha1sum_delivered=`body $last_deliver | sha1sum -t`
+ _sha1sum_delivered=${_sha1sum_delivered[(w)1]}
+ if [[ "$_sha1sum_delivered" = "$_sha1sum" ]]; then
+ func "correct delivery, SHA1 checksum on body match"
+ return 0
+ fi
+
+ error "Error on delivery, file checksum don't match"
+ return 1
+
}
###########
diff --git a/src/zlibs/maildirs b/src/zlibs/maildirs
@@ -223,7 +223,8 @@ deliver() {
# || [[ "$dest" =~ "^zz." ]] \
# || [[ "$dest" = "incoming" ]] && {
base="`hostname`_jaro_`date +%Y-%m-%d_%H-%M-%S`_$RANDOM"
- cat > "$MAILDIRS/$dest/new/$base"
+ last_deliver="$MAILDIRS/$dest/new/$base"
+ cat > "$last_deliver"
[[ $? = 0 ]] || {
error "Could not deliver email file into maildir $dest"
func "Returning error to caller."