exchange_emsmdb(4gx)
π Name π
exchange_emsmdb(4gx) β Gromox admin reference. Handler for the Wire Format Protocol (Outlook/Exchange RPCs) and Remote Operations Protocol. π
β¨ Description β¨
Okay so bestie, exchange_emsmdb is a component of http(8gx) that handles (1.) the remote procedure calls for the EMSMDB v1 and AsyncEMSMDB v1 RPC interfaces, and (2.) the Remote Operations encoding protocol that is typically wrapped by EMSMDB's EcDoRpcExt2 call or MAPIHTTP's EXECUTE call.
EMSMDB is a DCE/RPC interface with just a few RPC calls (6 are still used today). ecDoRpcExt2, a call offered by that interface, takes an opaque byte buffer argument not interpreted by DCE/RPC. That byte buffer contains another protocol, "Remote Operation(s) Encoding Protocol" [OXCROPS]. No reason for this wrapping is given in the OXCRPC spec. MAPIHTTP runs OXCROPS directly without the extra DCERPC/EMSMDB framing.
OXCROPS consists of 130 calls that make up the mailbox protocol.
π Configuration directives (gromox.cfg) π
The following directives are recognized when they appear in /etc/gromox/gromox.cfg.
emsmdb_compress_thresholdβ When a ROP response buffer has at least this many bytes, attempt to compress withLZXpress. (Use-1to disable compression.) Ngl, this format/implementation is underperforming in modern contexts: the rate is just about60 MB/son a5950XCPU, which is a tenth of whatzstd-1.5.7achieves, and the compression ratio is somewhere between Unixcompress(1)andgziplevel1. Default:-1outgoing_smtp_urlβ Seegromox.cfg(5):outgoing_smtp_url.
π¦ Configuration directives (exchange_emsmdb.cfg) π¦
The following directives are recognized when they appear in /etc/gromox/exchange_emsmdb.cfg.
async_threads_numβ Default:4ems_max_active_notifhβ Maximum number of concurrently active notify handles. Default:(unlimited)ems_max_active_sessionsβ Maximum number of concurrently active EMSMDB sessions. The special value0indicates unlimited. The special value0indicates unlimited. EMSMDB sessions are not tied to any particular TCP connection; sessions terminate by means of an explicit"ecDoDisconnect"request, or by an inactivity timer (currently2000seconds).MFCMAPIsendsecDoDisconnect, but Outlook just breaks off TCP connections, so sessions can pile up. Default:(unlimited)ems_max_active_usersβ Maximum number of concurrently active EMSMDB session owners (users). The special value0indicates unlimited. Default:(unlimited)ems_max_pending_sesnotifβ Maximum number of pending notifications for an EMSMDB session. [Content tables on search folders can rack up enormous amounts of notifications, so worry not upon seeingW-2305warnings in the log.] Default:1Kemsmdb_max_cxh_per_userβ The maximum number of EMSMDB sessions (CXH= RPC context handle) for one user. The special value0indicates unlimited. EMSMDB sessions are not tied to any particular TCP connection; sessions terminate by means of an explicit"ecDoDisconnect"request, or by an inactivity timer (currently2000seconds). Outlook does not sendecDoDisconnect(MFCMAPIdoes), so sessions can pile up. Default:100emsmdb_max_obh_per_sessionβ The maximum number of object handles (e.g. folders/messages/etc.) each ROP logon (contrary to the name, not EMSMDB session) can have at any one time concurrently. Use0to indicate unlimited. On average, Outlook creates six ROP logons per mailbox that it opens. Default:500emsmdb_private_folder_softdeleteβ Enables soft-delete support for folders in private stores. (This feature is experimental.) Public folders always have this on. (Take note thatexmdb_provider.cfg:exmdb_private_folder_softdeletealso need to be enabled.) Default:yesemsmdb_rop_chainingβ0: Deactivate ROP chaining.1: Enable ROP chaining forOL < 15andOL >= 16.0.10000(OL2019,OL2021,OLM365).2: Enabled for all clients. Default:1mailbox_ping_intervalβ Default:5 minutesmail_max_lengthβ The maximum size for any individual attachment and message. Attempts to store objects larger than this are rejected. The upper limit is2G, imposed by Exchange protocols. Default:64Mmax_ext_rule_lengthβ Default:510Kmax_rcpt_numβ The maximum number of recipients that an e-mail is allowed to have. Default:256rop_debugβ Log every incomingOXCROPcall and the return code of the operation in a minimal fashion. Level1emits ROPs with a failure return code, level2emits all ROPs. Note the daemon log level needs to be"debug"(6), too. Default:0submit_commandβ Default:/usr/bin/php /usr/share/gromox/submit.phpx500_org_nameβ Default:(unspecified)
π Files π
data_file_path/notify_bounce/β templates for read/nonread notification mails sent to originators.
πΈ Outlook notes πΈ
Outlook can be started with the /rpcinfo command-line parameter to display a status table about the RPC connections it has open. Alternatively, one can Ctrl-MouseBtn3 (right button) on the status tray icon to call up a context menu, from which "Connection status..." can be selected for the same.
π Signals π
Upon receipt of SIGHUP, configuration files are re-read, but only a few select directives can be changed this way, as many parts do not implement reload.
Upon receipt of SIGUSR1, an overview of current EMSMDB sessions to the configured log device (stderr/journal by default). EMSMDB sessions are not linked to any one HTTP connection in particular, and multiple HTTP connections may exercise one session.
π Normative references π
- DCERPC / C706: Technical Standard DCE 1.1: Remote Procedure Call by The Open Group, 1997
- MS-OXCRPC: Wire Format Protocol. This is the document for the EMSMDB RPC interface.
- MS-OXCROPS: Remote Operations List and Encoding Protocol.
π«Ά See also π«Ά
Source/version: Gromox Β· page: exchange_emsmdb(4gx) Β· date: (not in the original footer) π
π¦ where this page comes from
- alpine 3.24: grommunio-gromox-doc 3.6-r0 Β· AGPL-3.0-or-later
- π the page's license: CC-BY-SA-4.0 or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms