Sorry about that, being unfamiliar with python, I didn't know if the entire page of error messages was necessary. My bad.
Anyway, thanks Jim for at taking a look at it. Mostly, I just want the TMDA users (virtual users) to be able to view the global config. I do not want them to be able to edit it. I am assuming that the contents of the global lists will be available to be viewed. If this is incorrect, please let me know. As I mentioned before, I am running qmail-toaster using Nick Hemmesch's page on Linux CentOS v.4.4. tmda-1.1.9-1 and tmda-ofmipd-1.1.9-1 and tmda-cgi.0.15 Everything within tmda and tmda-cgi works properly (as far as I can tell) except for the global config file. If I put the tmdarc file in /etc I get the errors, without it, I just get a message that the /etc/tmdarc file does not exist, and everything works. Here is the tmdarc file I am using: CRYPT_KEY_FILE = "$VUSERDIR/.tmda/crypt_key" CONFIRM_APPEND = "$VUSERDIR/.tmda/lists/whitelist" DATADIR = "$VUSERDIR/.tmda/" PENDING_WHITELIST_APPEND = CONFIRM_APPEND PENDING_BLACKLIST_APPEND = "$VUSERDIR/.tmda/lists/blacklist" PENDING_RELEASE_APPEND = CONFIRM_APPEND FILTER_INCOMING = "$VUSERDIR/.tmda/filters/incoming" FILTER_OUTGOING = "$VUSERDIR/.tmda/filters/outgoing" HOSTNAME = "$VDOMAIN" CONFIG_EXEC = 0 perms are -rw-r--r-- 1 vpopmail vchkpw 412 Jan 25 16:31 /home/vpopmail/etc/vtmdarc Here is the entire error message: A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred. /usr/local/tmda-cgi-0.15/tmda-cgi.py 132 PVars["InProcess"] = {} 133 PVars["LocalConfig"] = "Form" 134 PVars.Save() 135 136 # Share "globals" PVars undefined /usr/local/tmda-cgi-0.15/Session.py in __init__(self=<Session.Session instance>, Form=FieldStorage(None, None, [MiniFieldStorage('user...rd', 'cbs123'), MiniFieldStorage('cmd', 'init')])) 480 481 # Become the user 482 self.BecomeUser() 483 484 # Signal main program self = <Session.Session instance>, self.BecomeUser = <bound method Session.BecomeUser of <Session.Session instance>> /usr/local/tmda-cgi-0.15/Session.py in BecomeUser(self=<Session.Session instance>) 288 T["ErrMsg"] = ErrStr 289 print T 290 sys.exit() 291 292 # Read in our PVars global sys = <module 'sys' (built-in)>, sys.exit = <built-in function exit> /usr/local/tmda-cgi-0.15/tmda-cgi.py in NewImport(name='TMDA', globals={'BooleanType': <type 'bool'>, 'BufferType': <type 'buffer'>, 'BuiltinFunctionType': <type 'builtin_function_or_method'>, 'BuiltinMethodType': <type 'builtin_function_or_method'>, 'CgiUtil': <module 'CgiUtil' from '/usr/local/tmda-cgi-0.15/CgiUtil.pyc'>, 'ClassType': <type 'classobj'>, 'CodeType': <type 'code'>, 'ComplexType': <type 'complex'>, 'ConfigParser': <module 'ConfigParser' from '/usr/lib/python2.3/ConfigParser.pyc'>, 'DictProxyType': <type 'dictproxy'>, ...}, locals=None, fromlist=('Defaults',)) 37 from TMDA import Version 38 return Version 39 return OldImport(name, globals, locals, fromlist) 40 __builtins__.__import__ = NewImport 41 global OldImport = <built-in function __import__>, name = 'TMDA', globals = {'BooleanType': <type 'bool'>, 'BufferType': <type 'buffer'>, 'BuiltinFunctionType': <type 'builtin_function_or_method'>, 'BuiltinMethodType': <type 'builtin_function_or_method'>, 'CgiUtil': <module 'CgiUtil' from '/usr/local/tmda-cgi-0.15/CgiUtil.pyc'>, 'ClassType': <type 'classobj'>, 'CodeType': <type 'code'>, 'ComplexType': <type 'complex'>, 'ConfigParser': <module 'ConfigParser' from '/usr/lib/python2.3/ConfigParser.pyc'>, 'DictProxyType': <type 'dictproxy'>, ...}, locals = None, fromlist = ('Defaults',) /usr/local/tmda/TMDA/Defaults.py 102 import ConfigParser 103 cf = ConfigParser.ConfigParser() 104 cf.read(TMDARC) 105 cf_section = 'TMDA_CONFIG' 106 for option in cf.options(cf_section): cf = <ConfigParser.ConfigParser instance>, cf.read = <bound method ConfigParser.read of <ConfigParser.ConfigParser instance>>, TMDARC = '/home/vpopmail/domains/mydomain.com/drh/.tmda/config' /usr/lib/python2.3/ConfigParser.py in read(self=<ConfigParser.ConfigParser instance>, filenames=['/home/vpopmail/domains/mydomain.com/drh/.tmda/config']) 261 except IOError: 262 continue 263 self._read(fp, filename) 264 fp.close() 265 self = <ConfigParser.ConfigParser instance>, self._read = <bound method ConfigParser._read of <ConfigParser.ConfigParser instance>>, fp = <open file '/home/vpopmail/domains/accsnetwork.com/drh/.tmda/config', mode 'r'>, filename = '/home/vpopmail/domains/accsnetwork.com/drh/.tmda/config' /usr/lib/python2.3/ConfigParser.py in _read(self=<ConfigParser.ConfigParser instance>, fp=<open file '/home/vpopmail/domains/accsnetwork.com/drh/.tmda/config', mode 'r'>, fpname='/home/vpopmail/domains/mydomain.com/drh/.tmda/config') 454 # no section header in the file? 455 elif cursect is None: 456 raise MissingSectionHeaderError(fpname, lineno, `line`) 457 # an option line? 458 else: global MissingSectionHeaderError = <class ConfigParser.MissingSectionHeaderError>, fpname = '/home/vpopmail/domains/mydomain.com/drh/.tmda/config', lineno = 1, line = 'CGI_VIRTUALUSER = 1\n' MissingSectionHeaderError: File contains no section headers. file: /home/vpopmail/domains/mydomain.com/drh/.tmda/config, line: 1 'CGI_VIRTUALUSER = 1\n' append = <bound method MissingSectionHeaderError.append o...rh/.tmda/config, line: 1 'CGI_VIRTUALUSER = 1\n'> args = ("File contains no section headers.\nfile: /home/vp...drh/.tmda/config, line: 1\n'CGI_VIRTUALUSER = 1\\n'",) filename = '/home/vpopmail/domains/mydomain.com/drh/.tmda/config' line = r"'CGI_VIRTUALUSER = 1\n'" lineno = 1 message = "File contains no section headers.\nfile: /home/vp...drh/.tmda/config, line: 1\n'CGI_VIRTUALUSER = 1\\n'" Again, thank you very much for any help or pointers. Dave _____________________________________________ tmda-users mailing list (tmda-users@tmda.net) http://tmda.net/lists/listinfo/tmda-users