Skip to content

Instantly share code, notes, and snippets.

@goodevilgenius
Last active October 26, 2017 14:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goodevilgenius/5544912 to your computer and use it in GitHub Desktop.
Save goodevilgenius/5544912 to your computer and use it in GitHub Desktop.
[Email tagger] Used from a procmail filter to tag email, using the X-Tags header. Reads email from stdin. Writes tagged email to stdout. Usage: addTags.sh tag1 tag2 tag3 ... #email #procmail
#!/bin/bash
if [ -z "$1" ]
then
cat
exit
fi
tmp=$(mktemp -t addTag.XXXXXX)
cat > $tmp
tags="$(formail -z -x X-Tags: <$tmp)"
while [ $# -ne 0 ]
do
if ! echo "$tags" | grep "$1" >/dev/null
then
[ -z "$tags" ] && newtags=$1 || newtags="$tags $1"
formail -I "X-Tags: $newtags" <$tmp >$tmp.2
mv $tmp.2 $tmp
tags="$(formail -z -x X-Tags: <$tmp)"
fi
shift
done
cat $tmp
rm $tmp
##
## addTag.sh
##
## Made by Dan Jones
## Email <dan@danielrayjones.com>
##
## Started on Thu Nov 8 07:53:26 2007 Dan Jones
## Last update Tue Jun 18 22:09:25 EDT 2013 Dan Jones
##
## Gist: 5544912
##
## Copyright (c) 2013, Daniel Ray Jones
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without modification,
## are permitted provided that the following conditions are met:
##
## 1. Redistributions of source code must retain the above copyright notice, this
## list of conditions and the following disclaimer.
##
## 2. Redistributions in binary form must reproduce the above copyright notice,
## this list of conditions and the following disclaimer in the documentation
## and/or other materials provided with the distribution.
##
## 3. The name of the author may not be used to endorse or promote products derived
## from this software without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
## SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
## OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
## IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
## OF SUCH DAMAGE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment