jaromail

a commandline tool to easily and privately handle your e-mail
git clone git://parazyd.org/jaromail.git
Log | Files | Refs | Submodules | README

commit 938f43a2d04f3806ac8f539594dd1bd6197c3449
parent 3eec02ee1af607631e0a49b8321f2c5283ad908f
Author: Jaromil <jaromil@dyne.org>
Date:   Thu,  1 Jan 2015 15:50:48 +0100

refinements to delivery

Diffstat:
Msrc/zlibs/filters | 3++-
Msrc/zlibs/helpers | 12++++++++++++
Msrc/zlibs/maildirs | 13++++++++++---
Msrc/zlibs/search | 18+++++++++---------
4 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/src/zlibs/filters b/src/zlibs/filters @@ -135,7 +135,8 @@ EOF # create the notmuch database if not present [[ -r "$MAILDIRS"/cache/notmuch/rc ]] || { notice "Indexing emails in the search database" - nm_index + nm setup + nm new } # compile the list of own addresses and aliases diff --git a/src/zlibs/helpers b/src/zlibs/helpers @@ -51,6 +51,18 @@ isemail() { return $? } +ismailinglist() { + _head=`awk '{ print $0 } +/^$/ { exit }'` + [[ "$_head" =~ "List-Id" ]] \ + || [[ "$_head" =~ "X-BeenThere" ]] \ + || [[ "$_head" =~ "List-Post" ]] \ + || [[ "$_head" =~ "X-Mailman-Version" ]] \ + || [[ "$_head" =~ "Mailing-List" ]] \ + && return 0 + return 1 +} + # parses stdin and converts some characters to html escape_html() { sed -e ' diff --git a/src/zlibs/maildirs b/src/zlibs/maildirs @@ -207,8 +207,8 @@ merge() { } -# very simple LDA delivery to a maildir -# the delicate part is returning all errors +# LDA delivery to a maildir +# important to return 1 on all errors # so that fetchmail does not deletes mail from server deliver() { if [ "$1" = "" ]; then @@ -270,7 +270,14 @@ deliver() { return $? } + _email=`cat` + print "$_email" | ismailinglist + [[ $? = 0 ]] && { + print "$_email" | nm insert --folder="$dest" +filters +mailinglist + return $? + } + # anything else +filters - cat | nm insert --folder="$dest" +filters + print "$_email" | nm insert --folder="$dest" +filters return $? } diff --git a/src/zlibs/search b/src/zlibs/search @@ -27,6 +27,7 @@ # internal use nm() { + func "notmuch $@" [[ -r "$MAILDIRS"/cache/notmuch/rc ]] || nm_setup notmuch --config="$MAILDIRS"/cache/notmuch/rc ${@} _res=$? @@ -87,15 +88,10 @@ nm_index() { act "please wait, this may take a while..." nm_setup nm new - act "tagging inbox" - nm tag +inbox +priv folder:known - nm tag +inbox +priv folder:sent - act "tagging priv" - nm tag +priv folder:priv - act "tagging unsorted" - nm tag +unsorted folder:unsorted - nm tag +unsorted folder:unsorted.ml - nm tag +unsorted folder:lists. + nm tag +inbox +priv -unsorted folder:known + nm tag +inbox +priv -unsorted folder:sent + nm tag -inbox +priv -unsorted folder:priv + nm tag -inbox -priv +unsorted folder:unsorted act "compressing database" nm compact notice "Indexing completed" @@ -173,6 +169,10 @@ user_agent = Jaro Mail <http://jaromail.dyne.org> translated = ⚷ [[signed]] translated = ✍ + [[filters]] + translated = ⚙ + [[mailinglist]] + translated = ☰ EOF alot -c "$MAILDIRS"/cache/alot/rc -n "$MAILDIRS"/cache/notmuch/rc \