Hi,

I just noticed that I am doing this waaaayyyy to complicated. How about just this:

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys
import subprocess
from string import Template
import re
sub_temp = Template("nice -n 19 ionice -c3 /package/host/localhost/dspam/bin/dspam \
--source=error --class=$type --signature='$sig'")
sig_re = "[0-9A-Fa-f]*"
sig_test = re.compile("^" + sig_re + "$")
#check python version as we are using argpaser instead of optparser
if not ((int(sys.version_info[0]), int(sys.version[2])) >= (2,7)) :
print("This program uses packages only avaiable in python 2.7 and above")
exit(1)
#this should be build in since python 2.7
import argparse
def main():
parser = argparse.ArgumentParser(description='Pipe Inputmail to dspam-learn as ham or spam')
parser.add_argument('val', choices=['innocent', 'spam'])
args = parser.parse_args()
for line in sys.stdin:
if line.startswith("X-DSPAM-Signature:"):
sig = line.split()[-1]
if sig_test.match(sig):
subprocess.call(sub_temp.substitute(type=args.val, sig=sig), shell=True)
if __name__ == '__main__':
main()

No mail parsing, works with attachments as well as normal forwarded emails and less stuff that could potentially blow up! Also, subprocess gets filtered for the signature so no