james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Harmeet Bedi" <hb...@yahoo.com>
Subject NNTP Implementation General Comments.
Date Tue, 10 Apr 2001 16:14:41 GMT
Checked in NNTP Server, configuration files, etc.
To turn it on set Attribute NNTP="true" in file assembly.xml.
'NNTP' is attribute of element 'services'

NNTP is defined in RFC 977. The Extensions are in RFC 2980.
The James NNTP implementation is based on draft 13 of NNTP. This draft was
published on 2nd April, 2001. Draft 13, clarifies RFC 977 and is backwardly
compatible with it. The NNTP-James implementation contains additional
extensions to be compatible with NNTP clients.

NNTP uses a file system based repository.
When a message is sent to the NNTP Server, it gets streamed into a temporary
After the message is Streamed, it is moved to Spool Directory,
Multiple Spool threads may be monitoring the Spool Directory. A new message
is detected, and moved to the newsgroups that it belongs to. If the message
is POST(ed) by a client it may not have a message ID. In that case a message
ID is generated and added.
The articleID directory contains the association between message id and a
message stored in a NewsGroup. This association is created by the spooler.
ArticleID lookup is needed to satisfy some of the NNTP protocol commands.

The various newsgroups exist as sub-directories in under the repository
root. A client looks up the newsgroups and gets articles from it. The number
of article matches the file name of the article. The Spooler may add
articles in this directory on behalf of a NNTP Client or another
synchronizing NNTP Server.

NNTP uses the James User Repository for authentication. NNTP does not use
the general repository abstraction present in the James and Avalon. The
ideas are same but there is room for reusing more ideas.

Fedora Karpelevitch is the original author and code contributor. His work
and insight has facilitated the protocol implementation. Some of his
abstractions are currently not used, but they could be refactored in as NNTP
Server becomes more widely reviewed and used. Attempt has been made to get
the first cut out, and then improve.
Harmeet Bedi has written code, added repository, merged with James, complied
with RFC, tested and remained awake for a few nights. :-)

This is first pass and experimental.
The attempt has been made to
- be standard compliant
- the code patterns need to be similar to other protocol servers SMTP, POP3,
- the wildpattern matching is done using Jakarta-oro. The GlobPatterMatcher
does about 90% or so of the things NNTP RFC wants.
- Have repository that provide persistent store
- First pass at testing and integration with NNTP Client.
The next few passes could do this.
- Features that would make the NNTP Server comply with de-facto INN Server.
Fedor pointed out that most clients would be INN Compatible and not with
2001 released draft 13.
- The repository for other James servers is more flexible. The patterns and
flexibility for other repositories should be mapped for NNTP. Move the
package structure and other things in repository closer to what other
protocol servers do. Have RDB, LDAP(?) repositories
- Borrow more ideas from Jannet. Did not have sufficient time to mine as
well as one can. Newslet interface in Jannet has not showed up. Sorry about
that, but
hopefully soon. The James mailet architecture is not used. Would have been
good to do that.
- Add ability to synchronize with other NNTP Servers.
- Implement Article expiry mechanism.
Basically a ton of things,

- Tested with Java code. Added test class to org.apache.james.testing
- Tested with outlook express: with and without authentication.

Hope this email and checkins clarfies some things. Will add more details as
per need and cycles.


Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

To unsubscribe, e-mail: james-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: james-dev-help@jakarta.apache.org

View raw message