Perhaps in a year or two we could look into writing an ACAP server. It's a very heavy protocol on the server side, but the client side of it is quite easy. Only Cyrus supports ACAP right now, and only the (recently deceased) Mulberry client knew how to connect to an ACAP server. More server support would invite more client support. - Aaron Stone
One of the things that confuse users a lot is the settings that the user must type in the mail client. The other one is when the user starts using a different machine or a new mail client.
A lot of the information that needs to be known by the user is usually static information that can be pre-filled on the mail server side.
And, this has been something of an chicken-and-egg problem: Since no servers support such functionality, no clients have this feature; and, not unexpectedly, since no clients support such functionality, no servers have this feature…
This vicious circle needs to be broken somewhere!
DBMail is a good place to start since it already uses RDBMSes to begin with.
It can be argued that this information should belong to an LDAP server. Yes, it could, and I wouldn't mind if it did. But, I personally find it a lot harder to write a GUI for an LDAP server than for an SQL-based RDBMS.
Below is pseudo-schema for DBMail to store the information needed to setup a user's mail client. These fields are taken from Mozilla Thunderbird for the reason that it is expected such information could be more easily used by Thunderbird with a suitable XPI extension. I have however also added fields necessary for MS Outlook Express.
While thought to be sufficiently complete, the fields listed below are by no means exhaustive –in the sense that other mail clients may need more/other information–; it is simply believed that this will form a good starting point.
This is a pseudo-schema for a table that holds default client information for the user, any fields that are known to DBMail server gets pre-filled when this account is created.
BTW, it is assumed that system-wide defaults for DBMail are stored in another table.
For each real user only one entry is made into the table. These are the fields:
creation_datetime: {DateTime} –Unmodifiable by user
default_allow_user_erase: {Yes, No} –Invisible to and Unmodifiable by user
default_auto_add_to_adressbook: {Yes, No}
default_auto_expand_message_tree: {Yes, No}
default_auto_mail_adresses: {Yes, No}
default_char_encoding:
default_drafts_foldername:
default_encrypt_all_outgoing_messages: {Yes, No}
default_imap_other_sharedfoldername: {e.g. “user/”} –Only for IMAP server
default_imap_override_namespaces: {Yes, No} –Only for IMAP server
default_imap_personal_namespace: {e.g. “INBOX/”} –Only for IMAP server
default_imap_public_sharedfoldername: {e.g. ””} –Only for IMAP server
default_ldapserver_address: {IPNumber or Address}
default_ldapserver_loginname:
default_ldapserver_password:
default_ldapserver_port:
default_ldapserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
default_mailserver_address: {IPNumber or Address}
default_mailserver_kind: {IMAP, PO3, etc.}
default_mailserver_loginname:
default_mailserver_password:
default_mailserver_port:
default_mailserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
default_mime_allow_8bit_char_headers: {Yes, No}
default_mime_messages_format: {None, Quted Printable, Base64}
default_organization_name:
default_replyto_address:
default_request_return_receipt: {Yes, No}
default_return_receipt_response_kind: {Never, If not in To or CC ask me, If not in To or CC never, If not in To or CC always, If not from my domain ask me, If not from my domain never, If not from my domain always, Other cases ask me, Other cases never, Other cases always}
default_sent_foldername:
default_sign_all_outgoing_messages: {Yes, No}
default_signature_blob:
default_smtpserver_address: {IPNumber or Address}
default_smtpserver_password:
default_smtpserver_port:
default_smtpserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
default_smtpserver_username:
default_templates_foldername:
default_use_signature: {Yes, No}
default_use_vcard: {Yes, No}
default_vcard_blob:
default_wrap_textwidth:
user_enabled: {Yes, No} –Invisible to and Unmodifiable by user
Shows whether or not the user account is enabled. If not enabled then the user will not be able to login.
expiry_datetime: {Yes, No} –Unmodifiable by user
There may be cases when you wish to grant a user a fixed window of usage, such as when the user is a student, or someone as a guest for a fixed duration.
last_login_datetime: {DateTime} –Unmodifiable by user
last_logout_datetime: {DateTime} –Unmodifiable by user
Useful to check if the user is still online (i.e. if last login is greater than last logout, then the user must be online).
last_login_from: {IP Number}–Unmodifiable by user
login_password:
Password for logging into this settings subsystem
login_username:
User name for logging into this settings subsystem
user_can_wipe_messages: {Yes, No} –Invisible to and Unmodifiable by user
Whether user's purge action will really delete messages or just make them invisible to user.
user_id_nr: –Invisible to and Unmodifiable by user
Primary key.
This is a pseudo-schema for a table that contains account (identity) information. For each mail account a new entry is made into this table. The client gets all the information it needs from this table. These are the fields:
account_enabled: {Yes, No}
account_id_nr: –Invisible to and Unmodifiable by user
Primary key (together with user_id_nr)
account_title: {Description of this account; display name}
bcc_address_list:
char_encoding:
check_messages_at_startup: {Yes, No}
check_new_message_every: –in terms of minutes
cleanup_inbox_on_exit: {Yes, No}
confirm_on_message_save: {Yes, No}
creation_datetime: {DateTime} –Unmodifiable by user
account_enabled: {Yes, No} –Unmodifiable by user
allow_user_erase: {Yes, No} –Invisible to and Unmodifiable by user
auto_add_to_adressbook: {Yes, No}
auto_expand_message_tree: {Yes, No}
auto_mail_adresses: {Yes, No}
char_encoding:
digitial_signature_blob:
drafts_foldername:
email_address:
email_displayname:
empty_trash_on_exit: {Yes, No}
encrypt_all_outgoing_messages: {Yes, No}
expiry_datetime: {Yes, No} –Unmodifiable by user
imap_other_sharedfolder: {e.g. “user/”} Only for IMAP server
imap_other_sharedfoldername: {e.g. “user/”} –Only for IMAP server
imap_override_namespaces: {Yes, No} –Only for IMAP server
imap_override_namespaces: {Yes, No} Only for IMAP server
imap_personal_namespace: {e.g. “INBOX/”} –Only for IMAP server
imap_personal_namespace: {e.g. “INBOX/”} Only for IMAP server
imap_public_sharedfolder: {e.g. ””} Only for IMAP server
imap_public_sharedfoldername: {e.g. ””} –Only for IMAP server
last_login_datetime: {DateTime} –Unmodifiable by user
last_logout_datetime: {DateTime} –Unmodifiable by user
ldapserver_address: {IPNumber or Address}
ldapserver_loginname:
ldapserver_password:
ldapserver_port:
ldapserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
mail_compose_format: {HTML. plaintex}
mailserver_address: {IPNumber or Address}
mailserver_kind: {IMAP, PO3, etc.}
mailserver_loginname:
mailserver_password:
mailserver_port:
mailserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
delete_message_action_kind: {Move to Trash Folder, Mark Deleted, Remove Immediately}
mime_allow_8bit_char_headers: {Yes, No}
mime_messages_format: {None, Quted Printable, Base64}
organization_name:
place_copy_in_folder: {Mail folder name}
place_return_receipt: {Inbox, Sent}
quota_size: –Unmodifiable by user
quote_message_when_replying: {Yes, No}
reply_position_kind: {None, Above Quote, Below Quote, Select Quote}
replyto_address:
request_return_receipt: {Yes, No}
return_receipt_response_kind: {Never, If not in To or CC ask me, If not in To or CC never, If not in To or CC always, If not from my domain ask me, If not from my domain never, If not from my domain always, Other cases ask me, Other cases never, Other cases always}
sent_foldername:
sign_all_outgoing_messages: {Yes, No}
signature_blob:
signature_position_kind: {None, Above Quote, Below Quote, Select Quote}
smtpserver_address:
smtpserver_address: {IPNumber or Address}
smtpserver_password:
smtpserver_port:
smtpserver_secure_connection_kind: {Unsecured, TLS if available, TLS, SSL}
smtpserver_username:
templates_foldername:
use_signature: {Yes, No}
use_vcard: {Yes, No}
user_id_nr: –Invisible to and Unmodifiable by user
Primary key (together with account_id_nr)
vcard_blob:
wrap_textwidth: