Re: [Mailman-Developers] bugs on launchpad

2012-03-23 Thread C Nulk
On 3/22/2012 5:48 PM, Stephen J. Turnbull wrote:
 On Fri, Mar 23, 2012 at 1:09 AM, Barry Warsaw ba...@list.org wrote:

 If we add something like $archive_url to the decoration interpolation
 dictionary, what happens when we have multiple archivers that support
 permalink() enabled?  Do we chose one at random (these are unordered)?
 -1

I agree so -2.  I thinking is if you list administrator/owner has not
defined an order, make it simple and impose a known order in that case -
alphabetize/sort the order and pick the first one.


 Do we add a configuration variable to select a primary archiver for this?
 +1

+2

 This would allow the list administrator/owner to define and pick the
primary archiver.  For any other archivers, people can go to the
Archived-At header(s).


 If there's *no* archiver configuration variable, we don't know where to
 point to anyway for Gmane-like archivers (yes, I know, catering to Gmane
 will give Brad hives, but some people like Gmane).  The local archive, if it
 exists, may seem TOOWTDI, but it might not be the preferred one even if
 it's the only one configured in Mailman (although that seems a lot less
 likely than the case where somebody just grandfathers an existing Gmane
 subscription as the archive URL of choice).

 Do we allow something like $archive_url.prototype as an interpolation
 variable to select e.g. the 'prototype' archiver?
 -1

 Too complex.  If people want alternative archives, they can go to
 the list FAQ or the Archived-At headers.  If we go this way, we'd
 better have a *really* good comment and a pre-existing entry in
 the FAQ to save Mark some time. :-)

I agree with Stephen.  Too complex and can be confusing without it being
well documented with a number of examples.


___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] New RFC on using DKIM with MLMs

2011-11-28 Thread C Nulk
Hello Ian,

Sorry I am a bit late in responding but with our Thanksgiving holiday
and me taking a few days of vacation I was away from email.

I understand what you are saying in your message but I think you
possibly missed my point.  Given the definitions previously proposed for
the Mediator header, I believe it is far too generic to be useful.

To paraphrase the previous definitions for the Mediator header,

   any program/instance/etc. that modifies, adds content, regulates
Users, etc. can use it [the 'Mediator' header].

To me, a reasonable reading and understanding of the definition[s] tells
me the MUA, the MTA, any appliances, any other program/instance
[including devices]/etc. can add the Mediator header REGARDLESS of
whether or not that appliance/program/instance/device has added a
Received header, a User-Agent header, or any other pertinent header(s).

Since I think the Mediator header is, at this time, poorly defined and
the initial point of the discussion was about having a List-Agent
header for MLMs, I say List-Agent.

As for my example you pulled apart :), I deliberately made it a worst
case scenario just to highlight how the Mediator header was poorly
defined.  In fact, given the Mediator header definitions and your
comments, you also highlight how poor the definition is since not only
will the Mediator headers be added but also all the additional
Received headers.  I may be wrong in that you assume that if
Received headers are used then the Mediator headers won't be used.
However, the definition does not precluded having both, thus doubling
(or more) on the number of headers.

Again, I say stick with the List-Agent header for MLMs.  It is
narrowly defined and limited in scope, precisely what a header should be
to be effective.

Thanks for listening/reading :),
Chris

 

On 11/23/2011 5:16 AM, Ian Eiloart wrote:
 On 16 Nov 2011, at 16:10, C Nulk wrote:

 I can't help but consider the rash of useless Mediator headers.
 Consider the following example:

 Person 1 sends a message to a list which is then sent to Person 2.
 Person 1's site has separate appliances for the MTA, Spam checking,
 Anti-Virus, and Spy-ware, likewise for the receiver's site and the site
 the MLM is for the list.  My reading of the above definitions tells me:
 1. Person 1's MUA adds a Mediator header (creating a message is a simple
 special case of modifying/adding a message,
 But, there are already headers to identify the creator. There's no need to 
 use a mediator header to duplicate other information.

 2. Person 1's site adds 4 additional Mediator headers (one each for the
 MTA, Spam, Anti-Virus, Spy-ware since each modify/forward/add to the
 message,
 The MTA would use a received header, not a mediator header. If the message 
 is routed through the other systems, then they should already add received 
 headers. If the message isn't routed through those systems (e.g., the systems 
 are plugged in to the MTA, then there's no need to add mediator headers).

 3. The MLM's site adds 9 additional Mediator headers (4 inbound [item
 2], 1 for the MLM [maybe more], and 4 outbound),
 4. Person 2's site adds 4 additional Mediator headers (4 inbound [item 2]),
 5. Person 2's MUA may or may not add a Mediator header depending on any
 rules/filters Person 2 has in place.
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


[Mailman-Developers] Mailman v3 and ban-list

2011-11-28 Thread C Nulk
Hello,

I thought I would ask a quick question on the development of Mailman 3.
Over in the Mailman-Users list, Mark Sapiro mentions that he adds a
regex into the ban_list of all of his lists.

Is there any consideration being given to having a global ban_list which
applied across all lists for a mailman instance?  It would be nice to
have both a global and a list-specific ban_list mechanism.  The global
version would allow one to put in one ban entry in for all lists.  An
example would be Mark's regex for answerpot (a list message harvester).

Just a thought,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] New RFC on using DKIM with MLMs

2011-11-16 Thread C Nulk

On 11/15/2011 6:52 PM, Barry Warsaw wrote:
 On Oct 29, 2011, at 06:39 AM, Patrick Ben Koetter wrote:

 I suggest we use the term 'Mediator' as introduced by D. Crocker in RFC 5598
 http://www.rfc-editor.org/in-notes/rfc5598.txt instead:

   A Mediator attempts to preserve the original Author's information in
   the message it reformulates but is permitted to make meaningful
   changes to the message content or envelope.

   A Mediator's role is complex and contingent, for example, modifying
   and adding content or regulating which Users are allowed to
   participate and when.  The common example of this role is a group
   Mailing List.

   (see section 2.1.4. Mediator and also section 5. Mediators)
 That makes a good case for Mediator.

Hmmm.  To me, the above definition for Mediator is reason enough to
abandon it (for the time at least) because it is not well thought out
regarding everything that may touch, modify, add content, regulate user,
etc.   Together with the above and a line from a previous message
Patrick sent to the list:

   The term 'Mediator' describes the same, but it is general in
meaning. Any instance modifying and forwarding a message can use it. 

I can't help but consider the rash of useless Mediator headers.
Consider the following example:

Person 1 sends a message to a list which is then sent to Person 2.
Person 1's site has separate appliances for the MTA, Spam checking,
Anti-Virus, and Spy-ware, likewise for the receiver's site and the site
the MLM is for the list.  My reading of the above definitions tells me:
1. Person 1's MUA adds a Mediator header (creating a message is a simple
special case of modifying/adding a message,
2. Person 1's site adds 4 additional Mediator headers (one each for the
MTA, Spam, Anti-Virus, Spy-ware since each modify/forward/add to the
message,
3. The MLM's site adds 9 additional Mediator headers (4 inbound [item
2], 1 for the MLM [maybe more], and 4 outbound),
4. Person 2's site adds 4 additional Mediator headers (4 inbound [item 2]),
5. Person 2's MUA may or may not add a Mediator header depending on any
rules/filters Person 2 has in place.

So, at the end of this simple posting of a message to a list, we have
18+ Mediator headers, one for each time an instance adds content,
modifies a message, or regulates a user.

Granted, I may be making this a worst case scenario, but also consider
any sites the message is relayed through - adding even more Mediator
headers.  Looking at a worst case scenario helps see where the problems
occur and cracks in specifications happen.

I am not opposed to a Mediator header.  I just think since our
discussion is focused on MLMs that List-Agent is the best choice that
all MLM developers can come to an agreement on.

As for other applications (news, web forum, etc), a discussion with
those developers should (and needs to) take place to come up with a more
generic header - be it Mediator or not.

In any case, let's focus on MLM related headers, like List-Agent :), and
then work on a more generic, non-conflicting header for others at a
later time.   I just see including non-MLM information into a MLM header
discussion as feature-creep.

 Hmm, if there are no intermediate processes between receiving a message and
 approving it a List-Approved-Date seems fine. But if there are we run into 
 the
 same problem as described below with List-Archived-Date - you can't tell when
 it was queued and when processing took place.

 Adding a second header might make the useful distinction:

 List-Received-Date
RFC 2822 date timestamp when message was received by MLM

 List-Approved-Date
RFC 2822 date timestamp when message was approved by moderator
 What if the message is automatically approved?  Does it get a
 List-Approved-Date header?  Merging with Murray's concept of Received states,
 it might just make more sense to put all that information into Received
 headers.

The only issue I can see is if the Received headers are removed as part
of processing, whether in an appliance, an MTA, or an MUA.  I know it
shouldn't happen but I received messages with missing Received headers.
Having the information in a List-* header wouldn't hurt.


 Another header that might be useful here would be List-Approved-By which
 could be the name or email address of the moderator who approved it.  Right
 now, MM3 doesn't fill that in, and it could of course be filled in by say
 list-ow...@example.com, but in MM3 it could be potentially filled in with
 the preferred address for the moderator that approved it.
 I see the benefit because it helps if you moderate in a team. But I fear the
 anger of people whose postings we decline. They search for moderator
 identities and then start molesting them e.g. by subscribing them to mailing
 lists that don't require opt-in. (Happend to me python.org postmaster. The
 angry person subscribed my address to various pr0n mailing lists and it took
 me weeks to get unsubscribed.)
 Good point.  I do 

Re: [Mailman-Developers] Mailman headers roundup

2011-11-10 Thread C Nulk

On 11/10/2011 12:33 PM, Patrick Ben Koetter wrote:
 * Barry Warsaw ba...@list.org:
 X-Mailman-Version
 The version of Mailman that sent the message.  It can lose the X-
 prefix.
 Modify to: List-Agent, Mediator
 Next Step: Discuss
 I like List-Agent much more than User-Agent, since Mailman is only tenuously
 under any control of the user.  I like having this header under the List-
 prefix, so I Mediator doesn't appeal to me.
 Here's why I would prefer Mediator:

 What we want is a header field name that indicates the message has been
 accepted, modified and forwared by a program.

 The header field name 'List-Agent' does that, but it is specific to mailing
 lists. The term 'Mediator' describes the same, but it is general in meaning.
 Any instance modifying and forwarding a message can use it.

 If we use List-Agent others will have to register another header field name -
 'Mediator' would fit for all.

 p@rick



I understand what you are saying.  To me Mediator doesn't describe the
same information specifically because it is too general in meaning.
List-Agent as the header makes sense to me.   Mailman manages whatever
email distribution lists I create or manage, dealing with lists and
the message traffic back and forth to it and subscribers.  To me, it
acts as a agent, thus List-Agent makes more sense.  In addition, when
I am or have to look through a messages headers to see what is
happening, I want to be able to group common headers together.  All the
Received headers, all the List- headers so I can get a sense of
things faster.  The Mediator header doesn't lend itself to doing so.
It is out on its own.

This header discussion, to me, is about identifying and registering
common headers useful for Mailman in particular and Mailing List
Managers in general.  The List-Agent header works best and working
with other MLMs to register the common headers is for the best.

I don't think we are trying to solve all the issues associated with
email processing, only a little piece.  If other software packages that
may have some small interaction with email need a header, then let them
build a consensus around their header and then register it.  If, later
in time, it turns out there is a need for a super-set of headers that
includes MLMs, then maybe the Mediator header is appropriate which
wouldn't conflict with List-Agent.

For now, I think List-Agent is the best solution to provide a
descriptive header for Mailman and other MLMs which when used with other
proposed List- headers allows one to easily identify a MLM and its
interactions with a message.

Sorry for the long post.

Thanks,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Mailman headers roundup

2011-11-02 Thread C Nulk

On 11/2/2011 8:06 AM, Barry Warsaw wrote:
 Thanks for coordinating this Patrick.

 On Oct 30, 2011, at 08:04 PM, Patrick Ben Koetter wrote:

 X-List-Received-Date
  This only gets added when the message is sent to the archive.
  Modify to: List-Archive-Sent
  Next Step: Discuss
 List-Archive-Sent (maybe with -Date) makes sense to me.  This really is
 different than Received headers IMO since it's not recording any receiving
 event in Mailman.  To the extent that it's useful to know when an MLM sends
 the message to its archivers, getting the direction right seems important.

I agree with having a List-Archive-Sent header for when the message is
sent to one (or more archivers).  However, I still think there is a need
for the date and time when the List actually receives the message.
Let's say Mailman is running on the same system as a spam/anti-virus
software package.  The message comes into the systems MTA which then
routes the message to the spam/anti-virus software where it is held for
approval.  Two days later, someone approves the message which is
returned to the MTA for delivery.  The MTA passes the message to
Mailman.  Mailman adds the List-Received-Date header since that is when
Mailman received it.

A similar argument can be made about the List-Archive-Sent header.  The
header should not be added until the last moment, basically right before
calling the archiving module.  If a list is moderated or a message is
held, that will affect the List-Archive-Sent header because the message
can't be sent unless a disposition is known about the message.



 The question in my mind is what to do about the case where, as in MM3, we have
 multiple archivers.  Multiple L-A-S headers should be allowed, but then I
 wonder whether the headers need to record which archiver the header applies
 to.  TBH, in MM3 when we send to one archiver, we send to them all so I'm not
 sure the extra complexity is worth it.  I also don't know whether any other
 MLM supports multiple archivers.
 X-Message-ID-Hash
  propose an RFC as an extension of RFC 5064
  Modify to: unclear
  Next Step: Discuss
 As an RFC, obviously we'd drop the X- prefix, but also Hash might be too
 vague.  Personally I think Message-ID-Hash is fine and the theoretical RFC
 shouldn't allow much leeway in implementations (i.e. only one hash algorithm
 is allowed).  This will probably be bikeshedded to death.  Still, since
 Message-ID must be unique (and generally is, as backed up by The Mail
 Archive's data), I think base-32 of SHA-1 will in practice be just fine.

 X-Mailman-Version
  The version of Mailman that sent the message.  It can lose the X-
  prefix.
  Modify to: List-Agent, Mediator
  Next Step: Discuss
 I like List-Agent much more than User-Agent, since Mailman is only tenuously
 under any control of the user.  I like having this header under the List-
 prefix, so I Mediator doesn't appeal to me.

I would much more prefer List-Agent over User-Agent.  I agree Barry
about Mailman tenuously under any control of the user.  My experience is
that users generally exercise no control over Mailman.  Mediator also
doesn't make much sense to me.   Mailman settle any disputes for
me.  Nor, do I see it as an intermediate agency.  I see lists in
general and Mailman in particular as a collecting point or aggregator
for messages for a common topic which then distributes the received
messages to interested parties.  So, instead of a Mediator header, I can
see a Collector header, or Aggregator header, or a Distributor header,
and even then none of them really make sense.

To me, List-Agent makes the most sense.

 X-Mailman-Approved-At
  lose the X-prefix
  Modify to: List-Approved-Date
  Next Step: Create RFC or Extend RFC 2369?
 To generalize, it might be useful to have List-Moderation-Action and
 List-Moderation-Date headers.  The former would have values like Approved,
 Held, Rejected, or Discarded, while the latter would have the date of the
 disposition.  Seemingly useless actions like Discarded and Held would still be
 useful because even a discarded message may end up in some email graveyard for
 future data mining.

 II. MODIFY
 X-Mailer
  Only used when Mailman originates messages such as autoresponses.
  Modify to: User-Agent
  Next Step: Change code
 Similar to the above, I don't like User-Agent much here.  I think this could
 be simply folded into List-Agent since there are probably plenty of other
 header clues to know that a message was originated by Mailman.

I can see this one both ways.  Since Mailman is the List-Agent doing
the work, add to the message the List-Agent header.  And because Mailman
is generating the content, add to the message the User-Agent header and
make it the same information from the List-Agent header.  Then when you
are reading the headers, you can see the MTAs Received headers,
List-Agent tells you the list the message came from and User-Agent tells
you who 

Re: [Mailman-Developers] New RFC on using DKIM with MLMs

2011-10-26 Thread C Nulk
On 10/26/2011 5:43 AM, Ian Eiloart wrote:
 On 25 Oct 2011, at 02:04, Barry Warsaw wrote:

 On Oct 13, 2011, at 11:41 PM, Murray S. Kucherawy wrote:

 There's movement afoot to deprecate use of X- in header field names.  Just
 call it Mailman-Topic.  And if it's worthwhile, consider registering it
 with IANA.

If registering headers is to be pursued, perhaps a standardized list of
headers should be discussed with other MLM's and then put forth to
IANA.  The standardized headers should be able to handle generic list
information along with MLM specific.  My thought would be for

List-*   are generic headers all MLM's and MUA's can refer to for
information.
List-Mailman-*  would be Mailman specific headers
List-ListServ-*   would be ListServ specific headers

 I wonder if we should remove the X- prefixes for Mailman 3.  Here's a list of
 ones we still add or recognize (some might be used only in the test suite):

 X-Message-ID-Hash
 This could be replaced with DKIM sigs, I guess.

 X-Mailman-Rule-Hits
 X-Mailman-Rule-Misses
 This might be useful for diagnostics, but probably wants to be off in 
 general. My view is that Mailman should not be doing message filtering.

 X-BeenThere
 I guess that's useful for avoiding list loops, perhaps?

 X-Mailman-Version
 I think this should be replaced with X-Mailer, or even User-Agent. That's not 
 currently an SMTP header, but I think it should be. And it is in quite 
 widespread use.

I agree and disagree.  I may be wrong but I see the X-Mailer specifying
the MTA and User-Agent specifying the MUA.  Perhaps a different header
added by the MLM called List-Agent or List-ListAgent.


 X-Mailman-Approved-At
 X-Archive
 Does this do the same as List-Archive?

 X-No-Archive
 What does this mean?

 X-Ack
 X-No-Ack
 X-Peer
 X-MailFrom
 X-RcptTo
 Isn't that usually in the Received header?

 X-Originally-To
 Doesn't that do the same thing as List-post?

 X-Original-CC
 What's the purpose of including this?

 X-Original-Content-Transfer-Encoding
 X-MIME-Version
 X-Mailman-Copy
 X-List-Administrivia
 List-help?

 X-Content-Filtered-By
 X-Topics
 X-Mailer
 I think we should use User-Agent here. Thunderbird does, as do some other 
 mail clients. Or, we should push for introduction of a List-Agent header.

List-Agent header is my vote (see above :))


 X-List-Received-Date
 Don't the Received headers carry this information?

Maybe.  They certainly contain the date the MTA received the message but
not necessarily when the MLM received the message.  Consider a message
to be posted to a list.  The MTA receives it and it is passed on to a
Spam/AntiVirus device.  The message is held at the device because is
fails whatever checks are in place.  Five days later, the device
administrator goes through the held queue on the device, sees the
message as okay and releases it.  The MLM then receives the message to
be posted.  Now, when did the MLM really receive the message?  When the
MTA received it or five days later.  I think there is enough of a
possibility that keeping Received headers different from say a
List-Received-Date header.


 X-Approve
 X-Approved

 -Barry
 Generally, I think we should avoid the use of headers that duplicate other 
 existing headers. Where we want to add more information, then extend the 
 List-* header set if the information might be generally useful for mailing 
 list software. Otherwise, use X-Mailman-* (or even Mailman-*) so that people 
 know where the header came from.

I agree.  Reduce and avoid duplication.  Discussions should also occur
with other MLM's to come up with a generic List-* header set.

 --
 Ian Eiloart
 Postmaster, University of Sussex
 +44 (0) 1273 87-3148

Hope I made sense, Thanks,
Chris


 ___
 Mailman-Developers mailing list
 Mailman-Developers@python.org
 http://mail.python.org/mailman/listinfo/mailman-developers
 Mailman FAQ: http://wiki.list.org/x/AgA3
 Searchable Archives: 
 http://www.mail-archive.com/mailman-developers%40python.org/
 Unsubscribe: 
 http://mail.python.org/mailman/options/mailman-developers/cnulk%40scu.edu

 Security Policy: http://wiki.list.org/x/QIA9


___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Proposal for a new menu grouping in MM3webUI

2011-05-25 Thread C Nulk
Yeah, I took a look at what I wrote and I wasn't as clear as I thought I
was.  By SCHEDULED digest, I mean a digest sent out on a set time period
or frequency (like Years, Months, Weeks, etc.).  Those digests would
have the volume number incremented and the digest number reset to 1.
Any digests sent within (or BETWEEN) the scheduled digests time period /
freq. for whatever reason - size, number of msgs - would increment the
digest number only.   If there are no digests/msgs to send, then the
volume number does not increment.

Thanks Mark,
Chris

On 5/24/2011 3:50 PM, Mark Sapiro wrote:
 C Nulk wrote:

 Thank you for the work also.   I did view your latest diagram and the
 volume/digest issue seems to be correct.  But just to make sure, the
 volume number is increased for every SCHEDULED digest sent out (with the
 digest number reset to 1).  Next, any addition digests sent out BETWEEN
 scheduled digests (whether due to size of digest or number of messages
 in the digest) increase the digest number but not the volume number.  If
 that is true, then I am in agreement with you :)  because it mimics the
 magazine style of volume/issue.

 This is not the way it works in MM 2.1. In MM 2.1, the volume
 increments and the issue resets to one for the first digest produced
 in a new period, where period is Year, Quarter, Month, Week or Day as
 set in Digest options - digest_volume_frequency. The issue increments
 for each digest produced in that period whether the digest is produced
 'periodically' or by size. If there are no posts/digests produced
 during a period, the volume doesn't increment for that period.

 --
 Mark Sapiro m...@msapiro.netThe highway is for gamblers,
 San Francisco Bay Area, Californiabetter use your sense - B. Dylan

___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Proposal for a new menu grouping in MM3 webUI

2011-05-24 Thread C Nulk
On 5/24/2011 5:23 AM, Barry Warsaw wrote:
 On May 24, 2011, at 01:39 PM, Benedict Stein wrote:

 5. showing stats within the archives view instead of the config
 Yep.  We need to do a much better job of collecting and exposing stats.

I don't know if this is the place to mention it but along with increased
accessibility to statistics and archives, the ability to look at or
review the logging information is also very important.  Anywhere in the
code that output's to a log file should provide enough information to
follow a message coming into Mailman, through the various Mailman
processes, and out of Mailman.  I went through Mailman v2.1.9 to add
additional logging information so I can track a message.  My users call
on a regular basis to check if their message went out to a list they
can post to but not read (it gets complicated).   Once I had the logging
information (message-id, listname, sender, etc.), I wrote a web app that
parses the vette, smtp, and post logs and combines the information so I
can see what happened to the message either by list or by sender.  It
works well for me but additional logging information for tracking
messages and problems is also need.

I know I drifted a bit but additional logging is needed and an
administrative interface to view the information is also needed.

 Thanks for you help improving this work.
 Thank *you*!

 -Barry

Thank you for the work also.   I did view your latest diagram and the
volume/digest issue seems to be correct.  But just to make sure, the
volume number is increased for every SCHEDULED digest sent out (with the
digest number reset to 1).  Next, any addition digests sent out BETWEEN
scheduled digests (whether due to size of digest or number of messages
in the digest) increase the digest number but not the volume number.  If
that is true, then I am in agreement with you :)  because it mimics the
magazine style of volume/issue.

Thanks for yours and Barry's hard work,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


[Mailman-Developers] Adding a message id to the vette log

2011-01-28 Thread C Nulk
Hello all,

I am using Mailman v2.1.9 with some minor local mods on CentOS 5.5.  In
looking through the vette log, I noticed some of the log entries for
refused postings and discarded postings do not indicate what message
(via the message id) was acted upon.  I would like to the message id to
those entries.  I found where the entries are written to in
ListAdmin.py.   I made a few changes to the file.  Since I am barely
literate with python, I thought I would post my changes to the list and
ask you fine people if I did will work, or am I doomed.  There changes
are (in diff -u format):

--- /usr/lib/mailman/Mailman/ListAdmin.py2008-05-24
13:44:12.0 -0700
+++ ListAdmin.py.SCU2011-01-28 13:26:12.0 -0800
@@ -340,13 +340,21 @@
 fmsg.send(self)
 # Log the rejection
 if rejection:
+try:
+msg = readMessage(path)
+except IOError, e:
+if e.errno  errno.ENOENT: raise
+return LOST
+msg = readMessage(path)
 note = '''%(listname)s: %(rejection)s posting:
 \tFrom: %(sender)s
-\tSubject: %(subject)s''' % {
+\tSubject: %(subject)s
+\tMessage-id: %(messageid)''' % {
 'listname' : self.internal_name(),
 'rejection': rejection,
 'sender'   : str(sender).replace('%', '%%'),
 'subject'  : str(subject).replace('%', '%%'),
+'messageid': msg.get('message-id', 'n/a').replace('%',
'%%'),
 }
 if comment:
 note += '\n\tReason: ' + comment.replace('%', '%%')


Also, are there any other files I may need to change?

Thanks,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] password handling in MM3

2010-07-12 Thread C Nulk

Ian Eiloart wrote:

 --On 9 July 2010 12:11:50 +0200 Anna Granudd anna.gran...@gmail.com
 wrote:

 Hi,
 when subscribing a user or creating a list in Mailman 3.0 we need to
 implement the use of a password for security reasons. Later the same
 password will be used for logging in to the settings pages. At the
 moment
 passwords are not handled at all which is why I filed bug #600780 (see
 [1]). However, we're not sure how to handle the passwords at the moment
 and would like your help with ideas and possible ways to implement this,
 which is why I want to start a discussion about the password handling/
 login function. What do we need to think of and how should this best be
 dealt with?

 Most importantly, passwords must be securely hashed, so that they
 can't be
 read by the site or list admins, or by third parties.

 That means that password resets must be offered to users, instead of
 password reminders.

 Also, for sites like mine, it would be nice to have more than one
 password
 store. For example, I'd like to have users with addresses in the
 sussex.ac.uk domain authenticated against my current LDAP db, but
 non-local
 users authenticate against some other db (perhaps a different branch
 of the
 LDAP tree, but perhaps something local).

Agreed, passwords must be securely hashed.  No one should be able to
reverse the hash to derive a password.  I toss would also like to have
multiple authentication stores whether via LDAP or intrinsic to default
Mailman.  Likewise, I would also like to have multiple membership
stores, obviously the default intrinsic Mailman member store, but also
LDAP, database, etc.  Optimally, if both multiple password/member stores
are combined, when a member authenticates, the member is looked up in
the appropriate password/member store for validity whether it be LDAP, a
database, or Mailman intrinsic.  Likewise, a posting to a list should
send a message to members listed in all password/member stores
associated with the list.

Thanks,
Chris


 Thanks,
 Anna


 [1] https://bugs.launchpad.net/mailman/+bug/600780
 ___
 Mailman-Developers mailing list
 Mailman-Developers@python.org
 http://mail.python.org/mailman/listinfo/mailman-developers
 Mailman FAQ: http://wiki.list.org/x/AgA3
 Searchable Archives:
 http://www.mail-archive.com/mailman-developers%40python.org/
 Unsubscribe:
 http://mail.python.org/mailman/options/mailman-developers/iane%40sussex.a

 c.uk

 Security Policy: http://wiki.list.org/x/QIA9



 --
 Ian Eiloart
 IT Services, University of Sussex
 01273-873148 x3148
 For new support requests, see http://www.sussex.ac.uk/its/help/


 ___
 Mailman-Developers mailing list
 Mailman-Developers@python.org
 http://mail.python.org/mailman/listinfo/mailman-developers
 Mailman FAQ: http://wiki.list.org/x/AgA3
 Searchable Archives:
 http://www.mail-archive.com/mailman-developers%40python.org/
 Unsubscribe:
 http://mail.python.org/mailman/options/mailman-developers/cnulk%40scu.edu

 Security Policy: http://wiki.list.org/x/QIA9
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Problem with Moderate.py

2009-09-28 Thread C Nulk
Hello Mark,

I am posting the matches_p function below.  I believe the problem is an
off-shoot of the lce/cpe problem with the LDAPMembership adapter you
helped me with earlier.  I did get it to work by changing the condition
in matches_p from

 if mother.members.has_key(sender):
to
if mother.isMember(sender):

It works for both statically created lists and the ldap dynamically
created lists.

Here is the complete matches_p function (from Mailman v2.1.9 with the
@list patch applied and my changes):

def matches_p(sender, nonmembers):
# First strip out all the regular expressions
plainaddrs = [addr for addr in nonmembers if not addr.startswith('^')]
addrdict = Utils.List2Dict(plainaddrs, foldcase=1)
if addrdict.has_key(sender):
return 1
# Now do the regular expression matches
for are in nonmembers:
if are.startswith('^'):
try:
cre = re.compile(are, re.IGNORECASE)
except re.error:
continue
if cre.search(sender):
return 1
elif are.startswith('@'):
try:
mother = MailList(are[1:], lock=0)
# Changed the condition to use the list's isMember method
--CN  28-Sep-2009
# if mother.members.has_key(sender.lower()):
if mother.isMember(sender):
return 1
except Errors.MMUnknownListError:
syslog('error', 'filter references non-existent list %s',
are[1:])
return 0


Is the change I made the correct way of fixing the problem?  If so,
should other places where 'mlist.members.has_key(variable)' also be changed?

I have also added the 'accept_special_posters' attribute I mentioned on
the Mailman-users list.  Can you take at least a quick look at the
changes to make sure I didn't mess things up to bad?  I have the diffs
for MailList.py, versions.py, Version.py, Gui/Privacy.py and
Handler/Moderate.py.

Thanks for your help, Mark.

Chris




Mark Sapiro wrote:
 Chris Nulk wrote:
   
 I believe I have narrowed down the problem to the 'matches_p' function in 
 Moderate.py.
 

 Can you post your matches_p definitiopn?

   
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Proposed: remove address-obfuscation code from Mailman 3

2009-08-31 Thread C Nulk
I am pretty sure allowing the raw email addresses to be available is
going to go over like a lead balloon here.  Anything (however minor) to
help protect the users/clients email addresses is helpful despite what
others think.  It is fine if someone considers the obfuscation that
Mailman uses is trivial, however, anything I can do to make it harder or
more computationally time-invested to get the email address is better
than giving it away.  Sure bots are out there but if what I do helps
slow down someones system to make them look at it (and hopefully get rid
of the bot), then great.   But at least give me the choice to be able to
do it.

I happened to like Barry's (?) earlier comment about the send me this
message link.  Or maybe send my message to the original poster link
where you can click on the link, compose your message, and send it
through Mailman all without the original sender's address.  Mailman or
whatever process can figure out the original sender and pass on the your
message.  Yes, I know it is more work that is why we have computers :)

As for using robots.txt, hmm, it is not the legitimate search engines I
care about, it is the search engines/crawlers that do not respect my
robots.txt file that I care about.  If I had an effective way to
consistently identify those non-legitimate crawlers, I would add what I
needed to drop them into my firewall as I recognized them.

Chris

Julian Mehnle wrote:
 Bob Puff wrote:

   
 That's the logical progression of that argument, and is the good reason
 why obfuscation or even removal of parts is not only a good idea, its a
 necessity. Exposing raw email addresses in their normal form is real
 low-hanging fruit.

 Regardless of what I think, my clients will cry bloody murder if emails
 leak out.  I had one person recently google their email address, and
 found a link to an archive file that should have been private.  I had
 removed all links to the archives, but somehow Google found it, indexed
 it, and the guy threatened me with bloody murder if I didn't take it
 down.  Sheesh.
 

 There's robots.txt, you know?  If this is just about user outcry, then 
 robots.txt will fix it (since all legitimate search engines honor it).

 -Julian
   
 

 ___
 Mailman-Developers mailing list
 Mailman-Developers@python.org
 http://mail.python.org/mailman/listinfo/mailman-developers
 Mailman FAQ: http://wiki.list.org/x/AgA3
 Searchable Archives: 
 http://www.mail-archive.com/mailman-developers%40python.org/
 Unsubscribe: 
 http://mail.python.org/mailman/options/mailman-developers/cnulk%40scu.edu

 Security Policy: http://wiki.list.org/x/QIA9
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Proposed: remove address-obfuscation code from Mailman 3

2009-08-31 Thread C Nulk


Barry Warsaw wrote:
 On Aug 31, 2009, at 1:15 PM, C Nulk wrote:

 I am pretty sure allowing the raw email addresses to be available is
 going to go over like a lead balloon here.  Anything (however minor) to
 help protect the users/clients email addresses is helpful despite what
 others think.  It is fine if someone considers the obfuscation that
 Mailman uses is trivial, however, anything I can do to make it harder or
 more computationally time-invested to get the email address is better
 than giving it away.  Sure bots are out there but if what I do helps
 slow down someones system to make them look at it (and hopefully get rid
 of the bot), then great.   But at least give me the choice to be able to
 do it.

 Agreed.

 I happened to like Barry's (?) earlier comment about the send me this
 message link.  Or maybe send my message to the original poster link
 where you can click on the link, compose your message, and send it
 through Mailman all without the original sender's address.  Mailman or
 whatever process can figure out the original sender and pass on the your
 message.  Yes, I know it is more work that is why we have computers :)

 The difficult part about the latter is that I hate web interfaces for
 reading/composing email (Gmail included).  I want to use my mail
 reader for that!

Actually, I had more of a mailto style link in mind that sends the
message to the list (run by Mailman naturally) and as part of the
body/subject include an encrypted form of the message id (providing it
is unique).   You would use your mail client to read/compose.  Maybe
something similar to a list's listname-bounces address but with the
message id could be done.  Don't know.  Mailman would receive your
message, decrypt the message id, look up the message, then forward your
message to the original sender. 

I am not particularly fond of web interfaces for reading/composing
email.  Well, maybe when I travel overseas without a laptop, then it is
minimally okay.


 As for using robots.txt, hmm, it is not the legitimate search engines I
 care about, it is the search engines/crawlers that do not respect my
 robots.txt file that I care about.  If I had an effective way to
 consistently identify those non-legitimate crawlers, I would add what I
 needed to drop them into my firewall as I recognized them.

 Agreed.
 -Barry

Now, totally off-topic, anyone have a recommendation for a book on
learning Python so I am no longer truly dangerous, just slightly.

Thanks,
Chris

___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Proposed: remove address-obfuscation codefrom Mailman 3

2009-08-31 Thread C Nulk


Mark Sapiro wrote:
 Barry Warsaw wrote:
   
 On Aug 31, 2009, at 1:15 PM, C Nulk wrote:

 
 As for using robots.txt, hmm, it is not the legitimate search  
 engines I
 care about, it is the search engines/crawlers that do not respect my
 robots.txt file that I care about.  If I had an effective way to
 consistently identify those non-legitimate crawlers, I would add  
 what I
 needed to drop them into my firewall as I recognized them.
   
 Agreed.
 


 The point in the original post about robots.txt was that if you think
 obfuscation is undesirable and don't do it, but you get complaints
 from people who find their unobfuscated addresses on your pages via
 legitimate search engines, you can use robots.txt to keep the search
 engines out.
   
I understood the original post and I agree.
 However, robots.txt is not completely effective in this. You can use it
 to prevent Google from crawling your site or portions thereof, but it
 won't prevent Google from indexing your pages that it finds via
 external links. To prevent this, you need a meta name=robots
 content=noindex tag on the pages themselves.
   
I agree with you here.

The robots.txt and the meta html header work great for search engines
that respect those conventions.  My point is that neither of them are
effective for crawlers that do not respect the conventions.  By putting
raw email address in the archives without a means to obfuscate them
simple hands over the addresses to those disreputable crawlers.  And, if
I was writing a web crawler to harvest email addresses, I am pretty sure
I would ignore convention which stops me from getting what I want.  BTW,
I DON'T WRITE WEB CRAWLERS so no yelling at me. :)

It is those disreputable crawlers I was addressing in my comment -
robots.txt and the meta header are insufficient in that particular case.

Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Mailman and Extend.py

2009-04-17 Thread C Nulk
Barry Warsaw wrote:
 I also looked to see if there was
 an URL type interface for LDAP.  There is however it would be primary be
 an anonymous bind to a LDAP service.  Most if not all places will not
 allow anonymous binds which can update/change their LDAP information.  I
 just don't know enough about Storm to say whether or not the DN bind can
 be worked in.

 The current LDAPMembership.py get the LDAP data.  It might be possible
 to use the ideas there to implement LDAP in Storm.
 
 I don't think LDAP is a good fit for Storm, which really wants to be
 talking to a relational database via SQL.  The bad news is that using
 Storm is the easy way to hook MM3 up to a different backend.  The good
 news is that (hopefully) that's not necessary to use LDAP for  your user
 data.  I think you would need to re-implement things like the
 UserManager, but this is mostly uncharted waters.
 

As I walked to the train station last night, I came to the same
conclusion.  Since LDAP is not relational, Storm would need to make
exceptions for LDAP.  Definitely not a good fit.


 I'd be happy to help anybody who's interesting in building out an LDAP
 backend.

 My poor knowledge of Python most likely leaves me out with respect to
 developing, however, I would be happy to be involved in contributing
 ideas towards the development.

 One idea I did have is about keeping unsubscribe information.  Since an
 LDAP query will always return every entry matching the query, someone
 that wishes to unsubscribe cannot because their entry is included in the
 query.  If whatever mechanism is used to track a given list member's
 config settings (mod, ack, nomail, etc) also includes whether the person
 unsubscribed or not, then whenever the getMembers()/isMember() or
 equivalent functions are called, the query results minus the
 unsubscribed is checked/validated/etc. depending on the function.

 Sorry if the above sounds like gibberish.  Could really figure out how
 to say it better.
 
 I think I see what you're saying.  You really want to split user data
 across LDAP and say a relational database.  While I think it could be
 done (and probably /should/ be doable), it will take some clever
 model-layer programming to make it work.  I don't have a clear picture
 in my mind about how to do that right now, but it's worth an interested
 developer to take a look at it.
 
 -Barry
 

Well, not really splitting up the data between LDAP and a relational DB
because you will end up with sync problems at some point in time.  It
was more of adding/modifing text attribute values in LDAP.  I will
explain it more fully next week when I start a new thread (I just saw
your responses and I need to close up and head for the train).

Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Mailman and Extend.py

2009-04-14 Thread C Nulk


Mark Sapiro wrote:
 C Nulk wrote:
 While I waited, I did do some reading/researching on __init__ which lead
 me to reading about __getattr__ and getattr.  If I understand correctly,
 the LDAPMemberships uses them to get the isMember() and getMembers()
 methods among others.
 
 
 Not exactly. Since the MemberAdaptor is replaceable, it can't simply be
 a super class of the MailList class. Thus, it's methods are not in the
 name space of the MailList object so we need an __getattr__ method to
 access them from whatever class is assigned as the list's
 _memberadaptor. So when you reference a method such as
 mlist.isMember() that is not directly in the name space of the mlist
 instance so mlist.__getattr__('isMember') is called (behind the
 scenes) and it finds mlist._memberadaptor.isMember() and returns that.

Sorry about that.  Your explanation is what I understood was the correct
action(s) for the interaction between MailList and the MemberAdaptor.  I
just way to short in my explanation.

 
 This is true whether _memberadaptor is the default OldStyleMemberships
 class or the LDAPMemberships class or something else. The only thing
 that is specific to LDAPMemberships is the fact that the list's
 extend.py module assigned LDAPMemberships to _memberadaptor.
 
 
 From then on, whenever a member adaptor method is called for that list,
 the method that is called is the one defined in LDAPMemberships.py.

 So, for example, if your Mailman version is 2.1.10 or later so that it
 supports the @LISTNAME entry in *_these_nonmembers, and you put say
 @list2 in accept_these_nonmembers of list1, list1's processing of a
 non-member post will call list2's isMember() method to see if the
 poster is a member of list2, and if list2 already uses
 LDAPMemberships, that's it - it's isMember() method will use its LDAP
 database.
 Unfortunately, I am stuck at v2.1.9 for now.

 See the matches_p function in Mailman/Handlers/Moderate.py for more
 detail.
 I did look at Mailman/Handlers/Moderate.py, specifically the matches_p
 function.  What I envisioned doing was to modify the matches_p function
 to single out ldap entries similar to the regex entries.  Then for
 each ldap entry, call an LDAP2Dict function (to be written) which
 returns a dictionary of email addresses, then check if the sender was in
 the returned dictionary.
 
 
 That would work, but if this dictionary could be equated to the
 membership of some list, it seems to me that it would be easier to
 just backport the @listname feature to 2.1.9. You can find the
 original patch at
 http://sourceforge.net/tracker/?func=detailaid=1220144group_id=103atid=300103.
 The 2.1.10 implementation is a bit more elaborate, but the SourceForge
 patch should be sufficient for your purpose.
 
 Note that there is nothing magic about the dictionary in
 
 plainaddrs = [addr for addr in nonmembers if not
addr.startswith('^')]
 addrdict = Utils.List2Dict(plainaddrs, foldcase=1)
 if addrdict.has_key(sender):
 return 1
 
 This could just as easily have been spelled
 
 plainaddrs = [addr.lower() for addr in nonmembers if not
addr.startswith('^')]
 if sender in plainaddrs:
 return 1
 

I will have to take a closer look at the patch.  And, I probably will
apply it.  From the quick glance on sourceforge, it looks like it should
work for v2.1.9.  All I should have to do is adjust the diff lines to
point to the actual locations.

Being able to use another list as a source is great.  I would still like
to try to have everything defined/set within the list itself without
cross-referencing other management lists.  For us, it would be easier
to manage.

 
 The changes made to LDAPMemberships.py would help since you explained to
 me that one of your changes was to make members a dictionary.  The
 getMembers() method would essentially return that dictionary.
 
 
 No. getMembers() MUST return a list or everything breaks.
 

Okay.  My mistake.  Still trying to figure out Python and how things
work.  Since getMembers() returns a list, I suppose I could use the
List2Dict() function to convert the list to a dictionary to be returned
by my LDAP2Dict() function.

 
 The key would be the changes to extend.py so everything works.
 
 
 If you are accessing some LDAP directly (not via the @list construct)
 in the matches_p function, extend.py has nothing to do with it.

You will have to correct me if I am really off-base here on my
understanding.

The extend.py module defines the extend() function which appears to set
ldap (as an object of the LDAPMemberships class)
   ldap = LDAPMemberships(list)
along with additional definitions, like
   ldap.ldapsearch = (uid=somebody)
   ldap.ldapserver = ldap.example.net
and to tie it to the list, set the _memberadaptor to the object by
   list._memberadaptor = ldap

So when the list membership or some other method is accessed and not in
the list namespace, your

Re: [Mailman-Developers] Mailman and Extend.py

2009-04-14 Thread C Nulk
Mark Sapiro wrote:
 
 Consider the following instead.
 
 Create a list named say posters with it's own extend.py with settings
 like
 ldap = LDAPMemberships(list)
 ldap.ldapsearch = (role=list-poster) # as an example
 ldap.ldapserver = ldap3.example.net
 list._memberadaptor = ldap
 etc.
 
 Then all you need do is install the patch and put @posters in the
 original list's accept_these_nonmembers. You would also want to set
 the 'posters' list with attributes like
 
 archive = No
 advertised = No
 default_member_moderation = Yes
 member_moderation_action = Discard
 generic_nonmember_action = Discard
 
 so people wouldn't be aware of it and posts would not be accepted.
 
 That way, the different LDAP functions would be defined for different
 pseudo lists and you wouldn't need any Mailman modifications other
 than installing a feature that's already implemented in current
 versions.
 

Okay, okay, you've beaten me down. :):):)  I do see your point.  It is
an additional management issue I wanted to avoid with the unadvertised
lists.

Will this @list method also work for the other parameters/options that
have a list of email addresses (like owner, moderator, ban_list, ...) or
just the *_these_nonmembers options?

It probably sounds silly to do but if those options also take the @list
method, I can set up several of my lists so all the options (with email
address lists) are based out of ldap and have our system for creating
accounts out of our HR system build the ldap entries, resulting minimal
list management (for me at least :):))  The ban_list would not be an
ldap list but in theory it could.

If not, I guess I will have to live with it. :)

Thanks,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Mailman and Extend.py

2009-04-14 Thread C Nulk
Mark Sapiro wrote:
 C Nulk wrote:

 Will this @list method also work for the other parameters/options that
 have a list of email addresses (like owner, moderator, ban_list, ...) or
 just the *_these_nonmembers options?
 
 
 It only works for *_these_nonmembers. It could be implemented for
 owner/moderator/etc, but these are more difficult as owner and
 moderator are referred to in more than one place.
 
 Note that Mailman 3 will support a true back-end database for list
 membership and other roles. At that time, this will all become much
 easier.
 

I figured as much.  And thank you for answering my next question about
Mailman 3.  Is there documentation somewhere I can read how to configure
MM3 for using LDAP or any other back-end database?

Now back to the patch.

Thanks again,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


Re: [Mailman-Developers] Mailman and Extend.py

2009-04-13 Thread C Nulk
Thank you for replying Mark.

Mark Sapiro wrote:
 C Nulk wrote:
 I have recently implemented the LDAPMembership adapter.  It provides
 some good functionality in creating the list membership.  However, the
 concept is there to provide access to one or more lists of email
 addresses (list membership is essentially a list of email addresses).  I
 would like to use the LDAP functionality in other areas which require or
 use a list of email addresses (e.g. accept_these_nonmembers,
 hold_these_nonmembers, etc).

 I have looked at the F.A.Q. on custom handlers and read the MailList.py
 file (under __init__) to see the 'extend.py' file being loaded.

 Can someone better explain how loading the 'extend.py' file incorporates
 the files code and how the 'def extend' function is called?  If I can
 understand how it works, perhaps, a solution to adding multiple LDAP
 search queries can be added to the extend.py file and used in other
 places in Mailman.
 
 
 Chris,
 
 The extend.py mechanism as you use it basically just replaces the
 default mamber adaptor OLDStyleMembertships.py with LDAPMemberships.py
 for any list that has the extend.py file in it's lists/LISTNAME/
 directory. In addition, it defines a few attributes which may or may
 not be list-specific which allow LDAPMemberships.py to get to the
 appropriate LDAP database.
 
 If you've read the __init__ method in MailList.py, you've seen
 everything there is to see about extend.py. It gets called there and
 there only when the list is instantiated and sets the lists
 ._memberadaptor attribute to LDAPMemberships.
 

While I waited, I did do some reading/researching on __init__ which lead
me to reading about __getattr__ and getattr.  If I understand correctly,
the LDAPMemberships uses them to get the isMember() and getMembers()
methods among others.

 From then on, whenever a member adaptor method is called for that list,
 the method that is called is the one defined in LDAPMemberships.py.
 
 So, for example, if your Mailman version is 2.1.10 or later so that it
 supports the @LISTNAME entry in *_these_nonmembers, and you put say
 @list2 in accept_these_nonmembers of list1, list1's processing of a
 non-member post will call list2's isMember() method to see if the
 poster is a member of list2, and if list2 already uses
 LDAPMemberships, that's it - it's isMember() method will use its LDAP
 database.

Unfortunately, I am stuck at v2.1.9 for now.

 
 See the matches_p function in Mailman/Handlers/Moderate.py for more
 detail.

I did look at Mailman/Handlers/Moderate.py, specifically the matches_p
function.  What I envisioned doing was to modify the matches_p function
to single out ldap entries similar to the regex entries.  Then for
each ldap entry, call an LDAP2Dict function (to be written) which
returns a dictionary of email addresses, then check if the sender was in
the returned dictionary.

The changes made to LDAPMemberships.py would help since you explained to
me that one of your changes was to make members a dictionary.  The
getMembers() method would essentially return that dictionary.

The key would be the changes to extend.py so everything works.

 
 I hope this helps. If you still have questions, keep asking.
 

It has helped.  I have made some changes to Mailman/Handlers/Moderate.py
and Utils.py (to add the LDAP2Dict function).  Let me know if you would
like to see what I came up with and I can send the diffs and
explaination to you off-list.  You may have a better way to implement
what I am doing.  Well, actually, you probably do have a better way. :)

Thanks,
Chris
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9


[Mailman-Developers] Mailman and Extend.py

2009-04-09 Thread C Nulk
Hello,

I have recently implemented the LDAPMembership adapter.  It provides
some good functionality in creating the list membership.  However, the
concept is there to provide access to one or more lists of email
addresses (list membership is essentially a list of email addresses).  I
would like to use the LDAP functionality in other areas which require or
use a list of email addresses (e.g. accept_these_nonmembers,
hold_these_nonmembers, etc).

I have looked at the F.A.Q. on custom handlers and read the MailList.py
file (under __init__) to see the 'extend.py' file being loaded.

Can someone better explain how loading the 'extend.py' file incorporates
the files code and how the 'def extend' function is called?  If I can
understand how it works, perhaps, a solution to adding multiple LDAP
search queries can be added to the extend.py file and used in other
places in Mailman.

Thanks,
Chris

P.S. When explaining, please realize I am moving from knowing absolutely
nothing about Python to knowing next to nothing. :):)
___
Mailman-Developers mailing list
Mailman-Developers@python.org
http://mail.python.org/mailman/listinfo/mailman-developers
Mailman FAQ: http://wiki.list.org/x/AgA3
Searchable Archives: 
http://www.mail-archive.com/mailman-developers%40python.org/
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org

Security Policy: http://wiki.list.org/x/QIA9