# Mail Client Schema # # This is a schema extension designed to allow storage of configuration information # related to access of remote email by an email client, whether the client # is a desktop application, a webmail application, or any client which accesses # internet services which are based at a remote location. # # Depends upon # Definition of an X.500 Attribute Type and an Object Class to Hold # Uniform Resource Identifiers (URIs) [RFC2079] # (core.schema) # # A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256] # (core.schema) # # The COSINE and Internet X.500 Schema [RFC1274] (cosine.schema) # # [RFC2798] (inetorgperson.schema) # # An LDAP Schema for Internet Mail [draft-srivastava-ldap-mail-00] (inetmailuser.schema) # http://www.globecom.net/ietf/draft/draft-srivastava-ldap-mail-00.html # see this document for a nice definition of the categories of mail # applications (client, mta, msma, etc.) and their needs. # # 1. Background and Motivation # I had planned a web/java-based client to be located at clos.ure.org. # It was to initially be a web-based interface to people's existing email, # and I wanted to store people's mail accounts, and preferences in # LDAP, as well as their general logon information for all my sites. # The idea is that many people have multiple accounts on multiple # computers, which they may access through a proxy or set of proxies. # For example, the use of webmail has become very common because it # allows people to access email from wherever they are with a minimum # of hassle. Webmail is even more useful when it can access the mail # in your existing POP or IMAP accounts. There are numberous LDAP # schemas for storing local account information (including mail account # information) but those are not useful in storing information about # account delegates. # # # # 2. User Preferences # 2.1 User description: inetOrgPerson (structural) # All people will have inetOrgPerson as their main structural class, this # includes people who don't use any subtheory services (for example, entries # in a global address book) as well as web site visitors and web mail # users. Note that inetOrgPerson provides the optional userPassword attribute # which allows us to authenticate, as well as the mail and rfc822mailbox, which # describe a user email address. This schema is defined in # inetorgperson.schema # # 2.2 Local Internet services authorizations: inetSubscriber (auxiliary) # In addition, any person who uses any subtheory services (has an account on # the web site, or a web mail account) should have an inetSubscriber # objectclass entry. Then the entry has any number of inetAuthorizedServices # specifying what the user is allowed to do. Note that inetSubscriber also # has a mandatory uid attribute, which allows us to do authentication. # I define additional tokens clos.ure.org, webmail, upload for # inetAuthorizedServices. This schema is defined in inetmail.schema. # # 2.3 Local mail server preferences: inetMailUser (auxiliary) # inetMailUser is needed when I start offering local IMAP mail accounts. # This allows storage of local mail account preferences. It also has a # bunch of preferences that would be useful for a mta like postfix. Not # designed to manage location and descriptions of remote accounts. # This class is defined in inetmail.schema # # 2.4 Local mail client preferences: mailClientUser (auxiliary) # For mail viewing preferences I define another auxiliary class called # webMailUser. Some useful attributes for a mail client to know are: desired # REPLY-TO address for mail sent from account, auto-BCC, auto copy to "send" box, # quote on reply?, quote on forward?, signature. This objectclass is # defined below. My iana oid is 1.3.6.1.4.8553 # attributetype ( 1.3.6.1.4.8553.2.1.2 NAME 'signature' SUP description ) # All outgoing messages will automatically be BCCed to this email address. attributetype ( 1.3.6.1.4.8553.2.1.3 NAME 'autoBCCTo' DESC 'blind carbon copy all outgoing messages to this address' SUP mail ) attributetype ( 1.3.6.1.4.8553.2.1.4 NAME 'forwardAsAttachment' DESC 'whether to forward mail as an attatchment' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.8553.2.1.5 NAME 'wrapIncomingAt' DESC 'wrap incoming message lines at this column' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) # All outgoing messages will automatically be copied to this folder. # attributetype ( 1.3.6.1.4.8553.2.1.6 # NAME 'sentMailFolder' # DESC 'put a copy of all outgoing messages in this folder' # SUP folderSpec # ) # Default format in which to compose. Tokens defined here include # html -- compose in html # text -- compose using plain-text editor # xml -- compose using xml editor attributetype ( 1.3.6.1.4.8553.2.1.7 NAME 'composeFormat' DESC 'Default format in which to compose' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE ) # Default type of receipt to request when requesting a message receipt. # This document defines the following tokens # delivery -- delivery receipt (DSN) # read -- read receipt (MDN) # both -- request both types of receipt attributetype ( 1.3.6.1.4.8553.2.1.8 NAME 'receiptRequestType' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE ) attributetype ( 1.3.6.1.4.8553.2.1.11 NAME 'quoteOnReply' DESC 'whether to quote original message when replying' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) # set a value for the reply-to header of outgoing mail. If this value is # not set, no reply-to header will be set either. attributetype ( 1.3.6.1.4.8553.2.1.12 NAME 'replyTo' DESC 'value of reply-to header for outgoing messages' SUP mail SINGLE-VALUE ) # # 2.5 Pointers to delegate accounts: remoteServiceUser (auxiliary) # This auxiliary class allows entries to contain pointers to other entries # describing accounts allowing the use of remote internet services. This # allows the local account to act as a proxy for these services. # remoteServiceUser # Auxiliary class which allows an entry to have any number of DN valued # attributes which point to delegate services available to the entry. # Intended as an auxiliary class to person or group entries. attributetype ( 1.3.6.1.4.8553.2.1.1 NAME 'remoteService' SUP distinguishedName ) objectclass ( 1.3.6.1.4.8553.2.2.1 NAME 'remoteServiceUser' DESC 'the user of one or more remote services' SUP top MAY ( remoteService ) ) # 3. Remote Account Descriptions # 3.1 Remote internet services accounts: remoteService (structural) # Need to define a schema extension for storing information about an offsite # email (or other) services account. Examples include IMAP, POP, and SMTP. # Generic service requires host, service type, and uid and allows port, # password, specification of a secure protocol, and a public key. # In addtion each type of service might have specific attributes it needs. # Those are implemented as auxiliary classes. # # remoteService # A general structural class for remote internet services which # may be used by a local application acting as a proxy. attributetype ( 1.3.6.1.4.8553.2.1.9 NAME 'serviceType' DESC 'type of remote service' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) attributetype ( 1.3.6.1.4.8553.2.1.10 NAME 'port' DESC 'an ip port number' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) attributetype ( 1.3.6.1.4.8553.2.1.13 NAME 'SSL' DESC 'Use SSL?' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) objectclass ( 1.3.6.1.4.8553.2.2.3 NAME 'remoteService' DESC 'a remote internet service' SUP top STRUCTURAL MUST ( cn $ host $ serviceType ) MAY ( uid $ userPassword $ SSL $ port ) ) # # 3.2 Remote POP account: pOPAccount (auxiliary) # For example, POP allows you to choose whether downloaded mail is deleted # from the server, and if not, whether locally deleted mail is deleted from # from the server. # # pOPAccount # Extension of remoteService for POP mail servers #objectclass ( 1.3.6.1.4.8553.2.2.4 # NAME 'popAccount' # DESC 'POP mail Account' # SUP remoteService # STRUCTURAL # MAY ( checkFrequency $ leaveOnServer $ deleteFromServer $ downloadNewMessages ) #) # # 3.3 Remote IMAP account: iMAPAccount (auxiliary) # IMAP allows you to specify the root folder, name spaces, # and many options relating to managing and subscribing to folders. # # iMAPAccount # Extension of remoteService for IMAP mail servers #objectclass ( 1.3.6.1.4.8553.2.2.5 # NAME 'iMAPAccount' # DESC 'IMAP mail Account' # SUP remoteService # STRUCTURAL # MAY ( checkFrequency $ mailFolderMap $ offlineDLNewFolders $ UseSSL # $ deletePreferences $ exitPreferences $ showSubscribedOnly $ # subfolders $ namespacePreferences ) # ) # # 3.4 Remote SMTP account: sMTPAccount (auxiliary) # Allows specification of secure access preferences for secure SMTP servers. # # sMTPAccount # Extension of remoteService for SMTP servers. # This account is rarely used since normally web mail users will use the # local SMTP server to send messages #objectclass ( 1.3.6.1.4.8553.2.2.6 # NAME 'sMTPAccount' # DESC 'SMTP mail Account' # SUP remoteService # STRUCTURAL # MAY ( SSL ) # ) # 4. Other possible schema variations # # I debated whether to make remoteServiceUser contain information about # a remote account instead of links to remote account entries, but that # would allow each person or group to have only one remote account of each # type. Even though that would simplify things, I decided that it was # too limiting. # # Other possible approaches to creating remote account object classes include: # IMAP account extends POP account. This would work but is a misuse of # inheritance. # single class handles both POP and IMAP. This is possible under LDAP # because attributes can be made optional, but it seemed too confusing. # use or extend mailRecipient. I abandoned this after I realized # configuration data for mail clients is very different from configuration # needed by mail servers. mailRecipient is designed to be used by mail servers. # mailClientUser # Auxiliary class which allows a user entry to be extended to cover mail # client preferences. Intended to be used as an auxiliary to a person # or group entry. objectclass ( 1.3.6.1.4.8553.2.2.2 NAME 'mailClientUser' DESC 'preferences for the user of a mail client' SUP top MAY ( signature $ replyTo $ autoBCCTo $ forwardAsAttachment $ wrapIncomingAt $ composeFormat $ receiptRequestType $ quoteOnReply ) )