IM2000 over XMPP progress update (warning: long)

Wes Morgan <[email protected]>
Newsgroups gmane.mail.im2000
Organization Libretech.org
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

First off, I have decided to refer to my implementation of IM2000 over XMPP as 
"NGMP," which stands for Next Generation Mail Protocol or Not your Grandma's 
Mail Protocol, whichever you prefer. :) That way the implementation (NGMP) 
won't get confused with the standards (IM2000/XMPP).

Second, I have a working prototype of the IM2000 over XMPP (NGMP) system. When 
you send a message, the sending script (ngmp-mail.pl) logs on to the Jabber 
server and then sends an IQ packet of namespace ngmp:iq:message (may change 
this to a URL at some point, need to research what the difference is) to the 
ngmp component connected to the XMPP server. The component then caches the 
message and sends a new message notification to the recipient. This 
notification consists of a message packet that informs the user of the new 
message, who it's from, what the subject is, and gives them a URL they can go 
to to retrieve it. The message packet has a <x> payload that contains all 
that information in a machine-parsable format (namespace ngmp:iq:messagen10n, 
n10n == notification) so future mail clients can parse and handle the 
notification. The URL points to a CGI script (getMessage) that grabs the 
message based on its ID (SHA1 hash of the body text in hex) and sends it back 
in XML form (w/ XSLT stylesheet so people who just read the message text in a 
regular Jabber client see a nice, HTML-formatted message in their browser (if 
it supports client-side XSLT)).

The next step is to make the NGMP component revert to SMTP if it gets a bounce
when sending to the recipient as a JID. This requires that JIDs match email
addresses, but that's nice to have anyway (and besides, if people are sending
to the recipient's known email address, the SMTP fallback should always work,
regardless). Here is where it would be nice to have the equivalent of MX 
records for XMPP servers so you don't have to run the XMPP server on the IP 
that domain.tld resolves to, but that's a ways off I suppose. Anyway, I have 
downloaded the JSMTP gateway and will be figuring out how to get it to work 
in the next day or two. Once it is up and running, falling back to SMTP will 
be as simple as forwarding the message to this component. Should we just send 
the notification to the recipient via SMTP (along with the retrieval link?), 
or should we send the whole message?

After this I plan to modify KMail to make it directly support NGMP. It would
log on to a user's Jabber account, receive new message notifications in real
time, and could automate the retrieval of certain messages (from trusted
senders, for example). Then it could place saved notifications and retrieved
messages in a user's local maildir or a server-side IMAP account (since the
sender would most likely prefer to delete the message once it's retrieved). 
Obviously this will take some time, but the end result will be very nice (I 
believe).

Overall I'm really excited about this because one can receive NGMP messages 
via any Jabber client, or w/ SMTP fallback, any old mail client. Adding NGMP 
support to mail clients just adds nicer features, but it's not absolutely 
necessary. In addition, mail clients that do support NGMP can use it 
exclusively when the user has access to an NGMP server/account because NGMP 
handles the fallback to SMTP automatically.

I will soon have all this set up on a public server (ngmp.libretech.org) along 
with instructions for using the system and/or setting it up on your own 
server. I'll let everyone know when that's ready. Thanks for all the feedback 
so far! :)

Wes Morgan
- -- 
This American dream may be poisonous
Violence is contagious
Crowded or empty
I walk these city streets alone
Whoever brought me here
Is gonna have to take me home

"What I'll Remember Most" - Over the Rhine
- ----------------------------------
Libretech.org - Technology Is Free (http://www.libretech.org)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/X6m5I89ooLagmnQRAmrdAKDFSCwaaNWN4XtEwFh0mgax+LX7BQCgsc2X
3gC89S92gDefw2ESScZvu/Y=
=DVH+
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.