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.

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

  • data_file_path/exmdb_list.txt: exmdb multiserver map

  • data_file_path/folder_lang.txt: Translations for essential folders in a message store.

  • data_file_path/langmap.txt: Mapping between translation names and libc locale names.

  • data_file_path/msgchg_grouping/: Data files for exchange_emsmdb(4gx)

  • data_file_path/notify_bounce/: A directory with translation files for various bounce notifications.

  • /usr/lib/gromox/libgxs_*.so: service plugins

Configuration file directives

address_cache_internal

Default: 5 minutes

address_item_num

Default: 100000

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
console_server_ip
An IPv6 address (or v4-mapped address) to expose the management console frontend on.
Default: ::1
console_server_port
The TCP port number to expose the management console frontend on.
Default: 3344
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

default_timezone

Default: (unspecified)

freebusy_tool_path

Default: /usr/libexec/gromox/freebusy

host_id

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

Default: 10

rpc_proxy_connection_num

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: (unspecified)
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
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

Files

  • config_file_path/exmdb_list.txt: exmdb multiserver selection map, see exmdb_provider(4gx) for details.

  • data_file_path/langmap.txt: mapping between language code and its corresponding libc locale name.

  • data_file_path/msgchg_grouping/.txt*

  • data_file_path/notify_bounce/: response templates for when mail cannot be delivered

  • /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)