[ Home ] [ About ] [ History ] [ CVS ] [ Download ] [ Documentation ] [ Mailing Lists ] [ Project ] |
OpenBottle - About
Sections: OpenBottle is a per user anti-spam email system based on a sender authenticated whitelist mechanism. A quick example of a "normal" email transaction between the "sender" and the "recipient". The recipient is running OpenBottle.
OpenBottle is more than just the core logic and implementation of a whitelisting MTA. It needs to be a lot more. A user needs to be able to manage the whitelist, and so a user interfaces is required. There are other per-user requirements also: pending queues, verification options and other obscure nasties that a user has the right to be confused by. As such, OpenBottle has opted for PHP in the IMP/HORDE environment, with custom modifications to provide the added functionality. As a necessity to test the entire system for function and usability OpenBottle is expected to be installed on a system with Cyrus IMAP also installed. It is possible to install the entire system on one machine (although this is not what it was specifically designed for.) Three, yes three differently configured sendmails are needed to get it running! This is pseudocode for the core logic within the OpenBottle MTA system. foreach envelope { parse_headers; if (from_internal) { // This is by authentication not domain! unalias_envfrom; btag_envfrom; // We "tag" the Return-path } if (! to_internal) { deliver; next; } detag_envfrom; if (envto_in_btaglist == "expired") { delete; next; } elsif (envto_in_btaglist) { // Valid "tag" results in delivery. deliver; next; } if (verification_reply == "valid") { user_white_list_add; delete; next; } elsif (verification_reply == "invalid") { delete; next; } if (! rcpt_user_exists) { send_bounce; delete; next; } if (user_whitelist) { deliver; next; } if (user_blacklist) { delete; next; } send_verifiaction_request; set_message_pending; }As a separate process, correctly verified messages that have been held over in the "pending queue" are flushed through at intervals.
The parts that make up the running OpenBottle system (as it is implemented today) all need rather specific configuration to get up and running. There is an install script that tries to most of this, although the curious are reminded that this is pretty alpha stuff, and you will want to do any investigation on a "scratch box" that you can blow away after wrecking! Note also that OpenBottle is more a proof-of-concept than anything, as such a lot of short-comings exist in the implementation (such as scalability, and efficiency). This can, of course, all be overcome with sufficient development time, and resources. Anybody interested in funding continued development?
Again it is stressed that the implementation is not the most efficient, it was simply the fastest to develop. There are many techniques to make these mechanisms more efficient they just haven't been implemented. |