Hello, In my upgrade from qadmin-tmda to TMDA-CGI on our production mail server I noticed that TMDA-CGI is currently lacking the ability to determine a vpopmail user's domain name properly at auto-install time.
Authentication works properly, but TMDA-CGI uses "localhost" for all vpopmail user's %(Domain)s variables during auto-installation. Please see attached for a patch to Session.py and a new script to be placed in the "stubs" directory alongside the existing "vpopmail1.py": vpopmaildom.py Together, these two pieces make it possible to successfully use TMDA-CGI's auto-installation with the vpopmail virtual domain manager. However, please note that the patch DOES NOT include the necessary TMDA-CGI configure logic required to *BUILD* the TMDA-CGI C wrapper with the new TMDA_VDOMLOOKUP environment variable set! Perhaps Gre7g can add this logic in the future, but for now I am simply putting this in my Apache config to set the environment variable at run time: <Location /cgi-bin/tmda.cgi> Setenv TMDA_VDOMLOOKUP "vpopmaildom /usr/local/vpopmail/bin/vuserinfo ~" Options FollowSymlinks Order allow,deny Allow from all </Location> Thanks! -- Jesse Guardiani, Systems Administrator WingNET Internet Services, P.O. Box 2605 // Cleveland, TN 37320-2605 423-559-LINK (v) 423-559-5145 (f) http://www.wingnet.net
--- Session.py.bak.20040925 2004-09-26 00:42:26.000000000 -0400 +++ Session.py 2004-09-26 02:33:48.000000000 -0400 @@ -261,6 +261,7 @@ if Match: self.Vars["HOME"] = Match.group(1) os.environ["HOME"] = self.Vars["HOME"] + os.environ["DOMAIN"] = self.Vars["DOMAIN"] self.__suid__("user") self.Valid = 1 @@ -407,6 +408,28 @@ Template.Template.Dict["ErrMsg"] = \ "Username %s not found in system.\nstr=%s" % (self.Vars["User"], str) return + try: + if os.environ.has_key("TMDA_VDOMLOOKUP"): + self.Vars["DOMAIN"] = "localhost" + VDomLookup = \ + CgiUtil.ParseString(os.environ["TMDA_VDOMLOOKUP"], self.Vars["User"]) + List = Util.RunTask(VDomLookup[1:]) + Sandbox = {"User": self.Vars["User"]} + Filename = os.path.join("stubs", "%s.py" % VDomLookup[0]) + try: + execfile(Filename, Sandbox) + except IOError: + CgiUtil.TermError("Can't load virtual user stub.", + "Cannot execute %s" % Filename, "execute stub", + "TMDA_VDOMLOOKUP = %s" % os.environ["TMDA_VDOMLOOKUP"], "Recompile CGI.") + Params = Sandbox["getuserparams"](List) + self.Vars["DOMAIN"] = Params + else: + self.Vars["DOMAIN"] = "localhost" + except KeyError, str: + Template.Template.Dict["ErrMsg"] = \ + "Domain for user %s not found in system.\nstr=%s\n<br>domain=%s" % (self.Vars["User"], str, self.Vars["DOMAIN"]) + return # When getuserparams returns a UID of 0 or 1, assume it is a virtual user if int(self.Vars["UID"]) < 2: PasswordRecord = pwd.getpwnam(os.environ["TMDA_VUSER"])
vpopmaildom.py
Description: application/python
_____________________________________________ tmda-users mailing list ([EMAIL PROTECTED]) http://tmda.net/lists/listinfo/tmda-users