KMail Progress Review

KMail Homepage
by Don Sanders, 2000-07-28

The new KMail has now been released, but this file is still mostly up to date. I suggest to read it if you're interested in the new features (Daniel Naber, 2000-10-31)

Introduction

The last major stable release of KMail was in September 1999, since that time KMail has undergone intensive continuous development as part of the unstable HEAD branch of KDE CVS. This prolonged period of development is drawing to a conclusion as a new stable release of KMail (1.2) is imminent, this stable release will be part of the upcoming KDE2 release. With a new stable release approaching it's time to review how the developments made to KMail in the last year will benefit KMail users. All parts of the KMail application have been worked on, I'll comment on many of the KMail components (main window and composer GUIs, settings and filter dialogs, messaging kernel, and encryption system) as well as some of the new components (search dialog and address book bridge).

Main window

The main window of KMail is used for reading and managing mail, it consists of widgets for listing message headers, listing mail folders, showing a message preview, along with the standard toolbar, menubar and statusbar. Figure 1 shows a screen shot of the revised KMail main window. This main window is similar to the old KMail, differences include rearranged menus to better conform to the KDE style guidelines, and all new icons for the toolbar and folder list. Figure 1 also shows an example of the greatly improved support for rendering HTML mail in KMail, this is due to the use of the new KDE HTML widget, the same component as used in Konqueror. Note, because HTML mail (even with java script and java disabled) is a security risk it is turned off by default, however HTML mail can be toggled on as a general preference, or perhaps better HTML mail can be toggled on for arbitrary folders. In fact this is the case for the KMail in Figure 1, where HTML mail is turned on only for HTML periodicals that are filtered into a single HTML enabled folder.


Figure 1. HTML mail


Figure 2. Color quoting


Figure 3. Ascii art

Figure 2 shows a more complicated but typical view of the KMail main window. In the folder list the 'kde' folder has been expanded showing support for nested folders. A 'threaded' hierarchy of messages is shown in the list of messages headers. Notice the message headers are sorted by sender, in KMail message threading and sorting are independent. Like HTML mail support threading can be individually turned on or off for selected folders. You may also have noticed the colorful message preview where lines are color coded depending on the depth of the discussion, of course the colors used are customizable. Finally notice that the status bar indicates mail is being downloaded. Retrieving mail from pop accounts is now non-blocking for the users convenience, this means the user can read their mail as it is being downloaded from the server.

Our eagerness to support the latest fads has not been at the expense of the old favorites. When using a fixed width font KMail now renders ascii art correctly as shown in Figure 3. URLs (eg. mailto and http) are still clickable and now with KDE's improved support for mimetypes it is possible to configure KMail (and KDE in general) to open HTML pages with Netscape (but I don't know how you couldn't help falling in love with Konqueror).

Other enhancements to the main window include support for discontiguous selections in the list of message headers (as shown in Figure 2), improved support for drag and drop of messages from the list of message headers into the list of folders. Also keyboard support has been improved, now the current folder can be changed by using the keyboard (try holding down the control key and pressing up/down while the folder list has focus). Furthermore the size, placement and choice of icons in the toolbar can be configured, and with some resource file editing the menu items can be rearranged as well.

Composer window

The composer window as shown in Figure 4 retains the familiar look and feel as found in the old KMail, however several significant enhancements have been made. One of the coolest of these is 'smart quoting'. Figure 4 shows a reply to the message shown in Figure 2. I have set the word wrap column in the composer to 60 characters, but the message I am replying to when indented would have gone beyond this 60 character limit. Normally this would result in ugly broken text, or text that goes over my preferred word wrap column, but with 'smart quoting' turned on the message being replied to is reformatted to comply with my preferences. Obviously reformatting mail is a tricky affair where a small error in the algorithm can rapidly become a major annoyance, but smart quoting actually works and is very enjoyable to use!


Figure 4. Smart quoting


Figure 5. Paragraph based word wrap

Figure 4 also shows two new fields "Identity" and "Mail Transport" that have been added to the composer. KMail supports a single user with multiple personalities, a personality defines settings for "the From" and "Reply to" addresses and a message signature. Changing the identity field updates these settings, this is useful for people who say work from home and answer both work mail and personal mail from home. "Mail transport" is for advanced users and allows the SMTP server (or mail sending script) to be specified for the mail currently being composed.

The editing widget used in the composer has been greatly improved, multiple undo/redo is now possible, and support for standard editing keyboard accelerators has been improved. Perhaps most importantly the editing widget now supports paragraph based word wrap. Figures 4 and 5 demonstrate the improved word wrap with the entire first paragraph being reformatted due to characters being deleted from the first line of the paragraph. This improved word wrapping has several beneficial side effects, including preventing the signature appended to the end of a message from being mangled as the message is edited.

Finally like the main window the composer window has a configurable toolbar, and an updated menu bar that better complies with the KDE style guidelines.

Filter dialog

The filter dialog as shown in Figure 6 is similar to the one found in the old KMail. Apart from a multitude of bug fixes differences include support for a handy "To or Cc" matching criteria, and "set identity" and "set transport" filter rules. These filter rules allow automatic setting of the personality and mail transport (eg SMTP server) to be used when replying to a message. The filter dialog is now modeless which means you can continue to use KMail as normal while the filter dialog is open.


Figure 6. Improved filter dialog


Figure 7. New search dialog

Search dialog

Appearing for the first time in KMail 1.2 is a search dialog. Searches can be performed over all messages in a single folder or all folders, and a phrase can be searched for in particular message header or just anywhere in the complete message. Searches are non-blocking (you can continue to use the application while a search is in progress) and it is possible to make the main window goto a particular message by double clicking on a message in the search dialog. The search dialog is shown in Figure 7.

Configuration dialog

KMail allows settings to be defined via a configuration dialog. This dialog has been rewritten for KMail 1.2 and given a fresh attractive look. The configuration dialog allows a large number of settings to be defined in several sections which are shown in the mosaic Figure 8. The identity section has been revamped to included support for multiple personalities, the network section includes support for a new type of account "advanced pop". This account is now the standard type of pop account (the old type of pop account is now obsolete and is planned to be completely removed in the not too distance future). The advanced pop account works with a normal pop server but provides new functionality as seen in the advanced pop configuration dialog in Figure 9. SSL connections for secure mail download are supported and a HOWTO for this is provided on the KMail website. If retrieve all mail from server (and delete mail from server) are unchecked only new mail is retrieved from the server, this is done efficiently using UIDLs. The interval for periodic mail checking is now configurable (this is also the case with local accounts).


Figure 8. Configuration dialog mosaic


Figure 9. Pop account configuration

Address book bridge

KMail now supports use of the standard KDE addressbook database library, libkab, and now supports external address book GUIs, specifically KAB located in the kdeutils package and ABBrowser located in the kdepim package. Both the KAB and ABBrowser address book GUIs use libkab for storing address book entries. When using the traditional KMail addressbook GUI the configuration dialog can be used to select whether the traditional KMail address book file is used to store addresses or whether the shared KDE address book database libkab is used.

When using libkab operations such as Ctrl-T address completion in the composer and adding a mailto URL from the message preview window into the addressbook access the shared KDE addressbook.

ABBrowser

Abbrowser is a new KDE address book, it provides two major windows, the first is a window for browsing entries in the address book, this is shown in Figure 10. The second is a dialog for editing an address book entry. When KMail is setup to use ABBrowser clicking on the address book icon in either the main window or the composer toolbar will launch ABBrowser. The user can select entries in the address book and click the mail icon to open a new mail addressed to the selected recipients, alternatively entries can be selected and dragged and dropped into an existing KMail composer.


Figure 10. Entry browser


Figure 11. Entry editor

The address book entry editor is shown in Figure 11. A large number of fields are presented and new custom fields can be added using the "All fields" tab. Because ABBrowser and KAB use the same address book library existing entries made with KAB can be seen in ABBrowser and when an entry is inserted or modified in ABBrowser KAB will update to reflect the changes.

The address book entry browser shown in Figure 10 supports some advanced features. Multiple undo/redo is supported so insertions, modifications and deletions of entries can be undone. Which fields are shown is customizable and even custom fields can be shown. As well as supporting drag and drop from ABBrowser into a kmail composer drag and drop of mailto URLs from a kmail main window into ABBrowser are supported. The mailto URL is parsed and if a matching (by email address) entry is found in the database this is opened in the address book entry editor, otherwise a new entry is created.

Encryption

KMail contains strong support for encryption and decryption. Gnu Privacy Guard 1.0 and PGP 2, 5 and 6 are now supported. Messages can be signed or encrypted in the composer (using the users private key). When an encrypted mail sent to the user is viewed in the main window the user will be prompted for their pass phrase (which can be stored in memory for the duration of the session) and then the mail will be decrypted and displayed. If a signed message is viewed by the user and the user has the public key of the sender of the signed message then KMail will verify the digital signature is true.

Messaging kernel and general notes

Several operations in KMail were memory inefficient. Specifically reading many mails consecutively in the same folder, copying, moving, applying filters to or changing the status of a group of messages, and emptying and compacting folders were memory inefficient. All these operations now consume much less memory when a large number of messages are being operated on.

KMail could lose messages when disk space was exhausted, this situation is now detected and handled appropriately. (Note also the critical bug fix dealing with index files becoming corrupted included in KMail 1.0.29.1 has also been applied to KMail 1.2).

Conclusion

I hope you have found this review informative and can appreciate the amount of work that has gone into ensuring the new KMail is the best yet. Only new features have been discussed, for further documentation on KMail functionality please read the KMail manual. All the features mentioned in this review have already been implemented in the developmental version of KMail in CVS. This developmental version of KMail is actually quite stable, and in fact at times exceeds the stability of the last stable release of KMail. However since the libraries underlying KMail are in constant development new and even serious bugs can be introduced without warning. Nevertheless many people are using and enjoying the new KMail today, I invite you to share the experience by checking out a nearby KDE CVS repository.