[Mailman-Developers] NNTP Archive - final report

Alexander Sulfrian alexander at sulfrian.net
Tue Aug 21 10:19:07 CEST 2012


Hi,

reaching the end of google summer of code, here is my final report. I
have pushed all code to my bzr repository and have a running demo of
the NNTP archive under mailman3.animux.de port 119 and 563. (The
postorius web interface under mailman3.animux.de is not working
completly correctly since I merged the mailman trunk back into my
code)


Features that are working:

 * NNTP Daemon could be started via the runner interface. It could be
   listen on two ports. The first one is a plain tcp connection
   supporting STARTTLS and the second allows nntps
   connections. (Please notice, that thunderbird currently does only
   support nntps connections and does not ask if it should accept the
   certificate. To test the nntps connections you first have to add
   the CACert root certificate to the list of trusted certificate
   authorities.)

 * The nntp daemon supports all mandatory commands and most of the
   commands of the READER capability. Additional to that it supports
   the AUTHINFO extension. The nntp daemon authenticates the user
   against the user information stored by mailman core. Because it has
   only access to the crypt passwords, it could only support
   authentiaction mechanism that uses plain text passwords. Therefor
   it supports and requires the STARTTLS extension (or the plain SSL
   connection) for authentication.

 * The nntp daemon provides access to all public list archives without
   authentication. If a user is logged in, the user has also access to
   its subscribed mailing lists, that has private archives. Currently
   the nntp archive uses a slightly patched version of kittystore (to
   allow access to mails based on its id in the mailing list). There
   is also a module that fills the kittystore if sending a mail via
   the lists. I currently imported some messages from an mbox into
   bla at mailman3.animux.de and feed some real messages into
   test at mailman3.animux.de.


Although gsoc is over now, I would like to continue to work for
mailman3. Next steps for the NNTP archive and archives in general
could be:

 * Currently the nntp archive uses a slightly patches version of
   kittystore (allowing to access mails based on their database
   id). The IArchiver implementation uses the SqlAlchemy interface to
   feed data into the store. It would be much nicer not require a
   second ORM mapper. On solution could be to convert the SqlAlchemy
   interface to Storm models. But I think, before that the whole
   message store infrastructure should be reconsidered. Currently it
   works but their might be the same problems like with the user
   information mentioned earlier on this mailing list. kittystore
   currently stores a superset of all properties all archives
   need. Maybe here (in contrast to the user information) it would be
   a good idea to split it into private information of the archives
   and simply commonly stored mails. (I wrote some thoughts about that
   on my blog[1].)

 * Because of the current architecture of the kittystore the NNTP
   archive could not search for message ids over all known
   mailing lists. This is a feature of the commands ARTICLE, BODY,
   HEAD and STAT. I do not know if there are many news clients out
   there supporting it, but it should be supported in any way.

 * The NNTP protocols requires multiline responses to several
   commands. Currently the responses are build as a list and then send
   as whole to the client. For some commands it would be better to use
   a generator and to steam the line as they are generated. Even now
   (with only a few test lists) I noticed that the querying of the
   database about the count of the articles in the different lists
   slow down the LIST command. Streaming the lines it would be much
   convenient for the user.

 * (optional) Currently it is not possible to POST articles to a
   mailing list via the NNTP archive. It was stated that most of the
   news clients could send a mail as answer. Currently that is okay,
   but I think that it would be not so hard to implement it later as
   addition.

For reference: the current code is available at launchpad[2]. I am
open for improvements and as I said, although gsoc is over now, I
would like to continue to work with mailman. (even though I do not
like bazaar as much as git)


Thanks,
Alex


1: http://blog.animux.de/message-stores-and-mailman-archivers.html
2: https://code.launchpad.net/~alexander-sd4c/mailman/mailman
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/mailman-developers/attachments/20120821/d0ddf621/attachment.pgp>


More information about the Mailman-Developers mailing list