commit 683a3eca078f051e1213f12c2513f53b284b5fbb
parent 4bf024b1003be096a16c49a3cfaad959da9ba81e
Author: Jaromil <jaromil@dyne.org>
Date: Sun, 3 Jun 2012 12:26:58 +0200
function and hotkey to forget addresses in whitelist
Diffstat:
M | src/jaro | | | 38 | +++++++++++++++++++++++++++++--------- |
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -131,7 +131,7 @@ cleanexit() {
# make sure tmp is wiped from sensitive data in case of sigINT
TRAPINT() {
error "Caught signal, aborting operations."
- cleanexit
+ { test $CLEANEXIT = 1 } && { cleanexit }
if [ "$DEBUG" = "1" ]; then
return 1
else
@@ -737,7 +737,6 @@ set spoolfile = $MAILDIRS/known/
set record = $MAILDIRS/sent/
set postponed= $MAILDIRS/postponed/
set tmpdir = $WORKDIR/cache
-set query_command = "$WORKDIR/bin/jaro -q query '%s'"
set sendmail = "$WORKDIR/bin/jaro queue"
set header_cache= $WORKDIR/cache
set maildir_header_cache_verify=no
@@ -746,8 +745,8 @@ set mailcap_path = "$WORKDIR/mailcap"
# Little Brother Database
set query_command = "$WORKDIR/bin/jaro -q query '%s'"
-macro index,pager A "<pipe-message>$WORKDIR/bin/jaro -q learn" "add the sender address to lbdb"
-macro index,pager + "<pipe-message>$WORKDIR/bin/jaro -q learn" "add the sender address to lbdb"
+macro index,pager A "<pipe-message>$WORKDIR/bin/jaro -q learn" "add sender to whitelist"
+macro index,pager Z "<pipe-message>$WORKDIR/bin/jaro -q forget" "remove sender from whitelist
EOF
@@ -913,7 +912,6 @@ query() {
exitcode=$?
fi
}
-
learn() {
if [ $QUIET = 1 ]; then
${WORKDIR}/.lbdb/lbdb-fetchaddr -a > /dev/null
@@ -924,6 +922,20 @@ learn() {
exitcode=$?
fi
}
+forget() {
+ { test $QUIET != 1 } && { act "Forgetting address from mail pipe in stdin" }
+ addr=`cat | formail -x"From:" \
+ | head -n1 \
+ | tr 'A-Z' 'a-z' \
+ | sed 's/.*\W\([0-9a-z_.-]\+@[0-9a-z_.-]\+\).*/\1/'`
+ func "forgetting address: $addr"
+ newlock $WORKDIR/tmp/forget-addr
+ awk "/$addr/"' { next; }
+{ print $0 }' ${WORKDIR}/.lbdb/m_inmail.list \
+ >> $WORKDIR/tmp/forget-addr
+ cp $WORKDIR/tmp/forget-addr ${WORKDIR}/.lbdb/m_inmail.list
+ unlock $WORKDIR/tmp/forget-addr
+}
###################
######################
@@ -1071,7 +1083,8 @@ Maintenance commands:
queue add a mail into outbox
query query a name from addressbook
- learn learn known addresses from mails piped in stdin
+ learn learn addresses found in mails piped in stdin
+ forget forget sender addresses found in mails piped in stdin
backup move all mails older than N days from a maildir to another
rmdupes remove all duplicate mails into a maildir
@@ -1106,15 +1119,20 @@ main()
subcommands_opts[compose]=""
subcommands_opts[peek]=""
subcommands_opts[update]=""
+
subcommands_opts[query]=""
subcommands_opts[learn]=""
- subcommands_opts[source]=""
- subcommands_opts[cert]=""
+ subcommands_opts[forget]=""
+
subcommands_opts[backup]=""
subcommands_opts[rmdupes]=""
subcommands_opts[merge]=""
subcommands_opts[filter]=""
+ subcommands_opts[cert]=""
+
+ subcommands_opts[source]=""
+
# subcommands_opts[mount]=${subcommands_opts[open]}
# subcommands_opts[create]="s: -size=s -ignore-swap k: -key=k"
### Detect subcommand
@@ -1189,19 +1207,21 @@ main()
send) send ${PARAM} ;;
peek) peek ${PARAM} ;;
read) mutt -F $MUTTDIR/rc ;;
- cert) cert ${PARAM} ;;
compose) mutt -F $MUTTDIR/rc ${PARAM} ;;
update) update ;;
query) CLEANEXIT=0; query ${PARAM} ;;
learn) CLEANEXIT=0; learn ${PARAM} ;;
+ forget) CLEANEXIT=0; forget ${PARAM} ;;
backup) backup ${PARAM} ;;
rmdupes) rmdupes ${PARAM} ;;
merge) merge ${PARAM} ;;
filter) filter ${PARAM} ;;
+ cert) cert ${PARAM} ;;
+
'source') return 0 ;;
__default) ;;
*) error "command \"$subcommand\" not recognized"