mapiprofile(1) administer OpenChange MAPI Profiles databases


mapiprofile [-?GSnEcrlV] [-?|--help] [--usage] [-L|--ldif=PATH] [-G|--getdefault] [-S|--default]
[-n|--newdb] [-f|--database=PATH] [-P|--profile=PROFILE] [-I|]
[-M|--workstation=WORKSTATION_NAME] [-D|--domain=DOMAIN] [-R|--realm=REALM] [-E|--encrypt]
[-v|--exchange-version=2000] [-u|--username=USERNAME] [-C|--language=LANGUAGE]
[-s|--pattern=USERNAME] [-p|--password=PASSWORD] [--nopass] [-c|--create] [-r|--delete]
[-R|--rename=STRING] [-l|--list] [--listlangs] [--dump] [-a|--attr=VALUE] [--dump-data]
[-d|--debuglevel=LEVEL] [--getfqdn] [-k|--kerberos={yes|no}] [-V|--version]


mapiprofile is a command line tool designed to provide administrative support for OpenChange MAPI profiles. A profile in this context represents a single user's connection to a server. It can be thought of as a user's account information stored on the client side. Most OpenChange utilities make use of the profile information stored in the local profile database, often by referring to the name of the profile. In addition, because most users only have a single account, it is possible to designate one profile as the default profile. If a profile is not specified, other utilities will use the default profile (if any) to establish a connection.

mapiprofile is designed so it also provides sample code for developers interested in adding OpenChange MAPI profile support to their applications.


Create a new database.

Create a new profile in the database.

Delete a profile from the database.

--rename PROFILE
Rename a profile in the database

Set the default profile in the database.

Get the default profile name from the database.

Display information about a specific profile from information stored in the database.

List existing profiles in the database.

List the available languages. These can be used to specify the language name (--language) when creating a profile.


--database DATABASE
Path to the profile database. If no path database is specified then the default one will be used $HOME/.openchange/profiles.ldb

--ldif LDIF
Path to the LDIF files. If no LDIF directory is specified then the default one set at compilation time will be used. This option is only used when creating a new profile database.

--profile PROFILE
Set the profile name to use (e.g. the profile to create or delete, or to dump information about).

--address IP_ADDR|FQDN
Set the Exchange server IP address or fully qualified domain name.

--workstation WORKSTATION
Sets the local computer name.

--domain DOMAIN
Set the Windows domain name.

Require the connection to be encrypted. This is normally required only on Exchange 2010 (and will presumably also be required on future versions), but may be used on Exchange 2003 and Exchange 2007.

Specify which version of the protocol to use. The reasonable options are 2000, 2003/2007 and 2010. 2000 means use EcDoConnect (0x0) / EcDoRpc (0x2) RPC calls, 2003 or 2007 means use EcDoConnectEx (0xA) / EcDoRpcExt2 (0xB) RPC calls, and 2010 means use EcDoConnectEx (0xA) / EcDoRpcExt2 (0xB) RPC calls over a sealed pipe.

Specify whether to force Kerberos (set to yes), not use Kerberos (set to no). If you omit this option, Kerberos will be used where practical.

--realm REALM
Set the Windows realm

Set the username to use to log on the Exchange server.

Set the password corresponding to the username described above.


Specify the language to use with the account. When specifying the name, you use the name of the language returned within the list --listlangs option displays. See the --listlangs option for how to obtain the full list of languages. The default language code is the system one stored within the LC_CTYPE environment variable.

Set a username string pattern mapiprofile should use rather than the default username. This option is used during mapi profile creation.

Do not save password in the profile.

--attr VALUE
Print an attribute value.

Dump the hex data.

--debuglevel LEVEL
Set the debug level.

Returns the DNS fully qualified domain name of the NSPI server matching the legacyDN.


Create a blank MAPI profile database:

mapiprofile --database=/tmp/profiles2.ldb --ldif=/usr/local/samba/share/setup --newdb

Create a new profile using NTLMSSP authentication:

mapiprofile --database=/tmp/profiles.ldb --profile=jkerihuel
     --username=jkerihuel --password=secret --language=French\ \(France\)
     --address= --workstation=LOCALHOST --domain=OPENCHANGE 
Profile jkerihuel completed and added to database /tmp/profiles.ldb.
Note that this account will use French.

Create a new profile using Kerberos authentication:

mapiprofile --database=/tmp/profiles.ldb --profile=jkerihuel
     --username=jkerihuel --password=secret --language=French\ \(France\)
     --address=exchange.openchange.local --domain=OPENCHANGE
     --realm=OPENCHANGE.LOCAL --create

Delete a profile:

mapiprofile --database=/tmp/profiles.ldb --profile=jkerihuel --delete
Profile jkerihuel deleted from database /tmp/profiles.ldb

List profiles:

mapiprofile --database=/tmp/profiles.ldb --list
We have 2 profiles in the database:
        Profile = exchange-2000
        Profile = jkerihuel

Dump a profile:

mapiprofile --database=/tmp/profiles.ldb --profile=jkerihuel --dump
Profile: jkerihuel
        username       == jkerihuel
        password       == secret
        mailbox        == /o=First Organization/ou=First Administrative Group/cn=Recipients/cn=jkerihuel
        workstation    == LOCALHOST
        domain         == OPENCHANGE
        server         == exchange.openchange.local

Dump profile attribute:

mapiprofile --database=/tmp/profiles.ldb --profile=jkerihuel --attr=HomeMDB
Profile jkerihuel: HomeMDB = /o=First Organization/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=EXCHANGE2000


Julien Kerihuel <j.kerihuel at openchange dot org>

Brad Hards <bradh at openchange dot org>