Hi,
(I'm sending this to -users because this seems like a user question. If this
is more appropriate to send to -workers, my apologies. I can resend.)
I'm having trouble getting the pipe filter source working. In my incoming
filter I have the following:
pipe "~/bin/tmda-fingerprint -q" accept
I use TMDA fingerprints on all of my outgoing email. That program checks
the fingerprint and if it matches, it returns 0 exit status. This allows me
to send myself email without being in my own whitelist (*). I've attached
a copy of the tmda-fingerprint program.
As far as I can tell, the tmda-fingerprint works and correctly returns the
status that it's supposed to. But I can't seem to get this to work in TMDA.
I sent myself an email, and it ended up going into pending:
Date: Thu Mar 4 12:08:32 EST 2004
XPri: [EMAIL PROTECTED]
Sndr: [EMAIL PROTECTED]
From: Mark Horn <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subj: testing 5
Actn: CONFIRM pending 1078420112.13638.msg
Now, when I take that message and send it through my program here's what
I get:
$ cat .tmda/pending/1078420112.13638.msg | bin/tmda-fingerprint -q
$ echo $?
0
$
So, it looks to me like it's performing like it should. What am I doing
wrong?
Thanks,
- Mark
(*) I get a lot of spam that uses my email address as both the from and
to address. Which means that I need something more reliable in determing
if I really sent myself email. I could do this a number of different
ways, I just like this way.
#!/usr/bin/env python
#
# Copyright (C) 2001,2002 Jason R. Mastaler <[EMAIL PROTECTED]>
# Modifications made by Mark Horn to make a fingerprint checker
#
# This file is part of TMDA.
#
# TMDA is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. A copy of this license should
# be included in the file COPYING.
#
# TMDA is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with TMDA; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Tag and send outgoing messages.
Usage: %(program)s [OPTIONS]
OPTIONS:
-h
--help
Print this help message and exit.
-V
--version
Print TMDA version information and exit.
-c <file>
--config-file <file>
Specify a different configuration file other than ~/.tmda/config.
-H
--header
The message will be sent to standard output with an additional
header (X-TMDA-Fingerprint-Match) set to "Yes" if the fingerprints
match and "No" if they don't.
"""
import getopt
import os
import sys
try:
import paths
except ImportError:
# Prepend /usr/lib/python2.x/site-packages/TMDA/pythonlib
sitedir = os.path.join(sys.prefix, 'lib', 'python'+sys.version[:3],
'site-packages', 'TMDA', 'pythonlib')
sys.path.insert(0, sitedir)
from TMDA import Version
header = None
quiet = None
program = sys.argv[0]
def usage(code, msg=''):
print __doc__ % globals()
if msg:
print msg
sys.exit(code)
try:
opts, args = getopt.getopt(sys.argv[1:],
'c:VhHq', ['config-file=',
'version',
'help',
'header',
'quiet'])
except getopt.error, msg:
usage(1, msg)
for opt, arg in opts:
if opt in ('-h', '--help'):
usage(0)
if opt == '-V':
print Version.ALL
sys.exit()
if opt == '--version':
print Version.TMDA
sys.exit()
elif opt in ('-c', '--config-file'):
os.environ['TMDARC'] = arg
elif opt in ('-H', '--header'):
header = 1
elif opt in ('-q', '--quiet'):
quiet = 1
from TMDA import Defaults
from TMDA import Cookie
from TMDA import Util
import email
import string
msgout = email.message_from_file(sys.stdin)
orig_msgout_as_string = msgout.as_string()
orig_msgout_size = len(orig_msgout_as_string)
orig_msgout_body_as_raw_string = Util.body_as_raw_string(msgout)
orig_fingerprint = msgout.get("X-TMDA-Fingerprint")
if header:
del msgout['X-TMDA-Fingerprint-Match']
if Defaults.FINGERPRINT:
hdrlist = []
for hdr in Defaults.FINGERPRINT:
if hdr == 'body':
hdrval = orig_msgout_body_as_raw_string
else:
hdrval = msgout.get(hdr)
if hdrval:
hdrlist.append(hdrval)
if hdrlist:
new_fingerprint = Cookie.make_fingerprint(hdrlist)
if orig_fingerprint == new_fingerprint:
if header:
msgout['X-TMDA-Fingerprint-Match'] = "Yes"
elif quiet:
sys.exit(0)
else:
print "Fingerprints match"
sys.exit(0)
else:
if header:
msgout['X-TMDA-Fingerprint-Match'] = "No"
elif quiet:
sys.exit(-1)
else:
print "Fingerprints don't match"
sys.exit(-1)
print msgout
_____________________________________________
tmda-users mailing list ([EMAIL PROTECTED])
http://tmda.net/lists/listinfo/tmda-users