#!/bin/bash decode() { sed ' :a s/=?\(ISO-8859-15\?\|windows-1252\|UTF-8\)?Q?\([^=_]*\)?=/\2/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)_/\1 / s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=E4/\1ä/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=E9/\1é/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=F6/\1ö/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=F8/\1ř/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=FC/\1ü/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=FD/\1ý/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=DF/\1ß/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=22/\1"/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=2C/\1,/ s/\(=?\(ISO-8859-15\?\|windows-1252\)?Q?[^=]*\)=2E/\1,/ s/\(=?UTF-8?Q?[^=]*\)_/\1 / s/\(=?UTF-8?Q?[^=]*\)=c3=a4/\1ä/ s/\(=?UTF-8?Q?[^=]*\)=c3=b6/\1ö/ s/\(=?UTF-8?Q?[^=]*\)=c3=bc/\1ü/ s/\(=?UTF-8?Q?[^=]*\)=c3=9f/\1ß/ s/\(=?UTF-8?Q?[^=]*\)=c3=98/\1ø/ s/\(=?UTF-8?Q?[^=]*\)=22/\1"/ s/\(=?UTF-8?Q?[^=]*\)=2c/\1,/ ta ' } sed ' :a N s/\n\s\+/ / ta P D ' \ | sed -n ' s@^\(bcc\|Bcc\|BCC\|cc\|Cc\|CC\|To\|Reply-To\): @@ T :b s@^\(\([^"]*"[^"]*"\)*[^"]*\),\s\+@\1\n@g tb p ' \ | sed ' s#^\(.*\S\)\s*<\(\S\+@\S\+\)>$#\2 \1# t /^\S\+@\S\+$/!d ' \ | sort -uf \ | while read -r email comment; do printf '%s %s %s\n' \ "${#comment}" \ "$(echo "$comment" | base64 -w0)" \ "${email}" done \ | sort -k3,3 -k1nr,1 \ | uniq -f2 \ | while read -r _ comment email; do printf '\t%s\t%s\n' \ "$( printf '%s\n' "${comment}" \ | base64 -d \ | sed 's@^\(["'"'"']\)\(.*\)\1@\2@' \ | decode )" \ "${email}" done