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-----