No to long ago I proposed an experimental extension to the IMAP protocol
to allow IMAP to execute extername server side code and talk to email
plugins to create custom client/server applications over an existing
authenticated IMAP connection. I am happy to say they we have working
code. It's not quite ready to download yet but we do have some life
happening. I have started to document it on the Dovecot wiki here.
http://wiki.dovecot.org/Plugins/xexec
I'm looking to see if I can generate some interest in this.
XEXEC Plugin
XEXEC is an experimental non-standard extension to the IMAP protocol
that allows you to run and server side application and have it
communicate with email plugins (Thunderbird) allowing custom
client/server applications to communicate over an existing authenticated
IMAP channel. The email client sends the XEXEC command with the name of
the server side module that it wishes to run along with parameters to
pass to the server. Here are some examples:
XEXEC blacklist add [EMAIL PROTECTED]
XEXEC whitelist del [EMAIL PROTECTED]
XEXEC changepassword MyNewPassword
XEXEC forwardmail [EMAIL PROTECTED]
Uses for XEXEC
The XEXEC can be used to run anything but in theory it should be used
for client server applications that relate to email or groupware
applications like calendars and contact lists. Its main purpose is to
allow email clients to set server side settings over the existing
authenticated channel without having the user have to log in separately
using a different application to control user settings. Examples of
possible usage includes:
* Setting server side white lists and black lists
* Changing the password for the email account
* Allowing users to set email forwarding preferences
* Allowing users to set vacation messages
* Allowing users to exclude email from specific countries or
language character sets
* Allowing users to control server side spam filter settings
* Server Side Calendar and Group Contact Applications like MS
Exchange has
* SMTP over IMAP for sending outgoing email without separate SMTP
settings
* Setting rules for server side folder delivery.
* Setting text message alerts to cell phones for important email
notification
Wouldn't it be nice if you could change your email password i your email
client and have it set the new password on the server at the same time?
This would eliminate the need to change the server and client passwords
separately. Or imagine sending outgoing email without having to
configure SMTP. You just set up the incoming email and the outgoing
email works as well. Or wouldn't you like to do some of the fancy tricks
that Microsoft Exchange Servers do without having to use Exchange? It is
our hope that this experimental protocol will lead to significant
expansion of IMAP functionality.
About this Plugin
This plugin is the idea of Marc Perkel of Junk Email Filter
<http://www.junkemailfilter.com> who hired Nicolas Boullis (
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>) to write the
code. I (Marc Perkel [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>) am trying
to get the concept out there in some sort of working form with the idea
that it will catch on. Hopefully other people who find this concept
useful will build on the idea, do it right, and perhaps some variation
of this concept will eventually become a standard.
Status
This plugin is a nonstandard experimental extension to the IMAP
protocol. It is offered as a proof of concept and it is my hope that it
will catch on in some form and make it into the IMAP officially. At this
point there is nothing on the client side to talk to anything on the
server side. So this code is presently useless until more development is
done.
Configuration
To activate and configure this plugin you have to first add it to your
dovecot.conf file. You can do so as follows:
protocol imap {
mail_plugins = xexec
}
Then to add applications you specify the module name and map it to a
server side executable program.
xexec = module:executable
Here are some examples:
plugin {
xexec = blacklist:/usr/local/dovecot/blacklist.sh %u
xexec2 = whitelist:/usr/local/dovecot/whitelist.sh %u
xexec3 = average:/usr/local/dovecot/average
xexec4 = smtp:/usr/local/dovecot/smtp
}
The idea is that the module name will be a reference to an executable
and will hide what is happening on the server. When the command XEXEC
module <parameters> is passed then the server will run the executable
and pass the parameters to the executable.
Interacting with XEXEC
A typical session with XEXEC might look like this.
* OK Dovecot ready.
001 login [EMAIL PROTECTED] password
001 OK Logged in.
002 xexec blacklist add [EMAIL PROTECTED]
* OK Adding [EMAIL PROTECTED] to server side blacklist for [EMAIL PROTECTED]
002 OK command exited successfully
003 xexec changepassword MyNewPassword
* OK New Password set Sucessfully for [EMAIL PROTECTED]
003 OK command exited successfully
Many of the details of how everything will work under different
conditions have yet to be developed.
Download and Installation
Coming Soon!
License
This software and the concepts behind is are free. No patent or
copyrights are asserted on the concept. This is a gift to the world
community. Code is released under GPL2.
Help Needed
We could use some help with this project. We haven't even started
writing any client side code. We are looking for sharp people with good
ideas to help develop this concept in a way that will eventually lead to
becoming part of the standard. We envision that certian commands to do
ordinary universal stuff (password, smpt, whit list, black list,
forwarding) will become standardized so that features to set server side
settings can become part of standard email applications.