### Enable and Start nginx Source: https://docs.grommunio.com/admin/manual_core.html Configure the nginx service to start automatically on boot and start it immediately. ```bash mail:~ # systemctl enable --now nginx ``` -------------------------------- ### Install grommunio-common package Source: https://docs.grommunio.com/admin/manual_core.html Installs the initial configuration fragments for Nginx. ```bash zypper in grommunio-common ``` -------------------------------- ### Install nginx on openSUSE Source: https://docs.grommunio.com/admin/manual_core.html Install the nginx web server and the VTS module using zypper. ```bash mail:~ # zypper in nginx nginx-module-vts ``` -------------------------------- ### Enable and Start AAPI Service Source: https://docs.grommunio.com/admin/manual_core.html Enable the grommunio-admin-api service to start on boot and start it immediately using systemctl. ```bash systemctl enable --now grommunio-admin-api ``` -------------------------------- ### Install Postfix and MySQL Support Source: https://docs.grommunio.com/admin/manual_core.html Install Postfix and the necessary MySQL lookup plugin using zypper. ```bash zypper in postfix postfix-mysql ``` -------------------------------- ### Install MariaDB packages Source: https://docs.grommunio.com/admin/manual_core.html Installs MariaDB server and client packages using zypper. ```bash mail:~ # zypper in mariadb mariadb-client Loading repository data... Reading installed packages... Resolving package dependencies... The following 15 NEW packages are going to be installed: libJudy1 libaio1 libedit0 libltdl7 liblzo2-2 libmariadb3 libodbc2 libpython3_8-1_0 libwrap0 mariadb mariadb-client mariadb-errormessages python38-base python38-mysqlclient 15 new packages to install. Overall download size: 33.3 MiB. Already cached: 0 B. After the operation, additional 160.7 MiB will be used. Continue? [y/n/v/...? shows all options] (y): ``` -------------------------------- ### Folder path with MAPI root Source: https://docs.grommunio.com/man/gromox-mbop.8.html Example of specifying a folder path starting from the MAPI root, including subfolders. ```text /Top of Information Store/Sent Items/2022 ``` -------------------------------- ### Enable and start MariaDB service Source: https://docs.grommunio.com/admin/manual_core.html Enables and starts the MariaDB service immediately. ```bash (13/15) Installing: python38-base-3.8.12-3.2.x86_64 ... [done] (14/15) Installing: pytnon38-mysqlclient-2.0.3-2.2.x86_64 ... [done] (15/15) Installing: mariadb-10.6.5-4.1.x86_64 ... [done] mail:~ # systemctl enable --now mariadb Created symlinks /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service ``` -------------------------------- ### Install Gromox via zypper Source: https://docs.grommunio.com/admin/manual_core.html Use the package manager to install the Gromox server and its dependencies. ```bash mail:~ # zypper in gromox Loading repository data... Reading installed packages... Resolving package dependencies... The following 26 NEW packages are going to be installed: gromox libHX32 libbfio1 libcdata1 libcerror1 libcfile1 libclocale1 libcnotify1 libcpath1 libcsplit1 libcthreads1 libfcache1 libfdata1 libfmapi1 libgumbo1 ilbjsoncpp25 libpff1 libuna1 php8 php8-cli php8-mysql php8-pdo php8-soap system-user-gromox system-user-wwwrun timezone 26 new packages to install Overall download size: 5.8 MiB. Already cached: 0 B. After the operation, additional 19.3 MiB will be used. Continue? [y/n/v/...? shows all options] (y): ``` -------------------------------- ### Install Grommunio Admin Web Interface Source: https://docs.grommunio.com/admin/manual_core.html Install the grommunio-admin-web package using zypper. This package contains the static files for the AWEB login page. ```bash zypper in grommunio-admin-web ``` -------------------------------- ### grommunio-admin run Source: https://docs.grommunio.com/man/grommunio-admin-run.html Command-line interface documentation for starting the stand-alone HTTP server. ```APIDOC ## grommunio-admin run ### Description Starts a stand-alone HTTP server to run the REST API. This is intended for development and testing purposes only. ### Method CLI Command ### Options - **-d, --debug** (flag) - Optional - Enable debug mode. - **-i, --ip** (string) - Optional - Host address to bind to (default ::). - **--no-config-check** (flag) - Optional - Skip configuration check. - **-p, --port** (integer) - Optional - Host port to bind to (default 5001). ``` -------------------------------- ### Install grommunio-admin-api Package Source: https://docs.grommunio.com/admin/manual_core.html Use zypper to install the grommunio-admin-api package, which includes the command-line interface and application server. ```bash zypper in grommunio-admin-api ``` -------------------------------- ### Enable and Restart Services Source: https://docs.grommunio.com/admin/manual_core.html Enable the gromox-delivery, gromox-delivery-queue, and postfix services to start on boot, and then restart them to apply the new configurations. ```bash systemctl enable --now gromox-delivery gromox-delivery-queue postfix ``` ```bash systemctl restart gromox-delivery-queue postfix ``` -------------------------------- ### Manage gromox-http service Source: https://docs.grommunio.com/admin/manual_core.html Enable and start the gromox-http daemon. ```bash systemctl enable --now gromox-http ``` -------------------------------- ### Example of zaddrxlat command Source: https://docs.grommunio.com/man/gromox-mbop.8.html This example demonstrates how to use the zaddrxlat command to recursively process folders and translate addresses using a specified user map. ```bash zaddrxlat -m u.map -r "IPM_SUBTREE/Import of blah @2025-12-26" ``` -------------------------------- ### Enable Gromox Daemons Source: https://docs.grommunio.com/admin/manual_core.html Start and enable the event and timer daemons using systemd. ```bash systemctl enable --now gromox-event gromox-timer ``` -------------------------------- ### IMAP Server - Synopsis and Options Source: https://docs.grommunio.com/man/imap.8gx.html Details the command-line synopsis and available options for starting the IMAP server. ```APIDOC ## IMAP Server Synopsis and Options ### Synopsis **imap** [**-c** _config_] ### Options - **-c** _config_ Read configuration directives from the given file. If this option is not specified, /etc/gromox/gromox.cfg and /etc/gromox/imap.cfg will be read. - **--version** Output version information and exit. - **-?** Display option summary. All time-based command-line options and configuration file directives are subject to the syntax described in gromox(7), section "Duration specifications". ``` -------------------------------- ### Manage IMAP and POP3 services Source: https://docs.grommunio.com/admin/manual_core.html Enable and start the IMAP and POP3 daemons. ```bash systemctl enable --now gromox-imap gromox-pop3 ``` -------------------------------- ### Manage PHP-FPM service Source: https://docs.grommunio.com/admin/manual_core.html Enable and start the PHP-FPM service. ```bash systemctl enable --now php-fpm ``` -------------------------------- ### Manage midb and zcore services Source: https://docs.grommunio.com/admin/manual_core.html Enable and start the IMAP Message Index Database and PHP-MAPI bridge. ```bash systemctl enable --now gromox-midb gromox-zcore ``` -------------------------------- ### Gromox Directory Permissions Source: https://docs.grommunio.com/admin/manual_core.html Example of the file permissions for the /var/lib/gromox directory, which should be owned by the gromox user and group with read-write permissions. Others should have no access. ```text drwxrwx--- 5 gromox gromox 62 Feb 13 23:15 /var/lib/gromox ``` -------------------------------- ### Gromox Configuration Directory Permissions Source: https://docs.grommunio.com/admin/manual_core.html Example of the file permissions for the /etc/gromox directory, which should be owned by grommunio or root, group owned by gromoxcf read-only, and inaccessible to others. ```text drwxr-x--- 2 grommunio gromoxcf 125 Feb 20 21:47 /etc/gromox ``` -------------------------------- ### Get web settings Source: https://docs.grommunio.com/man/gromox-mbop.8.html Dumps various grommunio-web settings to stdout. Use get-websettings-persistent for persistent settings and get-websettings-recipients for autocomplete data. ```bash get-websettings > file.json ``` ```bash get-websettings-persistent > file.json ``` ```bash get-websettings-recipients > autocomplete.json ``` -------------------------------- ### Example JSON Output Format Source: https://docs.grommunio.com/man/kdb-uidextract.8.html The output format produced by kdb-uidextract, representing an array of user objects with attributes like username, server GUID, store GUID, and email mappings. ```json [ {"em": "boss@example.domain", "na": "boss", "sv": "0123456789abcdef0123456789abcdef", "st": "0123456789abcdef0123456789abcdef", "to": "boss@domain.example", "id": 3}, {"em": "boss@domain.example", "na": "boss", "sv": "123456789abcdef0123456789abcdef0", "st": "0123456789abcdef0123456789abcdef", "to": "boss@domain.example", "id": 91} ] ``` -------------------------------- ### Get SYSTEM User GUID with kopano-admin Source: https://docs.grommunio.com/man/gromox-kdb2mt.8.html Retrieve the GUID for the global 'SYSTEM' user in Kopano using kopano-admin. This can be used to access the SYSTEM user's private store if necessary. ```bash kopano-admin --details SYSTEM ``` -------------------------------- ### Get Company Public Folder GUID with kopano-admin Source: https://docs.grommunio.com/man/gromox-kdb2mt.8.html Retrieve the GUID for a company's specific public folder using kopano-admin. Replace 'MyCompany' with the actual company name. This is useful for accessing company-specific public folders. ```bash kopano-admin --type company --details MyCompany ``` -------------------------------- ### Get free/busy information Source: https://docs.grommunio.com/man/gromox-mbop.8.html Retrieves free and busy status for a mailbox within a specified time period. Use -a for start time and -b for end time. The -x option can be used to evaluate ACLs as a specific identity. ```bash get-freebusy -a "2023-10-27T09:00:00Z" -b "2023-10-27T17:00:00Z" -x user@example.com ``` -------------------------------- ### Initialize Gromox Database Source: https://docs.grommunio.com/admin/manual_core.html Create the initial database tables required for Gromox operation. ```bash mail:~ # gromox-dbop -C Creating admin_roles Creating associations Creating configs Creating domains Creating forwards Creating groups Creating hierarchy Creating members Creating mlists Creating options Creating orgs Creating specifieds Creating users Creating aliases Creating user_properties Creating admin_role_permission_relation Creating admin_user_role_relation Creating classes Creating fetchmail Creating secondary_store_hints Creating user_devices Creating user_device_history Creating task_queue mail:~ # ``` -------------------------------- ### Initialize MariaDB database and user Source: https://docs.grommunio.com/admin/manual_core.html Creates the grommunio database and grants privileges to the grommunio user. ```bash mail:~ # mariadb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.6.5-MariDB MariaDB package Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE `grommunio`; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> GRANT ALL ON `grommunio`.* TO 'grommunio'@'localhost' IDENTIFIED BY 'freddledgruntbuggly'; Query OK, 0 rows affected (0.004 sec) MariaDB [(none)]> ``` ```sql CREATE DATABASE `grommunio`; GRANT ALL ON `grommunio`.* TO 'grommunio'@'localhost' IDENTIFIED BY 'freddledgruntbuggly'; ``` -------------------------------- ### Decode GUID with ddbg Source: https://docs.grommunio.com/man/ddbg.1gx.html Use the --decode-guid command with a GUID to look up its representation. The -p option employs hex2bin before the main action. ```bash ddbg -p --decode-guid 38a1bb1005e5101aa1bb08002b2a56c2 ``` -------------------------------- ### Custom mod_rewrite Rule Example Source: https://docs.grommunio.com/man/mod_rewrite.4gx.html An example of a custom rewrite rule using POSIX Basic Regular Expressions. This rule captures parts of the URI and rearranges them in the replacement string. ```regex ^/\([a-z+]\)/\([a-z]+\).txt$ => /\2/\1.txt ``` -------------------------------- ### AAPI Login Endpoint Response (Method Not Allowed) Source: https://docs.grommunio.com/admin/manual_core.html The expected HTTP response when attempting to access the AAPI login endpoint with a GET request, indicating that the 'GET' method is not allowed. ```http < HTTP/1.1 405 METHOD NOT ALLOWED … {"message":"Method 'GET' not allowed on this endpoint"} ``` -------------------------------- ### GET /get-photo Source: https://docs.grommunio.com/man/index.html Retrieves the profile photo for a user. ```APIDOC ## GET /get-photo ### Description Retrieves the profile photo associated with a user account. ### Method GET ### Endpoint /get-photo ``` -------------------------------- ### GET /get-freebusy Source: https://docs.grommunio.com/man/index.html Retrieves free/busy information for a user. ```APIDOC ## GET /get-freebusy ### Description Retrieves the free/busy status for a specified user. ### Method GET ### Endpoint /get-freebusy ### Parameters #### Options - **options** (string) - Optional - Configuration options for the free/busy retrieval. ``` -------------------------------- ### zcore Command-Line Options Source: https://docs.grommunio.com/man/zcore.8gx.html zcore accepts options to specify configuration files, display version information, or show the option summary. ```bash zcore -c config ``` ```bash --version ``` ```bash -? ``` -------------------------------- ### Discover your store with gromox-dscli Source: https://docs.grommunio.com/man/gromox-dscli.8.html Use this command to discover your store by providing the email address. The PASS environment variable is required for authentication. ```bash PASS=letmein gromox-dscli -e user@domain.example ``` -------------------------------- ### GET /get-websettings Source: https://docs.grommunio.com/man/index.html Retrieves web settings for the current user. ```APIDOC ## GET /get-websettings ### Description Retrieves the web configuration settings for the authenticated user. ### Method GET ### Endpoint /get-websettings ``` -------------------------------- ### gromox-dbop CLI Utility Source: https://docs.grommunio.com/man/gromox-dbop.8.html Command-line interface for initializing and upgrading the gromox user database. ```APIDOC ## gromox-dbop ### Description User database maintenance utility for creating and upgrading the user information database schema. ### Options - **-C** - Create the initial set of tables for the user information database (in MySQL). - **-U** - Upgrade the schema of the user information database. The database (MYSQL_DBNAME) should exist and be blank. - **--create-old** - Create blank initial database using version 0. - **-c** (string) - Path to a configuration file that defines MYSQL_HOST, MYSQL_USERNAME, etc. If omitted, it defaults to reading /etc/gromox/http.cfg. ``` -------------------------------- ### grommunio-admin shell Source: https://docs.grommunio.com/man/grommunio-admin-shell.html Starts an interactive shell session for executing grommunio-admin commands. ```APIDOC ## CLI COMMAND: grommunio-admin shell ### Description Starts an interactive shell mode that allows execution of multiple commands in a single session. Command syntax is identical to CLI arguments, with the addition of the 'exit' command. ### Options - **-d, --debug** - Enable more verbose debug output. - **-n, --no-history** - Disable loading/saving of the typed history. - **-x, --exit** - Exit immediately if a command results in a non-zero exit code. ### Usage `grommunio-admin shell [-d] [-n] [-x]` ``` -------------------------------- ### Configure Office Nodes Backend Source: https://docs.grommunio.com/admin/architecture.html Sets up the backend for office nodes with sticky sessions and round-robin balancing. It includes options for forwardfor, http-server-close, and redispatch. ```haproxy stick-table type ip size 10240k expire 60m stick on src balance roundrobin option forwardfor option http-server-close option redispatch server office01 office01.grommunio.at:443 check ssl verify none ``` -------------------------------- ### Generate grommunio Support Package Source: https://docs.grommunio.com/admin/troubleshooting.html Execute this command to create a support package for analysis by grommunio support. The archive is created under the web root and should be removed after transmission. ```bash grommunio-support ``` -------------------------------- ### Configure gromox-pop3 Source: https://docs.grommunio.com/admin/manual_core.html TLS configuration for /etc/gromox/pop3.cfg. ```text listen_ssl_port=995 pop3_support_stls=true pop3_certificate_path=zzz.pem pop3_private_key_path=zzz.key pop3_force_stls=true ``` -------------------------------- ### GET get-freebusy Source: https://docs.grommunio.com/man/gromox-mbop.8.html Retrieves free/busy status for a mailbox within a specified time range. ```APIDOC ## GET get-freebusy ### Description Runs the get_freebusy routine on the mailbox and returns free/busy status within the given time period. ### Method GET ### Endpoint get-freebusy ### Parameters #### Query Parameters - **-a** (string) - Optional - Limit returned events to occurring on or after this timestamp (ISO 8601 or Unixtime). - **-b** (string) - Optional - Limit returned events to occurring before this timestamp (ISO 8601 or Unixtime). - **-x** (string) - Optional - Evaluate access control lists as this identity. ``` -------------------------------- ### Configure gromox-http Source: https://docs.grommunio.com/admin/manual_core.html Directives for /etc/gromox/http.cfg to set ports and TLS paths. ```text listen_port=10080 listen_ssl_port=10443 http_support_ssl=yes http_certificate_path=zzz.pem http_private_key_path=zzz.key ``` -------------------------------- ### Store Management Source: https://docs.grommunio.com/man/grommunio-admin-exmdb.html Commands for deleting, getting, and setting properties within a user or domain store. ```APIDOC ## DELETE /exmdb/store/delete ### Description Delete properties from a user or domain store. ### Method DELETE ### Endpoint /exmdb/store/delete ### Parameters #### Path Parameters - **TARGET** (string) - Required - Name of the domain or e-mail address of the user. - **PROPSPEC** (string) - Required - Name or numeric value of the property to delete. Can be specified multiple times. ### Request Example ```json { "target": "example.com", "propspec": ["property1", "0x123"] } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message of property deletion. #### Response Example ```json { "message": "Properties deleted successfully." } ``` ``` ```APIDOC ## GET /exmdb/store/get ### Description Get properties from a user or domain store. ### Method GET ### Endpoint /exmdb/store/get ### Parameters #### Path Parameters - **TARGET** (string) - Required - Name of the domain or e-mail address of the user. - **PROPSPEC** (string) - Required - Name or numeric value of the property to retrieve. Can be specified multiple times. #### Query Parameters - **--format** (string) - Optional - Output format. Can be one of _csv_, _json-flat_, _json-kv_, _json-object_, _json-structured_, and _pretty_. Defaults to _pretty_. - **--separator** (string) - Optional - String to use for column separation (_csv_ and _pretty_ only). Defaults to "," for _csv_ and " " for _pretty_. ### Request Example ```json { "target": "example.com", "propspec": ["property1", "property2"], "format": "json-kv" } ``` ### Response #### Success Response (200) - **properties** (object) - An object containing the requested properties and their values. #### Response Example ```json { "properties": { "property1": "value1", "property2": "value2" } } ``` ``` ```APIDOC ## POST /exmdb/store/set ### Description Set properties for a user or domain store. ### Method POST ### Endpoint /exmdb/store/set ### Parameters #### Path Parameters - **TARGET** (string) - Required - Name of the domain or e-mail address of the user. - **PROPSPEC=VALUE** (string) - Required - Property name and its value to set. Can be specified multiple times. ### Request Example ```json { "target": "example.com", "properties": { "property1": "new_value1", "property2": "new_value2" } } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message of property setting. #### Response Example ```json { "message": "Properties set successfully." } ``` ``` -------------------------------- ### gromox-dscli: Data Store CLI Tool Source: https://docs.grommunio.com/man/index.html Command-line interface for interacting with the data store. Useful for debugging and advanced management. ```bash gromox-dscli --help ``` -------------------------------- ### grommunio-admin-version: Version Information Source: https://docs.grommunio.com/man/index.html Displays the version information for grommunio components. Useful for checking installed versions and compatibility. ```bash grommunio-admin-version --help ``` -------------------------------- ### Configure apt Repository for Debian-based Systems Source: https://docs.grommunio.com/admin/manual_core.html Defines the repository source file and imports the GPG key for Debian 12 and Ubuntu 22.04. ```text Types: deb URIs: https://download.grommunio.com/community/Debian_12 Suites: Debian_12 Components: main Signed-By: /usr/share/keyrings/download.grommunio.com.gpg ``` ```bash # wget -qO - https://download.grommunio.com/RPM-GPG-KEY-grommunio | gpg --dearmor --output /usr/share/keyrings/download.grommunio.com.gpg ``` ```bash # curl https://download.grommunio.com/RPM-GPG-KEY-grommunio >/etc/apt/trusted.gpg.d/download.grommunio.com.asc % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3175 100 3175 0 0 50396 0 --:--:-- --:--:-- --:--:-- 50396 ``` -------------------------------- ### Folder path with symbolic name Source: https://docs.grommunio.com/man/gromox-mbop.8.html Example of specifying a folder path using a symbolic name like IPM_SUBTREE. ```text IPM_SUBTREE/Sent Items/2022 ```