[Mailman-Developers] Mailman and Extend.py
Barry Warsaw
barry at python.org
Sat Apr 18 00:25:09 CEST 2009
On Apr 16, 2009, at 5:05 PM, C Nulk wrote:
> Hello Barry,
>
> Thank you for responding. A quick question, will MM3 also support the
> @list funtionality, both for the 4 *_these_nonmembers options and the
> owner, moderator, and the ban_list options?
Well, not exactly. It should be possible to get the same
functionality, but it will have to be done differently. For example,
the *_these_nonmember attributes are gone.
> Barry Warsaw wrote:
>> On Apr 14, 2009, at 5:28 PM, C Nulk wrote:
>>
>>> 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?
>>
>> Yes and no. There are lots of doctests in the MM3 code, which
>> primarily
>> serve as documentation. Navigating around to find the information
>> you
>> want may take some time as there's no overview. There are
>> currently no
>> doctests describing how to use different backends, but the basic
>> idea is
>> that MM3 is strongly component based, using Zope style interfaces.
>> If
>> you can provide different implementations of the backends for core
>> objects (mostly in the mailman/database package), then the rest of
>> Mailman will just work.
>>
>
> While I have heard about Zope, I am not familiar with it.
You don't really need to know much about Zope to understand
zope.interfaces. Really, just think of these as a formal way to
specify interfaces to components. The package originated in the Zope
world which is why it lives in the 'zope' namespace.
>> Integrating different RDBMS should be pretty trivial. If Storm
>> supports
>> it, then it's just changing a URL in a config file. For an LDAP
>> backend, it will take some additional implementation work to write
>> different implementations of IMailingList and such that don't do SQL
>> queries to gather the necessary information.
>>
>
> I am also not familiar with Storm. I am guessing it is the Storm from
> http://storm.canonical.com.
Yep.
> I did take a quick look at it but I suffer
> from several handicaps - main one being I know extremely little
> Python.
> Just ask Mark Sapiro about that :):).
;)
> 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.
>
>> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 304 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/mailman-developers/attachments/20090417/9d878fff/attachment.pgp>
More information about the Mailman-Developers
mailing list