zcore¶
Name¶
zcore — Bridge for PHP-MAPI requests
Synopsis¶
zcore [-c config]
Description¶
zcore is a bridge process (proxy) between mapi(4gx) and exmdb_provider(4gx). It listens on /run/gromox/zcore.sock (hardcoded) for zcore RPCs, a Gromox-specific protocol and issues exmdb RPCs to exmdb_provider(4gx). As exmdb_provider connections have no state to speak of, zcore is the process that defines the logins sessions. zcore needs to run on the same server as the program that uses the Z-MAPI PHP functions.
Options¶
- -c config
- Read configuration directives from the given file. If this option is not specified, /etc/gromox/zcore.cfg will be read if it exists.
- –version
- Output version information and exit.
- -?
- Display option summary.
Configuration directives¶
The usual config file location is /etc/gromox/zcore.cfg.
- address_cache_internal
- Default: 5 minutes
- address_table_size
- Default: 3000
- config_file_path
- Colon-separated list of directories which will be scanned when locating further configuration files, especially those used by plugin instances.Default: /etc/gromox/zcore:/etc/gromox
- data_file_path
- Colon-separated list of directories which will be scanned when locating data files.Default: /usr/share/gromox/zcore
- default_charset
- Default: windows-1252
- freebusy_tool_path
- Default: /usr/libexec/gromox/freebusy
- host_id
- A unique identifier for this system. It is used for the HELO line of outgoing SMTP connections, and as an unused identifier within muidStoreWrap entryids. The identifier should only use characters allowed for hostnames.Default: (system hostname)
- mailbox_ping_interval
- Default: 5 minutes
- mail_max_length
- Default: 64M
- max_ext_rule_length
- Default: 510K
- max_mail_num
- Default: 1000000
- max_rcpt_num
- The maximum number of recipients that an e-mail is allowed to have.Default: 256
- notify_stub_threads_num
- For every exmdb server in exmdb_list.txt, establish and keep this many number of outbound connections for receiving notification RPCs.Default: 10
- rpc_proxy_connection_num
- For every exmdb server in exmdb_list.txt, establish and keep this many number of outbound connections for sending commands.Default: 10
- separator_for_bounce
- Default: ;
- service_plugin_ignore_errors
- If set to yes, service plugins that fail to load on startup are ignored. If set to no, the daemon will exit if any plugin cannot be loaded.Default: no
- service_plugin_list
- Path to a text file which lists the filenames of service plugins to load, one per line.Default: (built-in list)
- service_plugin_path
- Path to a secondary directory where service plugins will be loaded from if a primary search in standard directories (as per ld.so(8)) was unsuccessful.Default: /usr/lib/gromox
- smtp_server_ip
- SMTP server hostname or address to contact for outgoing mail.Default: ::1
- smtp_server_port
- SMTP server TCP port number to contact for outgoing mail.Default: 25
- state_path
- Directory for runtime variadic data.Default: /var/lib/gromox
- submit_command
- Default: /usr/bin/php /usr/share/gromox/sa/submit.php
- user_cache_interval
- Sets the time how long a zcore-specific “OBJECT_TREE” structure is cached. At the end of this interval, user settings like PR_EC_WEBACCESS_JSON (stored in a separate file, not in SQLite) are flushed to disk.Default: 1 hour
- user_table_size
- Default: 5000
- x500_org_name
- Default: (unspecified)
- zarafa_mime_number
- Default: 4096
- zarafa_threads_num
- The minimum number of client processing threads to keep around.Default: 100
- zcore_listen
- The named path for the AF_LOCAL socket that zcore will listen on.Default: /run/gromox/zcore.sock
- zcore_max_obh_per_session
- The maximum number of object handles each session can have at any one time (e.g. folders/messages/etc. open simultaneously). There is one session for each mailbox opened.Default: 500
- zrpc_debug
- Log every incoming zcore RPC and the return code of the operation in a minimal fashion to stdout. Level 1 emits RPCs with a failure return code, level 2 emits all RPCs.Default: 0
Network protocol¶
The transmissions on the zcore socket are simple concatenations of protocol data units built using the NDR format. The PDU length is present within the PDU itself near the start.
{
leuint32_t length;
char pdu[];
}
pdu := {
uint8_t call_id;
string directory;
switch (call_id) {
...
}
}
Store lookup¶
zcore determines the store path for a user from the user database, which may be provided by a service plugin like mysql_adaptor(4gx).
The filemap that specifies how paths are handled is located at data_file_path/exmdb_list.txt, whereby data_file_path is the eponymous directive from the config file.
Each line in this file consists of 4 columns separated by whitespace:
- A portion of the store path to match on
- The type of store (“private” or “public”)
- An IPv6 address (or v4-mapped address) of the server running exmdb_provider(4gx)
- The TCP port number of the server
Files¶
- config_file_path/exmdb_list.txt: exmdb multiserver selection map, see exmdb_provider(4gx) for details.
- data_file_path/folder_names.txt: Translations for essential folders in a message store.
- data_file_path/msgchg_grouping/: Data files for exchange_emsmdb(4gx)
- data_file_path/notify_bounce/: A directory with translation files for bounce notification templates for when mail cannot be delivered
- /usr/lib/gromox/libgxs_*.so: service plugins
- /var/lib/gromox/user/*/config/zarafa.dat: file for the* PR_EC_WEBACCESS_JSON property.
Notes¶
Behavior for the address book generally mirrors exchange_nsp(4gx), so see that manpage for additional notes.
See also¶
gromox(7)