$Cambridge: hermes/src/prayer/docs/FEATURES,v 1.2 2008/09/16 09:59:56 dpc22 Exp $

Performance/Scalability
=======================

Persistent Login Sessions:
  - (Multiple) persistent connections to IMAP and support servers.
  - Directory cache: single round trip to IMAP server for directory listing.
  - Works well with UW IMAP server (even using Unix format mail folders).

Written entirely in C as HTTP <--> IMAP Gateway. No scripting languages.
  - No discernible load on a Pentium III class system with 3,000 logins/day
  - Aggresive HTTP/1.0 and 1.1 connection caching to reduce SSL overhead.
  - Minimal use of fixed length buffers in C source code.

Single Webmail gateway can run on a number of small independant systems:
  Simple horizontal scalability if needed.

Simplicity
==========

Few external dependancies (Libraries: c-client, OpenSSL. Optional: cdb).
  - No external database: user preferences stored on IMAP server.
  - Single configuration file.

Doesn't use Javascript or Frames.
  - Runs quite happily with Netscape, Mozilla, IE, Lynx, Opera.
  - Text only mode for Lynx and w3m
  - Use of nested tables restricted to avoid confusing Lynx.

Doesn't need cookies:
  - Single optional cookie used to hide session-ID from browser URL display.

User Interface
==============

Message display:
  Hierachical listing of MIME BODYSTRUCTURE for display/download.
  User preferences to display TEXT/HTML inline with dangerous tags removed.
  Special handing for postponed message folder
  http:// and https:// in body converted into links.
  Message text wrapped to 80 columns (maintaining correct message quotation)
    - Colour codes for quoted message text

Mailbox list:
  Aggregate:  save, forward, (un)delete, (un)read. Zoom mode.
  Sort and Reverse Sort folder listing (on one of 7 criteria).
  Change to/Save marked messages to favourite Folder.

  Supports Persistent and non-persistent message marking (user preference):
    Non-persistent: normal Webmail behavior using HTML checkboxes:
       - Fewer page refreshes, no way to maintain state if links used
    Persistant:
       - Marks are HTML links, mark state recorded while stream open.

Seach (Message Headers/Text, Delivery Date, Status, Size).
  - Compound search on marked messages. 

Full Hierachical folder listing:
  - single level display with filters
  - Favourite/subscribed folders for shortcuts on list screen.
  - Transfer mailfolders to and from IMAP server using HTTP upload/download.

Compose:
  Local address lookup and Gecos expansion.
  Recursive Addressbook Lookup (with loop detection)
  Spell Check with Personal dictionary.
  Adaptive (and hopefully quite intellegent) line wrap algorithm
    - breaks message into "paragraph" blocks and wraps blocks independently.
  Undo. Roles. Rich headers.
  Alt-addresses list and local domain list used when constructing Cc list.
  Arbitary number of postponed messages using postponed messages folder

Personal Addressbook:
  Search. Import/Export local and remote pine .addressbook format files.
  Addressbook split into pages: can move to any page

Account managment using auxillary "accountd" server:
  - Change password and Gecos fields. Check disk quota.
  - Mail redirection, filtering and vacation messages using Exim filter files.
