From adam-mailman at amyl.org.uk Thu Aug 5 14:32:25 2010 From: adam-mailman at amyl.org.uk (Adam McGreggor) Date: Thu, 5 Aug 2010 13:32:25 +0100 Subject: [Mailman-Developers] [Mailman Confluence] Development > Web UI Mockups In-Reply-To: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> References: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> Message-ID: <20100805123224.GK28385@hendricks.amyl.org.uk> On Thu, Aug 05, 2010 at 05:21:00AM -0700, wiki at list.org wrote: > Page: Web UI Mockups (http://wiki.list.org/display/DEV/Web+UI+Mockups) > > Attached by Anna Granudd: > --------------------------------------------------------------------- > mockup_user_membership_settings.png (118 kB) - http://wiki.list.org/download/attachments/8978877/mockup_user_membership_settings.png?version=4&modificationDate=1281010841407 -------- explanation of the pictures -------- For those who can't see this page, it's a few (very good) drawing showing two tabs: user settings and membership settings. the user settings tab has: [ Logout ] Real name [ box ] Password [ box ] Language [ drop-down: Language 1 / Language 2 / Language 3 ] [ Save changes ] the membership settings tab has: [ Logout ] Membership settings Some mockup text asking the user to click the membership list they wish to edit... [ LINK: Membership list 1 ] [ LINK: Membership list 2 ] [ LINK: Membership list 3 ] With an arrow, demonstrating what happens on click: Lorem ipsum dolor ... labore et Hide address () Yes () No Receive list copy () Yes () No Receive own postings () Yes () No Delivery mode [ drop-down: Mode 1 / Mode 2 / Mode 3 ] --------- end explanation -------------- What that's missing to me is: * a password change option; * a password reset option; * a list of "my email addresses"; * the ability to set language for the lists, rather than settings, or perhaps change 'Language' to 'Default/Prefered Language' It'd be nice if clicking on a list where one's an admin/moderator, there was a special link or something to take one to those options for the list. -- ``Government incompetence [is] one of the UK's most important safeguards against totalitarianism.'' (John Lettice) From anna.granudd at gmail.com Thu Aug 5 16:32:27 2010 From: anna.granudd at gmail.com (Anna Granudd) Date: Thu, 5 Aug 2010 16:32:27 +0200 Subject: [Mailman-Developers] [Mailman Confluence] Development > Web UI Mockups In-Reply-To: <20100805123224.GK28385@hendricks.amyl.org.uk> References: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> <20100805123224.GK28385@hendricks.amyl.org.uk> Message-ID: Hi Adam, you were really fast to comment, I had intended to send an email to the list asking for people's opinions but you beat me on that. :) I think your suggestions are great (and I really appreciate them) but I'm not sure I fully understand the intent behind at least one of them so I figured I had to get back to you. On Thu, Aug 5, 2010 at 2:32 PM, Adam McGreggor wrote: > What that's missing to me is: > > * a password change option; > The password field was intended for the possibility to change the password (I forgot to add a field "confirm password" but I added that now as well as changed the label for the password field to "change password"). > * a password reset option; > Since you need to be logged in to come to this page I think the password reset option might be better suited on the login page since I guess people would rather use it if they forgot their password and if that's the case adding such a field here wouldn't help much. > * a list of "my email addresses"; > This is what I don't fully understand. I now added a drop-down menu with "my email addresses" but I'm not sure this is what you asked for since I don't fully understand the intent behind this suggestion. Is it to be able to change email addresses or just to view them (I'm also not sure what'll be possible in Mailman)? For the latter the drop down menu to just view the list might work and one could also possibly set one address to default but to change them we'd need something different. Should it rather be located on the membership settings page or on the user settings page? > * the ability to set language for the lists, rather than settings, or perhaps change 'Language' to 'Default/Prefered > Language' > I changed the label to "Default/Preferred Language", hope that's ok? It'd be nice if clicking on a list where one's an admin/moderator, there was a special link or something to take one to those options for the list. > I added a link on the first membership page that'll be visible if you're an admin and will take you to the admin settings. Is this what you asked for? Other people having suggestions/ideas/thoughts on the design are more than welcome to post them. We might start with this view in a few days so the more feedback we can get on the design before starting the better. Cheers, Anna From dgc at uchicago.edu Thu Aug 5 17:22:02 2010 From: dgc at uchicago.edu (David Champion) Date: Thu, 5 Aug 2010 10:22:02 -0500 Subject: [Mailman-Developers] [Mailman Confluence] Development > Web UI Mockups In-Reply-To: References: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> <20100805123224.GK28385@hendricks.amyl.org.uk> Message-ID: <20100805152202.GA2680@monkey.uchicago.edu> * On 05 Aug 2010, Anna Granudd wrote: > > Other people having suggestions/ideas/thoughts on the design are more than > welcome to post them. We might start with this view in a few days so the > more feedback we can get on the design before starting the better. I have a couple of suggestions on the membership settings UI. I'm not sure how in-scope these are for the current discussion, but I don't want to look for a better place and forget to say anything. :) 1. Many people must interact with several different MLMs, so anything Mailman can do to establish a middle ground among configuration terminology is very good. It's pretty common for user options to be phrased in terms of what the particular MLM expects users to want, but I think it would be better to phrase them in a consistently positive language, so that users aren't in the position of choosing double negatives: "don't not do this thing". In the mockup this would mean changing "Hide Address (YES/no)" to "Show Address (yes/NO)" -- where caps indicate what I assume to be the default. This has to do partly with code development rather than with site design, but the design is affected. 2. I guess this is really several thoughts rolled into one, but since I'm diagramming it's easier this way. The mockup suggests that clicking a membership settings option for a list reloads the window with the settings -- or at any rate (even if it's not a page load) that it replaces the view completely. I'd rather see this in the same frame, with the settings box's content replaced when a list is selected. Let's see if I can still do ascii art: ------------- ------------------- -------------- |User settings| |Membership settings| |Admin settings| -------------------- -------------------------- +----------------------------------------------------+ List 1 | Membership settings for list 3 | | | List 2 | Lorem ipsum dolor sit amet, et cetera... | | | L*st 3 | Show address [ ] yes [x] no | * | Receive list copy [x] yes [ ] no | *click* | Receive own postings [x] yes [ ] no | *dhtml* -->| ... | *magic* | | | [Copy settings] [Paste settings] | | [Reset to defaults] [Change settings] | | | +----------------------------------------------------+ ------------------------------------------------------------------- ... with admin settings working similarly. My thought for copy/paste is that settings can be serialized in Javascript into a JSON object and stored in a hidden element on the page, and recalled for another list's settings. There probably needs to be a setting for "pasting" settings to all lists, too. The "Admin settings" tab need appear only if there are actually lists that you admin, and as Adam said it might be nice to place a little shortcut beside the list name in Membership settings. -- -D. dgc at uchicago.edu IT Services University of Chicago From adam-mailman at amyl.org.uk Thu Aug 5 19:03:35 2010 From: adam-mailman at amyl.org.uk (Adam McGreggor) Date: Thu, 5 Aug 2010 18:03:35 +0100 Subject: [Mailman-Developers] [Mailman Confluence] Development > Web UI Mockups In-Reply-To: References: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> <20100805123224.GK28385@hendricks.amyl.org.uk> Message-ID: <20100805170335.GP28385@hendricks.amyl.org.uk> On Thu, Aug 05, 2010 at 04:32:27PM +0200, Anna Granudd wrote: > I'm not sure I fully understand the intent behind at least one > of them so I figured I had to get back to you. Sure, no probs! > On Thu, Aug 5, 2010 at 2:32 PM, Adam McGreggor wrote: > > What that's missing to me is: > > * a password reset option; > > Since you need to be logged in to come to this page I think the password > reset option might be better suited on the login page since I guess people > would rather use it if they forgot their password and if that's the case > adding such a field here wouldn't help much. Yes! That's very true (about only seeing the page once logged in!). *engages brain* > > * a list of "my email addresses"; > > This is what I don't fully understand. I now added a drop-down menu with "my > email addresses" but I'm not sure this is what you asked for since I don't > fully understand the intent behind this suggestion. Is it to be able to > change email addresses or just to view them (I'm also not sure what'll be > possible in Mailman)? (quite a long response, sorry.) AIUI (I'm not properly running MM3 anywhere, at the moment), MM3 understands "these are all of my email addresses", and associates those to the person, e.g., I may be subscribed to various lists on lists.example.org with these addresses: adam at amyl.org.uk adam-mailman at amyl.org.uk adam-*@amyl.org.uk adam+*@amyl.org.uk adam at toomanyhats.com backintwoweeks at toomanyhats.org example at gmail.com foo+spam at no-mx.thisparish.org iveforgottenwhoiam at hotmail.com listmaster at local.no2id.net postmaster at amyl.org.uk spamharvest at amyl.org.uk IMO, it would be nice to: * Set one of those as my 'default' address for * ... when I subscribe to a new list, from an address Mailman knows about (hum, the fun part of this could be when subscribing to a new list, with an 'unknown' address, and later migrating that to 'my account'), * ... sending 'system' stuff to (e.g., password reset mails). * Be able to set mail delivery for a chosen list to another of my email addresses (either in replacement of, or together) * Send administriva elsewhere, if I'm an admin/mod (e.g., to (post|list)master@) ( * Super-bonus-points, to be able to set Mailman detected HTML mails to another of my (webmail) addresses ) * "Forget about this email address" (and change my subscriptions to.../unsubscribe me completely) * Set all lists (for a given address) over to "no mail" (awesomeness would be "until YYYY-MM-DD" -- for dealing with holidays, I don't no-mail, because I will forget about one list) > For the latter the drop down menu to just view the > list might work and one could also possibly set one address to default but > to change them we'd need something different. Should it rather be located on > the membership settings page or on the user settings page? I'm not too sure where it should be. Perhaps as a multiple-selecting options box, with subscribed addresses (by default/AJAXywhatever) selected? Mailing List 1 [ adam at amyl.org.uk ] [ X adam-mailman at amyl.org.uk X ] [ adam at toomanyhats.com ] [ X example at gmail.com X ] [ .... ] Mailing List 2 [ foo at example.org ] [ admin list 2 ] where 'X' foo 'x' denotes a selection, and the wildcard addresses aren't listed... Actually, as I think of it, maybe selecting an address that's not subscribed should trigger a "do you want to subscribe to List X as baz at example.org" -- overkill/function creep? Is it something users would want? > > * the ability to set language for the lists, rather than > settings, or perhaps change 'Language' to 'Default/Prefered > > Language' > > I changed the label to "Default/Preferred Language", hope that's ok? Sure! Thanks! > It'd be nice if clicking on a list where one's an admin/moderator, > > there was a special link or something to take one to those options > > for the list. > > > > I added a link on the first membership page that'll be visible if you're an > admin and will take you to the admin settings. Is this what you asked for? Lovely! > Other people having suggestions/ideas/thoughts on the design are more than > welcome to post them. We might start with this view in a few days so the > more feedback we can get on the design before starting the better. Thanks, btw for the efforts. There's been a lot of thought here, from all. And design by committee rarely works, and I'm hard skinned, so feel free to ignore my views! -- ``The English people are like the English beer-- froth on top, dregs at the bottom; the middle, excellent.'' (Voltaire) From barry at list.org Thu Aug 5 23:55:41 2010 From: barry at list.org (Barry Warsaw) Date: Thu, 5 Aug 2010 17:55:41 -0400 Subject: [Mailman-Developers] [Mailman Confluence] Development > Web UI Mockups In-Reply-To: <20100805170335.GP28385@hendricks.amyl.org.uk> References: <702505290.654.1281010860022.JavaMail.j2ee-wiki-conf@vps28.contegix.com> <20100805123224.GK28385@hendricks.amyl.org.uk> <20100805170335.GP28385@hendricks.amyl.org.uk> Message-ID: <20100805175541.42c29d38@heresy> On Aug 05, 2010, at 06:03 PM, Adam McGreggor wrote: >IMO, it would be nice to: > > * Set one of those as my 'default' address for I rather like the model that Launchpad uses. You have one email address which is your "preferred address" and in all default situations, it uses this. For example, when subscribing to a list, by default this is the address subscribed, and if the system needs to contact you, it uses the default address. When you're changing which of your many validated addresses a list should deliver to, you see one special select called "Preferred address". The nice thing about this is that you can change your preferred address and in one fell swoop change all your deliveries. Note too that non-validated but registered addresses are *not* shown in this list (because we don't really know if you own it or not). > * ... when I subscribe to a new list, from an address Mailman > knows about (hum, the fun part of this could be when > subscribing to a new list, with an 'unknown' address, > and later migrating that to 'my account'), > * ... sending 'system' stuff to (e.g., password reset > mails). Yep. BTW, the mockups look great! -Barry -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From aaron at campusactivism.org Thu Aug 5 21:28:29 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Thu, 05 Aug 2010 15:28:29 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error Message-ID: <4C5B10DD.1050702@campusactivism.org> I'm trying to get the Mailman MySQL adaptor to work, while we're waiting for Mailman 3 to be finished. I'd love some help! I followed the instructions on: http://loeki.tv/log/archives/81-Setting-up-Mailman-to-store-members-in-a-MySQL-database.html I have a VPS (virtual private server) running Centos, cPanel, and Mailman 2.1.13. I create a new list to test the adaptor. When I go to the list's page it gives me an error. Mailman's error log says "ImportError: No module named MySQLdb". I've installed the MySQLdb module and am able to run a simple test script at the command line (that connects to the mysql database), without a problem. So what could be the problem? My setup has two versions of python running - one in /usr/bin/python and another in /usr/bin/python2.4, however both of them run the test script without a problem. I'm wondering if having two versions might be the cause? Or could there be a user permissions issue? Test Script: import MySQLdb # Open database connection db = MySQLdb.connect("localhost","testuser","test123456","TESTDB" ) # prepare a cursor object using cursor() method cursor = db.cursor() # execute SQL query using execute() method. cursor.execute("SELECT VERSION()") # Fetch a single row using fetchone() method. data = cursor.fetchone() print "Database version : %s " % data # disconnect from server db.close() From mark at msapiro.net Fri Aug 6 07:34:54 2010 From: mark at msapiro.net (Mark Sapiro) Date: Thu, 5 Aug 2010 22:34:54 -0700 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: <4C5B10DD.1050702@campusactivism.org> Message-ID: Aaron Kreider wrote: > I'm trying to get the Mailman MySQL adaptor to work, while we're >waiting for Mailman 3 to be finished. I'd love some help! > >I followed the instructions on: >http://loeki.tv/log/archives/81-Setting-up-Mailman-to-store-members-in-a-MySQL-database.html > >I have a VPS (virtual private server) running Centos, cPanel, and >Mailman 2.1.13. Did you install Mailman yourself or are you using cPanel's Mailman. If the latter, did you modify the paths in the above instructions to match cPanel. See the FAQ at . >I create a new list to test the adaptor. When I go to the list's page >it gives me an error. Mailman's error log says "ImportError: No module >named MySQLdb". > >I've installed the MySQLdb module and am able to run a simple test >script at the command line (that connects to the mysql database), >without a problem. So what could be the problem? > >My setup has two versions of python running - one in /usr/bin/python and >another in /usr/bin/python2.4, however both of them run the test script >without a problem. In a typical CentOS RPM install, /usr/bin/python and /usr/bin/python2.4 are hard links to the same file. How many /usr/lib/python* directories do you have? >I'm wondering if having two versions might be the >cause? Or could there be a user permissions issue? How was Mailman configured? Having two or even more versions of Python should not be a problem as long as the one Mailman was configured to use has MySQLdb installed. Is Mailman running? What happens if you send a 'help' command by email to the new list's -request address? I don't think this is a permissions issue as MySQLdb should be world searchable/readable, but I suppose it could be a SELinux issue if SELinux is enabled. If you run strings /path/to/mailman/cgi-bin/listinfo The output should contain amongst much other stuff the path of the python used by the CGI scripts. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From aaron at campusactivism.org Fri Aug 6 21:23:01 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Fri, 06 Aug 2010 15:23:01 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: References: Message-ID: <4C5C6115.7000306@campusactivism.org> On 8/6/2010 1:34 AM, Mark Sapiro wrote: > Aaron Kreider wrote: > >> I'm trying to get the Mailman MySQL adaptor to work, while we're >> waiting for Mailman 3 to be finished. I'd love some help! >> >> I followed the instructions on: >> http://loeki.tv/log/archives/81-Setting-up-Mailman-to-store-members-in-a-MySQL-database.html >> >> I have a VPS (virtual private server) running Centos, cPanel, and >> Mailman 2.1.13. > > Did you install Mailman yourself or are you using cPanel's Mailman. If > the latter, did you modify the paths in the above instructions to > match cPanel. > > See the FAQ at. Using cPanel's mailman. I modified the paths to fit the instructions. > >> I create a new list to test the adaptor. When I go to the list's page >> it gives me an error. Mailman's error log says "ImportError: No module >> named MySQLdb". >> >> I've installed the MySQLdb module and am able to run a simple test >> script at the command line (that connects to the mysql database), >> without a problem. So what could be the problem? >> >> My setup has two versions of python running - one in /usr/bin/python and >> another in /usr/bin/python2.4, however both of them run the test script >> without a problem. > > In a typical CentOS RPM install, /usr/bin/python and /usr/bin/python2.4 > are hard links to the same file. > > How many /usr/lib/python* directories do you have? > Only one directory. /usr/lib/python2.4 >> I'm wondering if having two versions might be the >> cause? Or could there be a user permissions issue? > > How was Mailman configured? Having two or even more versions of Python > should not be a problem as long as the one Mailman was configured to > use has MySQLdb installed. I changed /user/local/cpanel/3rdparty/mailman/Mailman/mm_cfg.py to have my MySQL database settings: # Put YOUR site-specific settings below this line. MYSQL_MEMBER_DB_NAME = "the_db" MYSQL_MEMBER_DB_USER = "the_user" MYSQL_MEMBER_DB_PASS = "topsecret MYSQL_MEMBER_DB_HOST = "localhost" MYSQL_MEMBER_TABLE_TYPE = "wide" > Is Mailman running? What happens if you send a 'help' command by email > to the new list's -request address? > Sending "help" does not work for the new list. It does work for old lists (non-mysql based ones). > I don't think this is a permissions issue as MySQLdb should be world > searchable/readable, but I suppose it could be a SELinux issue if > SELinux is enabled. > > If you run > > strings /path/to/mailman/cgi-bin/listinfo > > The output should contain amongst much other stuff the path of the > python used by the CGI scripts. This gives me an error message: Content-type: text/html

Mailman CGI error!!!


PYTHONPATH=
--with-cgi-gid
--with-mail-gid
mail
PYTHONHOME=
Mailman CGI error!!!
The Mailman CGI wrapper encountered a fatal error.
This entry is being stored in your syslog:
Failure to find group name for GID %d.  Mailman
expected the %s wrapper to be executed as group
"%s", but the system's %s server executed the
wrapper as GID %d for which the name could not be
found.  Try adding GID %d to your system as "%s",
or tweak your %s server to run the wrapper as group
"%s".
Group mismatch error.  Mailman expected the %s
wrapper script to be executed as group "%s", but
the system's %s server executed the %s script as
group "%s".  Try tweaking the %s server to run the
script as group "%s", or re-run configure,
providing the command line option `%s=%s'.
/usr/local/cpanel/3rdparty/mailman/scripts/
/usr/local/cpanel/3rdparty/mailman
/usr/local/cpanel/3rdparty/bin/python
driver
listinfo
nobody
Mailman cgi-wrapper (listinfo)


From mark at msapiro.net  Fri Aug  6 21:55:18 2010
From: mark at msapiro.net (Mark Sapiro)
Date: Fri, 6 Aug 2010 12:55:18 -0700
Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module
	error
In-Reply-To: <4C5C6115.7000306@campusactivism.org>
Message-ID: 

Aaron Kreider wrote:

>  On 8/6/2010 1:34 AM, Mark Sapiro wrote:
>> Aaron Kreider wrote:
>>
>Using cPanel's mailman. I modified the paths to fit the instructions.


OK



>> Is Mailman running? What happens if you send a 'help' command by email
>> to the new list's -request address?
>>
>Sending "help" does not work for the new list.
>
>It does work for old lists (non-mysql based ones).


What's in Mailman's error log. Do you see the same ImportError causing
the message to be shunted?


>> If you run
>>
>> strings /path/to/mailman/cgi-bin/listinfo
>>
>> The output should contain amongst much other stuff the path of the
>> python used by the CGI scripts.
>
>This gives me an error message:
>Content-type: text/html
>
>
[...]


It looks as if you ran

 /path/to/mailman/cgi-bin/listinfo

not

 strings /path/to/mailman/cgi-bin/listinfo

as I asked. I don't want you to run the listinfo wrapper, I want to see
what Python it is invoking. I am guessing there is a python in
/user/local/cpanel/3rdparty/ and that that is the Python being used by
Mailman. I'm trying to confirm that or at least confirm that it is
other than /usr/bin/python(2.4). The wrappers contain the path to
Python as a string, and that's what I want to see.

-- 
Mark Sapiro         The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan


From aaron at campusactivism.org  Fri Aug  6 22:14:10 2010
From: aaron at campusactivism.org (Aaron Kreider)
Date: Fri, 06 Aug 2010 16:14:10 -0400
Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module
	error
In-Reply-To: 
References: 
Message-ID: <4C5C6D12.7080906@campusactivism.org>

  Mark,

>>> Is Mailman running? What happens if you send a 'help' command by email
>>> to the new list's -request address?
>>>
>> Sending "help" does not work for the new list.
>>
>> It does work for old lists (non-mysql based ones).
>
> What's in Mailman's error log. Do you see the same ImportError causing
> the message to be shunted?

No. I see it has an error about the table not being created. So that 
must mean it is correctly importing the module?  Why does it work here 
and not in other cases?
I might need to manually create the tables (one for each list).  I'm 
fine with doing that.

Aug 06 15:18:00 2010 (12201) Uncaught runner exception: (1103, 
"Incorrect table name 'dbtest8_energyjustice.net'")
Aug 06 15:18:00 2010 (12201) Traceback (most recent call last):
   File "/usr/local/cpanel/3rdparty/mailman/Mailman/Queue/Runner.py", 
line 120, in _oneloop
     self._onefile(msg, msgdata)
   File "/usr/local/cpanel/3rdparty/mailman/Mailman/Queue/Runner.py", 
line 166, in _onefile
     mlist = self._open_list(listname)
   File "/usr/local/cpanel/3rdparty/mailman/Mailman/Queue/Runner.py", 
line 211, in _open_list
     mlist = MailList.MailList(listname, lock=False)
   File "/usr/local/cpanel/3rdparty/mailman/Mailman/MailList.py", line 
125, in __init__
     func(self)
   File 
"/usr/local/cpanel/3rdparty/mailman/lists/dbtest8_energyjustice.net/extend.py", 
line 4, in extend
     list._memberadaptor = MysqlMemberships(list)
   File 
"/usr/local/cpanel/3rdparty/mailman/Mailman/MysqlMemberships.py", line 
89, in __init__
     self.createTable()
   File 
"/usr/local/cpanel/3rdparty/mailman/Mailman/MysqlMemberships.py", line 
205, in createTable
     self.query (
   File 
"/usr/local/cpanel/3rdparty/mailman/Mailman/MysqlMemberships.py", line 
241, in query
     return mm_cfg.cursor.execute (query)
   File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 174, in 
execute
   File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 36, 
in defaulterrorhandler
ProgrammingError: (1103, "Incorrect table name 'dbtest8_energyjustice.net'")


> It looks as if you ran
>
>   /path/to/mailman/cgi-bin/listinfo
>
> not
>
>   strings /path/to/mailman/cgi-bin/listinfo
>
> as I asked. I don't want you to run the listinfo wrapper, I want to see
> what Python it is invoking. I am guessing there is a python in
> /user/local/cpanel/3rdparty/ and that that is the Python being used by
> Mailman. I'm trying to confirm that or at least confirm that it is
> other than /usr/bin/python(2.4). The wrappers contain the path to
> Python as a string, and that's what I want to see.
>
Ok this is what I get.



Content-type: text/html


Mailman CGI error!!!


PYTHONPATH=
--with-cgi-gid
--with-mail-gid
mail
PYTHONHOME=
Mailman CGI error!!!
The Mailman CGI wrapper encountered a fatal error.
This entry is being stored in your syslog:
Failure to find group name for GID %d.  Mailman
expected the %s wrapper to be executed as group
"%s", but the system's %s server executed the
wrapper as GID %d for which the name could not be
found.  Try adding GID %d to your system as "%s",
or tweak your %s server to run the wrapper as group
"%s".
Group mismatch error.  Mailman expected the %s
wrapper script to be executed as group "%s", but
the system's %s server executed the %s script as
group "%s".  Try tweaking the %s server to run the
script as group "%s", or re-run configure,
providing the command line option `%s=%s'.
/usr/local/cpanel/3rdparty/mailman/scripts/
/usr/local/cpanel/3rdparty/mailman
/usr/local/cpanel/3rdparty/bin/python
driver
listinfo
nobody
Mailman cgi-wrapper (listinfo)


BTW this file is a symbolic link:- /usr/local/cpanel/3rdparty/bin/python
It links to /usr/bin/python2.4


Thanks for your help so far!

Aaron

From mark at msapiro.net  Fri Aug  6 22:39:00 2010
From: mark at msapiro.net (Mark Sapiro)
Date: Fri, 6 Aug 2010 13:39:00 -0700
Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module
	error
In-Reply-To: <4C5C6D12.7080906@campusactivism.org>
Message-ID: 

Aaron Kreider wrote:
>>
>> What's in Mailman's error log. Do you see the same ImportError causing
>> the message to be shunted?
>
>No. I see it has an error about the table not being created. So that 
>must mean it is correctly importing the module?  Why does it work here 
>and not in other cases?



I'm not sure. see below.



[...]
>> It looks as if you ran
>>
>>   /path/to/mailman/cgi-bin/listinfo
>>
>> not
>>
>>   strings /path/to/mailman/cgi-bin/listinfo
>>
>> as I asked. I don't want you to run the listinfo wrapper, I want to see
>> what Python it is invoking. I am guessing there is a python in
>> /user/local/cpanel/3rdparty/ and that that is the Python being used by
>> Mailman. I'm trying to confirm that or at least confirm that it is
>> other than /usr/bin/python(2.4). The wrappers contain the path to
>> Python as a string, and that's what I want to see.
>>
>Ok this is what I get.


Sorry. I don't know why I didn't see it the first time. You had done
what I asked, and I got confused by Content-Type: being the first line
of output (and maybe by your referring to an error). The following is
the output I wanted.


>Content-type: text/html
>
>
>

Mailman CGI error!!!

>
>
>PYTHONPATH= >--with-cgi-gid >--with-mail-gid >mail >PYTHONHOME= >Mailman CGI error!!! >The Mailman CGI wrapper encountered a fatal error. >This entry is being stored in your syslog: >Failure to find group name for GID %d. Mailman >expected the %s wrapper to be executed as group >"%s", but the system's %s server executed the >wrapper as GID %d for which the name could not be >found. Try adding GID %d to your system as "%s", >or tweak your %s server to run the wrapper as group >"%s". >Group mismatch error. Mailman expected the %s >wrapper script to be executed as group "%s", but >the system's %s server executed the %s script as >group "%s". Try tweaking the %s server to run the >script as group "%s", or re-run configure, >providing the command line option `%s=%s'. >/usr/local/cpanel/3rdparty/mailman/scripts/ >/usr/local/cpanel/3rdparty/mailman >/usr/local/cpanel/3rdparty/bin/python This is what I suspected, but if it's a symlink to /usr/bin/python, that isn't the issue. >driver >listinfo >nobody >Mailman cgi-wrapper (listinfo) > > >BTW this file is a symbolic link:- /usr/local/cpanel/3rdparty/bin/python >It links to /usr/bin/python2.4 So it appears that the wrappers are using the correct Python, so maybe it is permissions. The qrunners are (or should be) running as the mailman user:group, and the web CGI's should run as the mailman group, but run as the web server user, so that's a difference. Look at the permissions on the /usr/lib/python2.4/site-packages/MySQLdb directory and its subordinates. Directories should be 0755 (drwxr-xr-x) and files 0644 (-rw-r--r--). Is that the case? -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From dale at newfield.org Fri Aug 6 22:56:40 2010 From: dale at newfield.org (Dale Newfield) Date: Fri, 06 Aug 2010 16:56:40 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: <4C5C6D12.7080906@campusactivism.org> References: <4C5C6D12.7080906@campusactivism.org> Message-ID: <4C5C7708.1010709@Newfield.org> On 8/6/10 4:14 PM, Aaron Kreider wrote: > "Incorrect table name 'dbtest8_energyjustice.net'" I could easily see that .'s could be invalid in table names. -Dale From aaron at campusactivism.org Fri Aug 6 23:13:23 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Fri, 06 Aug 2010 17:13:23 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: References: Message-ID: <4C5C7AF3.4080400@campusactivism.org> > So it appears that the wrappers are using the correct Python, so maybe > it is permissions. The qrunners are (or should be) running as the > mailman user:group, and the web CGI's should run as the mailman group, > but run as the web server user, so that's a difference. Look at the > permissions on the /usr/lib/python2.4/site-packages/MySQLdb directory > and its subordinates. Directories should be 0755 (drwxr-xr-x) and > files 0644 (-rw-r--r--). Is that the case? > Hmm, there is no such directory. There is a MySQL_python-1.2.3-py2.4-linux-x86_64.egg file in /usr/lib/python2.4/site-packages, but no directory. Aaron From mark at msapiro.net Fri Aug 6 23:20:55 2010 From: mark at msapiro.net (Mark Sapiro) Date: Fri, 6 Aug 2010 14:20:55 -0700 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: <4C5C7AF3.4080400@campusactivism.org> Message-ID: Aaron Kreider wrote: >> >Hmm, there is no such directory. There is a >MySQL_python-1.2.3-py2.4-linux-x86_64.egg file in >/usr/lib/python2.4/site-packages, but no directory. I think that's the problem. Did you install MySQLdb from source or via some RPM or ? The fact that you have an egg and not a MySQLdb directory implies that this MySQLdb was installed with Python 2.5+, not Python 2.4 -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From aaron at campusactivism.org Fri Aug 6 23:24:38 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Fri, 06 Aug 2010 17:24:38 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: References: Message-ID: <4C5C7D96.70802@campusactivism.org> So it appears that the wrappers are using the correct Python, so maybe > it is permissions. The qrunners are (or should be) running as the > mailman user:group, and the web CGI's should run as the mailman group, > but run as the web server user, so that's a difference. Look at the > permissions on the /usr/lib/python2.4/site-packages/MySQLdb directory > and its subordinates. Directories should be 0755 (drwxr-xr-x) and > files 0644 (-rw-r--r--). Is that the case? > It looks like my webhost's support installed MySQL-python-1.2.3 in the root directory of my entire server, and it is owned by a user called "500"! 500 is not the permissions level, that is the name of the owner. Should this value be changed? Directory permissions are 775. Files are 664. From mark at msapiro.net Fri Aug 6 23:29:14 2010 From: mark at msapiro.net (Mark Sapiro) Date: Fri, 6 Aug 2010 14:29:14 -0700 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb moduleerror In-Reply-To: Message-ID: Mark Sapiro wrote: >Aaron Kreider wrote: >>> >>Hmm, there is no such directory. There is a >>MySQL_python-1.2.3-py2.4-linux-x86_64.egg file in >>/usr/lib/python2.4/site-packages, but no directory. > > >I think that's the problem. Did you install MySQLdb from source or via >some RPM or ? > >The fact that you have an egg and not a MySQLdb directory implies that >this MySQLdb was installed with Python 2.5+, not Python 2.4 Or maybe not. The name of the egg indicates it was built with/for Python 2.4. Is it world readable? -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From tanstaafl at libertytrek.org Mon Aug 9 15:58:13 2010 From: tanstaafl at libertytrek.org (Tanstaafl) Date: Mon, 09 Aug 2010 09:58:13 -0400 Subject: [Mailman-Developers] MM3 nntp support? Message-ID: <4C600975.9060004@libertytrek.org> Hello, Back in December Barry had mentioned that he was exploring adding nntp (and IMAP) support to the archives, but didn't clarify much further... and I googled quite a bit, and these 2 or 3 posts on the subject is all I could find.: > Re: [Mailman-Users] NNTP server for "local" newsgroups ? > > John Fitzsimons > Tue, 22 Dec 2009 14:44:10 -0800 > > On Mon, 21 Dec 2009 22:13:15 -0500, Barry Warsaw wrote: > >>On Dec 21, 2009, at 7:36 PM, John Fitzsimons wrote: > > Hi Barry, > >>> In another thread we were talking about Mailman to web forum >>> options. As Mailman can manage NNTP I wondered whether anyone >>> here had come across an NNTP server for "local" (not usenet) >>> newsgroups ? >> Yes. I intend to explore using Twisted in Mailman 3 to provide NNTP >> and IMAP access to Mailman archives. My question is - would this (hopefully? please!?) also include posting support from a newsreader, so that nntp users could also interact with the list discussion(s) using their preferred newsreader? Or was this for reading only? Thanks, Charles From max.lanfranconi at oracle.com Thu Aug 12 04:03:05 2010 From: max.lanfranconi at oracle.com (Max Lanfranconi) Date: Wed, 11 Aug 2010 19:03:05 -0700 Subject: [Mailman-Developers] Mailman 3.0 install woes... Message-ID: <4C635659.7070505@oracle.com> HI all, I am trying to install mailman 3 on Solaris 10 x86 as I would like to test a few new features that would greatly simplify our current deployment. (mailman 2.1.12) I got the latest bazaar image as per the website instructions: bzr branch lp:mailman I then ran #python2.6 bootstrap.py Downloading http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg Creating directory '/usr/local/mailman3/mm3bzr/mailman/bin'. Creating directory '/usr/local/mailman3/mm3bzr/mailman/parts'. Creating directory '/usr/local/mailman3/mm3bzr/mailman/eggs'. Creating directory '/usr/local/mailman3/mm3bzr/mailman/develop-eggs'. Generated script '/usr/local/mailman3/mm3bzr/mailman/bin/buildout'. # followed by # bin/buildout Getting distribution for 'setuptools'. Got setuptools 0.6c12dev-r80622. Upgraded: setuptools version 0.6c12dev-r80622; restarting. Generated script '/usr/local/mailman3/mm3bzr/mailman/bin/buildout'. Develop: '/usr/local/mailman3/mm3bzr/mailman/.' Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.8.tar.gz Extracting in /tmp/tmpsHTFX9 Now working in /tmp/tmpsHTFX9/distribute-0.6.8 Building a Distribute egg in /usr/local/mailman3/mm3bzr/mailman /usr/local/mailman3/mm3bzr/mailman/distribute-0.6.8-py2.6.egg warning: no previously-included files matching '*.egg-info' found anywhere in distribution no previously-included directories found matching 'src/attic' no previously-included directories found matching 'src/web' Getting distribution for 'z3c.recipe.sphinxdoc'. Got z3c.recipe.sphinxdoc 0.0.8. Getting distribution for 'Sphinx'. Got Sphinx 1.0.1. Getting distribution for 'docutils'. warning: no files found matching 'MANIFEST' warning: no previously-included files matching '.cvsignore' found under directory '*' warning: no previously-included files matching '*.pyc' found under directory '*' warning: no previously-included files matching '*~' found under directory '*' warning: no previously-included files matching '.DS_Store' found under directory '*' zip_safe flag not set; analyzing archive contents... docutils.parsers.rst.directives.misc: module references __file__ docutils.writers.html4css1.__init__: module references __file__ docutils.writers.pep_html.__init__: module references __file__ docutils.writers.s5_html.__init__: module references __file__ docutils.writers.latex2e.__init__: module references __file__ docutils.writers.newlatex2e.__init__: module references __file__ docutils.writers.odf_odt.__init__: module references __file__ Got docutils 0.7. Getting distribution for 'zc.recipe.egg'. Got zc.recipe.egg 1.2.3b2. Getting distribution for 'Jinja2>=2.2'. warning: no previously-included files matching '*' found under directory 'docs/_build/doctrees' warning: no previously-included files matching '*.pyc' found under directory 'jinja2' warning: no previously-included files matching '*.pyc' found under directory 'docs' warning: no previously-included files matching '*.pyo' found under directory 'jinja2' warning: no previously-included files matching '*.pyo' found under directory 'docs' Got Jinja2 2.5. Getting distribution for 'Pygments>=0.8'. Got Pygments 1.3.1. Getting distribution for 'z3c.recipe.filetemplate'. Got z3c.recipe.filetemplate 2.1.0. Getting distribution for 'zope.testing<4'. warning: no files found matching '*.test' under directory 'src' warning: no files found matching 'sampletests' under directory 'src' Got zope.testing 3.10.0. Getting distribution for 'zope.interface'. Got zope.interface 3.6.1. Getting distribution for 'zope.configuration'. Got zope.configuration 3.7.2. Getting distribution for 'zope.component'. Got zope.component 3.9.5. Getting distribution for 'storm'. Got storm 0.17. Getting distribution for 'restish'. Got restish 0.11. Getting distribution for 'locknix'. No Pyrex, trying Cython... The python package 'Pyrex' is not available. If the .c files are available, they will be built, but modifying the .pyx files will not rebuild them. bzrlib/_bencode_pyx.c: In function `__pyx_f_6bzrlib_12_bencode_pyx_7Encoder_process': bzrlib/_bencode_pyx.c:1783: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_bencode_pyx.c: In function `__pyx_f_6bzrlib_12_bencode_pyx_7Decoder__decode_int': bzrlib/_bencode_pyx.c:648: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_bencode_pyx.c: In function `__pyx_f_6bzrlib_12_bencode_pyx_7Decoder__decode_object': bzrlib/_bencode_pyx.c:380: warning: '__pyx_r' might be used uninitialized in this function bzrlib/_bencode_pyx.c:491: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_groupcompress_pyx.c: In function `__pyx_f_6bzrlib_18_groupcompress_pyx__apply_delta': bzrlib/_groupcompress_pyx.c:1271: warning: '__pyx_v_cmd' might be used uninitialized in this function bzrlib/_rio_pyx.c: In function `__pyx_f_6bzrlib_8_rio_pyx__read_stanza_unicode': bzrlib/_rio_pyx.c:681: warning: '__pyx_r' might be used uninitialized in this function bzrlib/_rio_pyx.c:935: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_rio_pyx.c: In function `__pyx_f_6bzrlib_8_rio_pyx__read_stanza_utf8': bzrlib/_rio_pyx.c:367: warning: '__pyx_r' might be used uninitialized in this function bzrlib/_rio_pyx.c:624: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_readdir_pyx.c: In function `__pyx_f_6bzrlib_12_readdir_pyx_13UTF8DirReader_read_dir': bzrlib/_readdir_pyx.c:992: warning: '__pyx_exc_lineno' might be used uninitialized in this function bzrlib/_readdir_pyx.c:1035: warning: '__pyx_exc_lineno' might be used uninitialized in this function In file included from /usr/local/include/python2.6/Python.h:8, from bzrlib/_patiencediff_c.c:28: /usr/local/include/python2.6/pyconfig.h:1004:1: warning: "_FILE_OFFSET_BITS" redefined In file included from /usr/include/iso/stdlib_iso.h:30, from /usr/include/stdlib.h:18, from bzrlib/_patiencediff_c.c:26: /usr/include/sys/feature_tests.h:188:1: warning: this is the location of the previous definition error: Setup script exited with error: SandboxViolation: mkdir('/usr/share/apport',) {} The package setup script has attempted to modify files on your system that are not within the EasyInstall build area, and has been aborted. This package cannot be safely installed by EasyInstall, and may not support alternate installation locations even if you run its setup script by hand. Please inform the package's author and the EasyInstall maintainers to find out if a fix or workaround is available. An error occured when trying to install locknix 1.0.2. Look above this message for any errors that were output by easy_install. While: Installing. Getting section filetemplates. Initializing part filetemplates. Getting distribution for 'locknix'. Error: Couldn't install: locknix 1.0.2 Please help ? Thanks in advance, Max -- Oracle Max Lanfranconi | Principal Product Manager Phone: +1 408 276 3280 | Fax: +1 408 521 2016 | Mobile: +1 408 505 1020 Oracle Java Community Process 4220 Network Circle | Santa Clara, CA 95054 Green Oracle Oracle is committed to developing practices and products that help protect the environment From aaron at campusactivism.org Thu Aug 12 19:02:45 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Thu, 12 Aug 2010 13:02:45 -0400 Subject: [Mailman-Developers] Mailman MySQL adaptor - MySQLdb module error In-Reply-To: References: Message-ID: <4C642935.5090201@campusactivism.org> I found a solution! Mark Sapiro deserves all the credit for helping me out a TON =) Here is my documentation in the hope that it will help someone in the future. --------------------------- Mark writes: The basic problem is that the python library or at least the one containing the site-packages/ into which MySQLdb was installed is /usr/lib64/python2.4 rather than /usr/lib/python2.4. Mailman starts a lot of Python processes with the -S option which bypasses importing the site module at startup and this is what normally puts the path to site-packages in sys.path. Mailman attempts to do this itself in its own paths module which everything imports, but it assumes the path begins with /usr/lib/pythonv.v so it never got /usr/lib64/python2.4/site-packages into sys.path. The bit added to extend.py does this when it replaces the MemberAdaptor, so MysqlMemberships can successfully import MySQLdb. -------------------------- Aaron adds: We changed extend.py to be: import sys if '/usr/lib64/python2.4/site-packages' not in sys.path: sys.path.append('/usr/lib64/python2.4/site-packages') from Mailman.MysqlMemberships import MysqlMemberships def extend(list): list._memberadaptor = MysqlMemberships(list) -------------------------- To track down the fact that the module's directory was wrong we had to fix a bug in Mailman's error logging: There is a bug in the error logging code in /usr/local/cpanel/3rdparty/mailman/scripts/driver Edit that file. Find def print_environment(logfp=None): if logfp is None: logfp = sys.__stderr__ try: import os except ImportError: os = None # Write some information about our Python executable to the log file. print>> logfp, '[----- Python Information -----]' print>> logfp, 'sys.version =', sys.version print>> logfp, 'sys.executable =', sys.executable print>> logfp, 'sys.prefix =', sys.prefix print>> logfp, 'sys.exec_prefix =', sys.exec_prefix print>> logfp, 'sys.path =', sys.exec_prefix print>> logfp, 'sys.platform =', sys.platform Change the next to last line of that from print>> logfp, 'sys.path =', sys.exec_prefix to print>> logfp, 'sys.path =', sys.path and then see what's reported for sys.path in the traceback. --------------------------- Finally because my Cpanel installation of mailman was creating mailing lists that had "." in their name, and MySQL does not create tables with a period in the name I modified the code for MysqlMemberships.py A global replace of self.__mlist.internal_name() with self.__mlist.internal_name().replace('.', '_') From aaron at campusactivism.org Thu Aug 12 20:00:49 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Thu, 12 Aug 2010 14:00:49 -0400 Subject: [Mailman-Developers] Exporting member info (including options) Message-ID: <4C6436D1.5080506@campusactivism.org> Is there a good way to export all of the member info for a list? I want all the mailing list options as well as the email address, so that I can import it into MySQL and use the MySQL adaptor. I know "list_members" gives just the email addresses. Is the best method for me to use dbdump to access the "pickle" files and then write a script to parse that? Aaron -- Energy Justice Communities Map Developer - http://www.energyjustice.net/map From aaron at campusactivism.org Thu Aug 12 20:33:44 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Thu, 12 Aug 2010 14:33:44 -0400 Subject: [Mailman-Developers] MySQL adaptor - storing in a remote database - ping times Message-ID: <4C643E88.70408@campusactivism.org> I'm using the MySQL adaptor and am wondering whether it is acceptable to have the database in a remote location with a 30 ms ping time between it and the server that runs mailman? We'd be running medium sized lists of 100-300 subscribers. It depends on whether the MySQL adaptor will do a couple queries to send out an email, or if it does a query for every single subscriber (in which case a ping time of 30 ms is unacceptable). My organization has a database that is on a server in our office and our website server is located in a different spot. So if we had the Mailman database in our office, it would integrate faster and easier with the rest of the organization database. -- Energy Justice Communities Map Developer - http://www.energyjustice.net/map From tanstaafl at libertytrek.org Thu Aug 12 23:45:23 2010 From: tanstaafl at libertytrek.org (Tanstaafl) Date: Thu, 12 Aug 2010 17:45:23 -0400 Subject: [Mailman-Developers] MM3 nntp support? In-Reply-To: <4C600975.9060004@libertytrek.org> References: <4C600975.9060004@libertytrek.org> Message-ID: <4C646B73.9000302@libertytrek.org> No response? Tanstaafl wrote: > Hello, > > Back in December Barry had mentioned that he was exploring adding nntp > (and IMAP) support to the archives, but didn't clarify much further... > and I googled quite a bit, and these 2 or 3 posts on the subject is all > I could find.: > >> Re: [Mailman-Users] NNTP server for "local" newsgroups ? >> >> John Fitzsimons >> Tue, 22 Dec 2009 14:44:10 -0800 >> >> On Mon, 21 Dec 2009 22:13:15 -0500, Barry Warsaw wrote: >> >>> On Dec 21, 2009, at 7:36 PM, John Fitzsimons wrote: >> >> Hi Barry, >> >>>> In another thread we were talking about Mailman to web forum >>>> options. As Mailman can manage NNTP I wondered whether anyone >>>> here had come across an NNTP server for "local" (not usenet) >>>> newsgroups ? > >>> Yes. I intend to explore using Twisted in Mailman 3 to provide NNTP >>> and IMAP access to Mailman archives. > > My question is - would this (hopefully? please!?) also include posting > support from a newsreader, so that nntp users could also interact with > the list discussion(s) using their preferred newsreader? Or was this for > reading only? > > Thanks, > > Charles From mark at msapiro.net Fri Aug 13 03:10:52 2010 From: mark at msapiro.net (Mark Sapiro) Date: Thu, 12 Aug 2010 18:10:52 -0700 Subject: [Mailman-Developers] MySQL adaptor - storing in a remote database -ping times In-Reply-To: <4C643E88.70408@campusactivism.org> Message-ID: Aaron Kreider wrote: > I'm using the MySQL adaptor and am wondering whether it is acceptable >to have the database in a remote location with a 30 ms ping time between >it and the server that runs mailman? We'd be running medium sized lists >of 100-300 subscribers. It depends on whether the MySQL adaptor will do >a couple queries to send out an email, or if it does a query for every >single subscriber (in which case a ping time of 30 ms is unacceptable). The CalcRecips.py handler does the following: recips = [mlist.getMemberCPAddress(m) for m in mlist.getRegularMemberKeys() if mlist.getDeliveryStatus(m) == ENABLED] This means that it calls getRegularMemberKeys() which results in one database query to get the addresses of all regular members, and then for each regular member, it calls getDeliveryStatus() and then for each regular member with delivery enabled, it calls getMemberCPAddress(). There is some caching within MysqlMemberships.py, which I think results in the call to getDeliveryStatus() doing a database query for "all" attributes and caching the result, so the call to getMemberCPAddress() is essentially free, but there is still a query for each regular member. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From mark at msapiro.net Fri Aug 13 05:37:15 2010 From: mark at msapiro.net (Mark Sapiro) Date: Thu, 12 Aug 2010 20:37:15 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C6436D1.5080506@campusactivism.org> Message-ID: Aaron Kreider wrote: > Is there a good way to export all of the member info for a list? > >I want all the mailing list options as well as the email address, so >that I can import it into MySQL and use the MySQL adaptor. There is a script at (mirrored at ) that will do this by screen scraping the web admin Membership List pages, but if I were doing it, I would just create a withlist script to do it. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From bob at nleaudio.com Fri Aug 13 05:45:05 2010 From: bob at nleaudio.com (Bob Puff) Date: Thu, 12 Aug 2010 23:45:05 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: References: <4C6436D1.5080506@campusactivism.org> Message-ID: <20100813034343.M88594@nleaudio.com> > Aaron Kreider wrote: > > > Is there a good way to export all of the member info for a list? > > > >I want all the mailing list options as well as the email address, so > >that I can import it into MySQL and use the MySQL adaptor. > > There is a script at > (mirrored at > ) > that will do this by screen scraping the web admin Membership List > pages, but if I were doing it, I would just create a withlist script > to do it. I thought when you kicked in the mysql adaptor, it populated the mysql table with all that data... you're saying it doesn't, and you have to start from scratch? Bob From mark at msapiro.net Fri Aug 13 17:31:32 2010 From: mark at msapiro.net (Mark Sapiro) Date: Fri, 13 Aug 2010 08:31:32 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <20100813034343.M88594@nleaudio.com> Message-ID: Bob Puff wrote: > >I thought when you kicked in the mysql adaptor, it populated the mysql table >with all that data... you're saying it doesn't, and you have to start from >scratch? If you start a new list with any of the MysqlMemberships.py adaptors that I have seen, it creates the necessary database tables. If you switch an existing list from OldStyleMemberships.py to MysqlMemberships.py, you have replaced all the list methods that access the list's config.pck for member data with ones that access the MySQL database. Thus, MysqlMemberships.py has no way to get the old membership data and you have to somehow get it before the switch to populate the new database. Ideally, there would be a utility to extract the membership data, populate the MySQL database and switch the member adaptor, but as far as I know, there is no such utility. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From barry at list.org Sat Aug 14 04:11:16 2010 From: barry at list.org (Barry Warsaw) Date: Fri, 13 Aug 2010 22:11:16 -0400 Subject: [Mailman-Developers] MM3 nntp support? In-Reply-To: <4C600975.9060004@libertytrek.org> References: <4C600975.9060004@libertytrek.org> Message-ID: <20100813221116.5a870af2@heresy> On Aug 09, 2010, at 09:58 AM, Tanstaafl wrote: >Back in December Barry had mentioned that he was exploring adding nntp >(and IMAP) support to the archives, but didn't clarify much further... >and I googled quite a bit, and these 2 or 3 posts on the subject is all >I could find.: > >> Re: [Mailman-Users] NNTP server for "local" newsgroups ? Yep, this hasn't actually been implemented yet. >My question is - would this (hopefully? please!?) also include posting >support from a newsreader, so that nntp users could also interact with >the list discussion(s) using their preferred newsreader? Or was this >for reading only? I mostly imagine this as a read-only service, but if the authentication issues can be worked out, I see no reason why posting via NNTP couldn't be allowed should the list and site admins choose to do so. -Barry -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From tanstaafl at libertytrek.org Sat Aug 14 18:21:01 2010 From: tanstaafl at libertytrek.org (Tanstaafl) Date: Sat, 14 Aug 2010 12:21:01 -0400 Subject: [Mailman-Developers] MM3 nntp support? In-Reply-To: <20100813221116.5a870af2@heresy> References: <4C600975.9060004@libertytrek.org> <20100813221116.5a870af2@heresy> Message-ID: <4C66C26D.9080400@libertytrek.org> Barry Warsaw wrote: > On Aug 09, 2010, at 09:58 AM, Tanstaafl wrote: >> Back in December Barry had mentioned that he was exploring adding >> nntp (and IMAP) support to the archives, but didn't clarify much >> further... and I googled quite a bit, and these 2 or 3 posts on the >> subject is all I could find.: > Yep, this hasn't actually been implemented yet. No worries - but is it still planned/doable/on the drawing board for the 3.0 (or maybe worst case, 3.1) release? > I mostly imagine this as a read-only service, but if the > authentication issues can be worked out, I see no reason why posting > via NNTP couldn't be allowed should the list and site admins choose > to do so. Cool... choice is a good thing, and I think that being able to provide 2-way nntp access to lists (natively, without any hacks or additional s/w required) would just be awesome. Thanks for considering it Barry... From aaron at campusactivism.org Mon Aug 16 23:04:28 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Mon, 16 Aug 2010 17:04:28 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: References: Message-ID: <4C69A7DC.1040803@campusactivism.org> I'm figuring out where to get the information from the config.pck (pickle file) for each list to populate the MySQL table. It seems like the MySQL format is extracting some of its fields from the user_options fields, is this true? If this is true, it is confusing because several of the user_options are listed in their own field AND in the user_options field. ***MySQL field -- Pickle Source*** address -- members object hide -- useroptions (16) nomail -- useroptions (128) - am I right about this? ack -- useroptions (4) not_metoo -- useroptions (2) digest -- digest_members object plain -- useroptions (8) password -- password object lang -- language object name -- usernames object one_last_digest -- one_last_digest object. I guess the email would be listed here if I had any people using this setting. user_options -- user_options delivery_status -- This seems to be a combination of user_options settings "1" and "2", am I right? topics_userinterest -- there is a topics_userinterest object which I'm not using. delivery_status_timestamp - I don't see this listed in config.pck. Where is this? I guess I'm not too worried about it as it seems like a temporary thing to do with bounces. I'm skipping the following fields which store information about bounces as I'm fine with losing my bounce data. bi_cookie bi_score bi_noticesleft bi_lastnotice bi_date ------------------------------------ BTW, I exported the pickle into JSON so I could use it in PHP. Used a python script from: http://stackoverflow.com/questions/3040872/pythons-cpickle-deserialization-from-php # pickle2json.py import sys, optparse, cPickle, os try: import json except: import simplejson as json # Setup the arguments this script can accept from the command line parser = optparse.OptionParser() parser.add_option('-p','--pickled_data_path',dest="pickled_data_path",type="string",help="Path to the file containing pickled data.") parser.add_option('-j','--json_data_path',dest="json_data_path",type="string",help="Path to where the json data should be saved.") opts,args=parser.parse_args() # Load in the pickled data from either a file or the standard input stream if opts.pickled_data_path: unpickled_data = cPickle.loads(open(opts.pickled_data_path).read()) else: unpickled_data = cPickle.loads(sys.stdin.read()) # Output the json version of the data either to another file or to the standard output if opts.json_data_path: open(opts.json_data_path, 'w').write(json.dumps(unpickled_data)) else: print unpickled_data From mark at msapiro.net Tue Aug 17 01:13:59 2010 From: mark at msapiro.net (Mark Sapiro) Date: Mon, 16 Aug 2010 16:13:59 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C69A7DC.1040803@campusactivism.org> Message-ID: Aaron Kreider wrote; > I'm figuring out where to get the information from the config.pck >(pickle file) for each list to populate the MySQL table. > >It seems like the MySQL format is extracting some of its fields from the >user_options fields, is this true? user_options is used by OldStyleMemberships.py to store the user's options defined by the bit definitions (from Defaults.py) # Bitfield for user options. See DEFAULT_NEW_MEMBER_OPTIONS above to set # defaults for all new lists. Digests = 0 # handled by other mechanism, doesn't need a flag. DisableDelivery = 1 # Obsolete; use set/getDeliveryStatus() DontReceiveOwnPosts = 2 # Non-digesters only AcknowledgePosts = 4 DisableMime = 8 # Digesters only ConcealSubscription = 16 SuppressPasswordReminder = 32 ReceiveNonmatchingTopics = 64 Moderate = 128 DontReceiveDuplicates = 256 but these options are accessed and set via the list (set|get)MemberOption() methods defined by the MemberAdaptor and can be stored internally by the MemberAdaptor in any way it wants. There is no requirement that the MemberAdaptor store an integer field with value = the sum of the option bits, however, if it doesn't, it complicates the setting of member options from new_member_options in the addNewMember() method. >If this is true, it is confusing because several of the user_options are >listed in their own field AND in the user_options field. Examination of (is that what you're using?) shows that it stores and uses user_options in the same way as OldStyleMermberships.py. hide, ack, not_metoo and plain are defined fields in the MySQL database table, but are otherwise unreferenced by MysqlMemberships.py. >***MySQL field -- Pickle Source*** >address -- members object >hide -- useroptions (16) >nomail -- useroptions (128) - am I right about this? No. nomail is not a user_options bit although it used to be the DisableDelivery bit. The 128 bit is Moderate. >ack -- useroptions (4) >not_metoo -- useroptions (2) >digest -- digest_members object >plain -- useroptions (8) >password -- password object >lang -- language object >name -- usernames object >one_last_digest -- one_last_digest object. I guess the email would be >listed here if I had any people using this setting. This setting is used when a member switches from digest to non-digest if there are digest messages pending at the time of the switch. It is effectively unused by MysqlMemberships.py. Whatever you put in the MySQL one_last_digest field is irrelevant because there is no MemberAdaptor method to query it or return a list of members for which one_last_digest is true. The code in ToDigest.py is drecips = mlist.getDigestMemberKeys() + mlist.one_last_digest.keys() so unless the MemberAdaptor maintains the list attribute one_last_digest dictionary, it doesn't work anyway. And, MysqlMemberships.py doesn't even maintain the MySQL database field. >user_options -- user_options >delivery_status -- This seems to be a combination of user_options >settings "1" and "2", am I right? delivery_status is no longer a user_options bit. It is a separate entity maintained with (set|get)DeliveryStatus() as a tuple with possible values # Delivery statuses ENABLED = 0 # enabled UNKNOWN = 1 # legacy disabled BYUSER = 2 # disabled by user choice BYADMIN = 3 # disabled by admin choice BYBOUNCE = 4 # disabled by bounces along with a timestamp. >topics_userinterest -- there is a topics_userinterest object which I'm >not using. >delivery_status_timestamp - I don't see this listed in config.pck. >Where is this? I guess I'm not too worried about it as it seems like a >temporary thing to do with bounces. It is used for the getDeliveryStatusChangeTime() method. With OldStyleMemberships.py, delivery_status is a dictionary keyed by member with values of tuples consisting of the status (0 - 4 as above) and the time it was set. I think you would be much better off looking at the various get and set methods in OldStyleMemberships.py and comparing them to the ones defined in MysqlMemberships.py to see what MySQL database items correspond to the list member attributes stored by OldStyleMemberships.py. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From aaron at campusactivism.org Tue Aug 17 22:20:15 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Tue, 17 Aug 2010 16:20:15 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: References: Message-ID: <4C6AEEFF.1050602@campusactivism.org> Examination of > > (is that what you're using?) shows that it stores and uses > user_options in the same way as OldStyleMermberships.py. hide, ack, > not_metoo and plain are defined fields in the MySQL database table, > but are otherwise unreferenced by MysqlMemberships.py. > > I'm using that version. This is very strange - why are there fields in the mysql table that aren't in use? hide, nomail, ack, not_metoo, and plain I'm guessing they were either deprecated or the programmer planned to use them in the future. Aaron From aaron at campusactivism.org Wed Aug 18 00:40:19 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Tue, 17 Aug 2010 18:40:19 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: References: Message-ID: <4C6B0FD3.3070004@campusactivism.org> When I tried to depickle a list, I got an "Import Error No Module named Mailman.Bouncer". I suspect this is for a list that has bounces. I was able to depickle a much smaller list. Could it be a users permission issue? I tried running the script as root, but it still gave me the error. I'm using this python script, running it in the mailman/Mailman directory: import sys, optparse, cPickle, os try: import json except: import simplejson as json # Setup the arguments this script can accept from the command line parser = optparse.OptionParser() parser.add_option('-p','--pickled_data_path',dest="pickled_data_path",type="string",help="Path to the file containing pickled data.") parser.add_option('-j','--json_data_path',dest="json_data_path",type="string",help="Path to where the json data should be saved.") opts,args=parser.parse_args() # Load in the pickled data from either a file or the standard input stream if opts.pickled_data_path: unpickled_data = cPickle.loads(open(opts.pickled_data_path).read()) else: unpickled_data = cPickle.loads(sys.stdin.read()) # Output the json version of the data either to another file or to the standard output if opts.json_data_path: open(opts.json_data_path, 'w').write(json.dumps(unpickled_data)) else: print unpickled_data Full Error: File "pickle2jsonroot.py", line 15, in ? unpickled_data = cPickle.loads(open(opts.pickled_data_path).read()) ImportError: No module named Mailman.Bouncer From mark at msapiro.net Wed Aug 18 00:55:49 2010 From: mark at msapiro.net (Mark Sapiro) Date: Tue, 17 Aug 2010 15:55:49 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C6AEEFF.1050602@campusactivism.org> Message-ID: Aaron Kreider wrote: > >This is very strange - why are there fields in the mysql table that >aren't in use? >hide, nomail, ack, not_metoo, and plain > >I'm guessing they were either deprecated or the programmer planned to >use them in the future. They were not deprecated in the sense of having at one time been defined in the member data in the OldStyleMemberships.py list object. They have never been attributes of the list object other than as bits in user_options. These fields also exist (unreferenced) in the table in Kev Green's MysqlMembersips.py , upon which Fil's is based, so my guess is Kev intended to use them at some point but never got to it. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From mark at msapiro.net Wed Aug 18 01:12:40 2010 From: mark at msapiro.net (Mark Sapiro) Date: Tue, 17 Aug 2010 16:12:40 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C6B0FD3.3070004@campusactivism.org> Message-ID: Aaron Kreider wrote: > When I tried to depickle a list, I got an "Import Error No Module >named Mailman.Bouncer". > >I suspect this is for a list that has bounces. I was able to depickle a >much smaller list. Yes, the issue only occurs for lists with members that have bounce_info. There are at least three ways around this. Create your script as a withlist script and run it via withlist (see bin/withlist --help), or run your script from Mailman's bin/ directory and 'import paths' at the beginning of the script, or copy Mailman's bin/paths.py to the directory from which you want to run the script, and 'import paths' at the beginning of the script. >Could it be a users permission issue? I tried running the script as >root, but it still gave me the error. I'm using this python script, >running it in the mailman/Mailman directory: It would probably also work as is if you ran it in the mailman/ directory, but I think the other methods are preferable. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From iane at sussex.ac.uk Wed Aug 18 17:18:23 2010 From: iane at sussex.ac.uk (Ian Eiloart) Date: Wed, 18 Aug 2010 16:18:23 +0100 Subject: [Mailman-Developers] Subscription Authentication. Message-ID: <42EA92B3DC327C2519AF2C28@lewes.staff.uscs.susx.ac.uk> Hi, We've been discussing mailing lists over on the ietf-dkim mailing list, and the issue of when a receiving MTA should trust mail from a list. I had an idea, though it's only vaguely formed: It would be nice if a list server would verify subscription requests using OAuth, Windows Live ID Delegated Authentication, or similar. Perhaps instead of the usual verification by email. If is accurate, that's about 35% of email users with Gmail, Yahoo, and Hotmail. If that happened, then then the subscriber's mail system has a chance of understanding that the subscriber has, indeed, subscribed to the list. At that point, the receiving mail system might whitelist mail from that list, provided that it had a good DKIM signature, or an SPF pass, perhaps. One might even build some sort of federated list management infrastructure, so a user could go to one site to manage all their Mailman3 mailing list subscriptions. With some kind of future standard, perhaps other MLMs could join the party later. -- Ian Eiloart IT Services, University of Sussex 01273-873148 x3148 For new support requests, see http://www.sussex.ac.uk/its/help/ From aaron at campusactivism.org Wed Aug 18 21:48:49 2010 From: aaron at campusactivism.org (Aaron Kreider) Date: Wed, 18 Aug 2010 15:48:49 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: References: Message-ID: <4C6C3921.20103@campusactivism.org> On 8/17/2010 7:12 PM, Mark Sapiro wrote: > > There are at least three ways around this. > run your script from Mailman's bin/ directory and 'import paths' at the > beginning of the script, or This worked. Now I get a JSON error: File "pickle2json.py", line 21, in ? open(opts.json_data_path, 'w').write(json.dumps(unpickled_data)) File "build/bdist.linux-x86_64/egg/simplejson/__init__.py", line 261, in dumps File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 214, in encode File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 282, in iterencode File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 190, in default TypeError: is not JSON serializable I also tried adding skipkeys=True to the JSON decode, but that didn't work: open(opts.json_data_path, 'w').write(json.dumps(unpickled_data, skipkeys=True)) Some Googling on this topic suggests that simplejson cannot handle decimal places. Is that true? It might also be having a problem with the date objects. I might just manually delete all the bounce data for all the lists (around 20) in the mailman admin interface, so I can export them. Aaron From mark at msapiro.net Thu Aug 19 01:13:37 2010 From: mark at msapiro.net (Mark Sapiro) Date: Wed, 18 Aug 2010 16:13:37 -0700 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C6C3921.20103@campusactivism.org> Message-ID: Aaron Kreider wrote: >This worked. Now I get a JSON error: > >File "pickle2json.py", line 21, in ? > open(opts.json_data_path, 'w').write(json.dumps(unpickled_data)) > File "build/bdist.linux-x86_64/egg/simplejson/__init__.py", line 261, >in dumps > File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 214, >in encode > File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 282, >in iterencode > File "build/bdist.linux-x86_64/egg/simplejson/encoder.py", line 190, >in default >TypeError: current score: 1.0 > last bounce date: (2007, 1, 8) > email notices left: 3 > last notice date: (1970, 1, 1) > confirmation cookie: None > > is not JSON serializable The problem is that a member's bounce_info is an instance of the Mailman.Bouncer._BounceInfo class (this is why your script needs to be able to find the Mailman.Bouncer module to unpickle a list with bounce_info). JSON can't represent this class instance directly, just as MysqlMemberships.py can't store it directly in the MySQL database. This is why MysqlMemberships.py takes the class instances attributes score, date, noticesleft, lastnotice and cookie and stores them as separate fields bi_score, bi_date, bi_noticesleft, bi_lastnotice and bi_cookie in the MySQL database table. Your script needs to do a similar thing since it's the attribute values you need to put in the database anyway. -- Mark Sapiro The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan From terri at zone12.com Thu Aug 19 19:27:25 2010 From: terri at zone12.com (Terri Oda) Date: Thu, 19 Aug 2010 13:27:25 -0400 Subject: [Mailman-Developers] Subscription Authentication. In-Reply-To: <42EA92B3DC327C2519AF2C28@lewes.staff.uscs.susx.ac.uk> References: <42EA92B3DC327C2519AF2C28@lewes.staff.uscs.susx.ac.uk> Message-ID: <4C6D697D.6050509@zone12.com> +1. We were also discussing this at LinuxCon, and OAuth or similar paves the way to some other nice things, like easier single sign on/integrated systems, and an easier way to handle using the archives like a web forum to allow participation by those who prefer that mode of communication. There was definitely interest in having a setup where people could mass-manage subscriptions to lists even when they're on different servers, which I hadn't thought of but can see the advantages for users... Ian Eiloart wrote: > Hi, > > We've been discussing mailing lists over on the ietf-dkim mailing > list, and the issue of when a receiving MTA should trust mail from a > list. > > I had an idea, though it's only vaguely formed: > > It would be nice if a list server would verify subscription requests > using OAuth, Windows Live ID Delegated Authentication, or similar. > Perhaps instead of the usual verification by email. If > is accurate, that's > about 35% of email users with Gmail, Yahoo, and Hotmail. > > If that happened, then then the subscriber's mail system has a chance > of understanding that the subscriber has, indeed, subscribed to the > list. At that point, the receiving mail system might whitelist mail > from that list, provided that it had a good DKIM signature, or an SPF > pass, perhaps. > > One might even build some sort of federated list management > infrastructure, so a user could go to one site to manage all their > Mailman3 mailing list subscriptions. With some kind of future > standard, perhaps other MLMs could join the party later. > From barry at list.org Tue Aug 24 23:31:30 2010 From: barry at list.org (Barry Warsaw) Date: Tue, 24 Aug 2010 17:31:30 -0400 Subject: [Mailman-Developers] Exporting member info (including options) In-Reply-To: <4C6436D1.5080506@campusactivism.org> References: <4C6436D1.5080506@campusactivism.org> Message-ID: <20100824173130.11495bce@heresy> On Aug 12, 2010, at 02:00 PM, Aaron Kreider wrote: >Is there a good way to export all of the member info for a list? Mailman 3 has two related, but incomplete approaches that might provide some useful examples. There is an "export" command that dumps the various configurations to an XML format file. See src/mailman/bin/export.py There's also an "import" command which will be used to import a Mailman 2 config.pck file into the schema used by Mailman 3. This is kind of working and there are some doctests for this, but it still needs work to be a complete solution. See src/mailman/command/cli_import.py for details. -Barry -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: not available URL: