[Dovecot] Will pay $500 towards a Dovecot feature

Marc Perkel marc at perkel.com
Wed May 23 21:54:20 EEST 2007


10 days ago I proposed this addition (see below) to Dovecot and got a 
lot of positive response. I would like to make it happen. I'm willing to 
contribute $500 to the development of this feature. It doesn't have to 
be implemented perfectly but needs to be workable to the extent that I 
can telnet into the Dovecot server and run it manually from the command 
line. I want to at least be able to run a simple script that I will 
write to add or remove someone from a black list text file.

Timo has limited time but has indicated that he will allow it as a kind 
of undocumented feature (or wiki documented only). This is a sort of 
proof of concept feature and if it ever becomes a standard the standard 
will probably be different. However, we should implement it in a way 
that would be as close to a standard as possible.

So - I'm looking for a programmer to make it happen. I'm also looking 
for others who might also kick in a few bucks as well if necessary. 
Here's the rough spec.

----------

Here's some thoughts I'd like to throw out there. I know it's not 
standard IMAP protocol but someone has to try new ideas first and I want 
to see what people (Timo) think of this.

IMAP establishes a connection between the client and the server. 
Wouldn't it be great if it could be a conduit to let custom Thunderbird 
plugins talk to custom server application over the IMAP interface? For 
example, personalized server settings. Suppose for example I want 
Thunderbird to edit my server side white lists or black lists or any 
other setting? Wouldn't it be nice if IMAP supported these changes? The 
connection is made. It's a secure connection that's been authenticated. 
Lets use it!

Here's my initial thoughts on this. Suppose we extended IMAP to include 
an EXECUTE command as follows:

EXECUTE command parameter, parameter ....

On the server side is a config file that has the commands that execute 
will allow and what programs they run. When the execute command is seen 
by Dovecot then Dovecot runs the program in the list with the parameters 
passed. For example, suppose there is a command to add a user to a 
server side blacklist.

100 execute blacklist add joe at smith.com
100 ok

Dovecot would open a two way connection to the server application 
allowing the client to talk to any application that is configured and 
can send and receive text. The connection persists until the server end 
terminates or the client closes the connection.

With a tool like this one can write generic applications easily that 
would greatly expand what email clients can do interacting with the 
server. Not only can setting be changes but you could interact with 
server side calendars, pick up voice messages from phone systems, run 
any sort of groupware, all over a generic IMAP connection with this 
simple extension.

Example:

100 EXECUTE calendar
100 ok
100 list schedule today 8:00 10:00
100 8:00 make coffee
100 9:00 meeting with boss
100 9:30 Call Joe Blow at 415-555-1212
100 ok
100 quit
100 ok

One thing I'd like to use it for is an outgoing SMTP connection to send 
outgoing email over IMAP. A session might look like this:

999 EXECUTE smtp
999 220 darwin.ctyme.com ESMTP Exim 4.67 Sun, 13 May 2007 06:52:26 -0700
999 helo ctyme.com
999 250 darwin.ctyme.com Hello localhost [127.0.0.1]
999 mail from:marc at perkel.com
999 250 OK
999 rcpt to:dovecot at dovecot.org
999 250 Accepted
......
999 quit
999 OK

Config File:

There would have to be a config file that would be a table of what 
command run what. An example might look like this:

calendar: /usr/bin/dovecot/calendar
blacklist: /etc/exim/scripts/blacklist

Probably might eventually want to add UID/GID and root directory 
restrictions for security. Login information and connection IP should be 
passed in the environment.







More information about the dovecot mailing list