# Set Up grommunio Archive 2026: Archive, Search and Restore Email

Source: https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step
Language: en
Published: 2026-09-07
Updated: 2026-10-23

Step-by-step email archiving with grommunio Archive: installation, mail flow, search, restore, backup and monitoring.

## Overview

The validated baseline is the openSUSE-based grommunio appliance 2026.06.1. The examples consistently use the neutral appliance domain https://mail.example.test; paths such as /web/, /admin/, /auth/, /chat/, /meet/ and /files/ live on the same appliance.This article shows how to set up grommunio Archive on an existing grommunio 2026 appliance and validate the mail flow through search and restore.

The guide walks through components, services, archiving, search UI, results, restore, retention basics, permissions, logs and final validation.

## Tested environment

- grommunio 2026 on the openSUSE-based grommunio appliance.
- All appliance commands are run directly on the grommunio appliance.
- Public examples consistently use the neutral appliance domain https://mail.example.test.

## 1. Starting point & prerequisites

The starting point is a grommunio installation with working DNS, TLS, admin access and a clean baseline validation. Each article covers exactly the building block required for a complete collaboration platform.

## 2. Step-by-step guide

This article puts grommunio platform into a practical context and explains the decisions that matter for a reliable implementation. By the end, you should know what to prepare, how to recognize a working state and what the next useful step is.

### Prerequisites

An existing or planned grommunio environment, matching DNS names, TLS, administrative access and a clear target for mail, collaboration or operations.

This guide shows you how to set up grommunio Archive on a grommunio 2026.06.1 appliance, validate it technically, and prove a complete archiving and restore workflow. It is intentionally practical: install the package, prepare database and storage, connect the mail flow, enable users, search, restore, back up and monitor the service.

This article covers technical email archiving and a robust retention-compliance building block. Legal requirements such as retention periods, export obligations or evidential value must always be agreed with your own organization and legal advisers.

### What we are building

Archive is not a decorative add-on next to groupware in this setup. The appliance accepts a message into the mailbox and creates an additional archive copy through the Postfix BCC path. grommunio Archive stores the message, writes metadata to the database, indexes it through Sphinx and provides search and restore through the Archive web UI.

- Package: grommunio-archive
- Version used: 1.4.9 on grommunio 2026.06.1
- Daemons: grommunio-archive, grommunio-archive-smtp and searchd
- Database: groarchive in MariaDB
- Data path: /var/lib/grommunio-archive
- Web path: https://mail.example.test/archive/
- Login: grommunio user with IMAP/POP and Archive privilege
- Restore: from Archive back into the user mailbox.

### Architecture and mail flow

The tested flow is simple but important: an incoming or locally generated message is delivered to the mailbox and copied to an internal Archive address. Postfix routes that address locally to the Archive SMTP service on 127.0.0.1:2693. The Archive daemon remains internal; users only see the HTTPS interface under /archive/.

- Mail flow
- Postfix / gromox
- Mailbox
- recipient\_bcc\_maps
- archive@archive.example.test
- smtp:[127.0.0.1]:2693
- grommunio Archive
- groarchive database
- Sphinx search index
- Archive web UI
- Restore into the mailbox

### Check prerequisites

Start from a working grommunio 2026 base system. DNS, TLS, time synchronization, admin access, working user mailboxes and IMAP must already work. If you are following the article series, the installation from part 1 is the base.

```bash
cat /etc/os-release
hostname -f
rpm -qa | grep -Ei 'grommunio|gromox|archive' | sort
zypper search -s grommunio-archive
systemctl list-unit-files | grep -Ei 'archive|grommunio'
ss -lntup
```

### Install Archive

The package comes from the grommunio repositories. Before installing, check the offered version, then install the real package only. In our test, grommunio-archive 1.4.9-lp160.3.32 was available.

```bash
zypper refresh
zypper search -s grommunio-archive
zypper --non-interactive install grommunio-archive
rpm -q grommunio-archive
```

[![Terminal proof: installed grommunio Archive package and version.](https://forgeone.solutions/media/grommunio-archive-2026-01-package-installation-3.png)](https://forgeone.solutions/media/grommunio-archive-2026-01-package-installation-3.png)

### Prepare database and storage

grommunio Archive uses its own database. In the tested setup it is named groarchive. Create the user and database with a strong password that is not exposed in shell history, import the provided schema and store the password in a file readable only by root and the Archive group.

```bash
install -d -m 0750 -o root -g groarchive /etc/grommunio-archive
openssl rand -base64 36 > /etc/grommunio-archive/db.secret
chown root:groarchive /etc/grommunio-archive/db.secret
chmod 0640 /etc/grommunio-archive/db.secret

mariadb -uroot <<'SQL'
CREATE DATABASE IF NOT EXISTS groarchive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'groarchive'@'localhost' IDENTIFIED BY '<strong-password>';
GRANT ALL PRIVILEGES ON groarchive.* TO 'groarchive'@'localhost';
FLUSH PRIVILEGES;
SQL

mariadb groarchive < /usr/share/grommunio-archive/db-mysql.sql
```

Data, temporary files, index data and error queues live below /var/lib/grommunio-archive. For production, plan that path like mail data: dedicated storage, monitoring, backup, capacity planning and clear restore tests.

```bash
rpm -ql grommunio-archive | sort
du -sh /var/lib/grommunio-archive
find /var/lib/grommunio-archive -maxdepth 1 -type d -printf '%p\n' | sort
```

### Configure Archive

Do not blindly paste complete sample configurations. Set the values that actually match your environment: hostname, database, storage, Sphinx, internal SMTP port, IMAP backend and public URL. In the lab, the external URL was https://mail.example.test/archive/.

```bash
cp -n /etc/grommunio-archive/grommunio-archive.conf.dist /etc/grommunio-archive/grommunio-archive.conf
cp -n /etc/grommunio-archive/config-site.dist.php /etc/grommunio-archive/config-site.php
cp -n /etc/grommunio-archive/sphinx.conf.dist /etc/sphinx/sphinx.conf

# Then set deliberately:
# hostid=mail.example.test
# listen_addr=127.0.0.1
# listen_port=2693
# mysqldb=groarchive
# mysqluser=groarchive
# queuedir=/var/lib/grommunio-archive/store
# workdir=/var/lib/grommunio-archive/tmp
# sphxhost=127.0.0.1
# sphxport=9306
```

### Enable services and ports

After configuration, start Archive, Archive SMTP, Sphinx, PHP-FPM and nginx. The important security check: piler-smtp listens locally on 127.0.0.1:2693. Users should only reach HTTPS from outside.

```bash
systemctl enable --now searchd grommunio-archive grommunio-archive-smtp
systemctl restart php-fpm nginx
systemctl is-active searchd grommunio-archive grommunio-archive-smtp php-fpm nginx
ss -lntup | grep -Ei '2693|9306|:443|:80'
```

[![Terminal proof: grommunio Archive services and local ports are active.](https://forgeone.solutions/media/grommunio-archive-2026-02-service-status.png)](https://forgeone.solutions/media/grommunio-archive-2026-02-service-status.png)

### Reverse proxy for /archive/

The web interface runs under /archive/ in this setup. nginx passes PHP files to the grommunio Archive PHP-FPM pool. The application rewrite rules for search, login, message and restore routes must also work.

```nginx
location ^~ /archive/ {
 alias /usr/share/grommunio-archive/archive/;
 index index.php;

 location ~ \.php$ {
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $request_filename;
 fastcgi_param SCRIPT_NAME $fastcgi_script_name;
 fastcgi_pass unix:/run/php-fpm/php-grommunio-archive-fpm.sock;
 }
}
```

```bash
nginx -t
systemctl reload nginx
curl -kI https://mail.example.test/archive/
```

### Grant user privileges

A user needs IMAP/POP and the Archive privilege. grommunio documents this path for Archive login and IMAP-based restore. For a test user it looks like this:

```bash
grommunio-admin user modify alice@example.test --pop3-imap true --privArchive true
grommunio-admin user query username pop3_imap privArchive --filter username=alice@example.test
```

[![Terminal proof: Archive and IMAP privileges for the test user.](https://forgeone.solutions/media/grommunio-archive-2026-03-user-privileges.png)](https://forgeone.solutions/media/grommunio-archive-2026-03-user-privileges.png)

### Validate Archive login

Log in with an enabled user under /archive/. In the lab, the path was tested through https://mail.example.test/archive/. Use the real target URL of your appliance in the guide and screenshots, not local port forwards.

[![grommunio Archive login through the production-like /archive/ path.](https://forgeone.solutions/media/grommunio-archive-2026-01-login.png)](https://forgeone.solutions/media/grommunio-archive-2026-01-login.png)

### Send a test mail and prove archiving

For the technical proof, send a test message to the user. Postfix copies it through recipient\_bcc\_maps to the internal Archive address. Then check three layers: delivery to Archive SMTP, row in groarchive and discoverability in the Sphinx index.

```bash
/usr/sbin/sendmail -t <<'MAIL'
From: Archive Sender <sender@example.test>
To: alice@example.test
Subject: ForgeOne Archive Search Validation 20260908140826
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

This message validates search and restore in grommunio Archive.
MAIL

postmap -q alice@example.test mysql:/etc/postfix/grommunio-bcc-forwards.cf
postmap -q archive.example.test lmdb:/etc/postfix/transport
mariadb groarchive -e "SELECT id, CAST(subject AS CHAR(255)) AS subject_text FROM metadata ORDER BY id DESC LIMIT 5;"
```

The delta indexer runs by cron during normal operation. For immediate lab validation, you can rotate the delta index manually and query Sphinx directly afterwards.

```bash
runuser -u groarchive -- indexer --rotate --config /etc/sphinx/sphinx.conf delta1
mariadb -h127.0.0.1 -P9306 -e "SELECT id FROM main1,dailydelta1,delta1 WHERE MATCH('ForgeOne');"
```

[![Terminal proof: mail flow, Archive database and search index.](https://forgeone.solutions/media/grommunio-archive-2026-04-mailflow-index-proof.png)](https://forgeone.solutions/media/grommunio-archive-2026-04-mailflow-index-proof.png)

### Search and open the message

In Archive, search for a unique marker from the subject. The result must show date, sender, recipient, subject and size. Open the message and verify headers, body and restore action.

[![grommunio Archive search with the test message found.](https://forgeone.solutions/media/grommunio-archive-2026-05-search-results.png)](https://forgeone.solutions/media/grommunio-archive-2026-05-search-results.png)

[![Opened archived message with restore action in grommunio Archive.](https://forgeone.solutions/media/grommunio-archive-2026-06-message-open.png)](https://forgeone.solutions/media/grommunio-archive-2026-06-message-open.png)

### Delete from mailbox and restore from Archive

A real restore test is more than seeing the message in Archive. First delete it from the mailbox, verify that it is gone, trigger Restore to mailbox in Archive and check the mailbox again.

On the production browser path, open grommunio Web afterwards, sign in as the same user and search the inbox for the unique subject. For automated acceptance, the IMAP check is more reproducible because it validates the same mailbox without browser-session side effects.

```bash
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826"
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826" delete
# Then in the Archive web interface: Restore to mailbox
python3 archive_imap_check_20260908.py "ForgeOne Archive Search Validation 20260908140826"
```

[![Restore action from the opened Archive message.](https://forgeone.solutions/media/grommunio-archive-2026-07-restore.png)](https://forgeone.solutions/media/grommunio-archive-2026-07-restore.png)

[![Terminal proof: deletion from the mailbox and restore from Archive.](https://forgeone.solutions/media/grommunio-archive-2026-05-imap-restore-proof.png)](https://forgeone.solutions/media/grommunio-archive-2026-05-imap-restore-proof.png)

### Check export, attachments and user isolation

After the basic restore, also test export and permission boundaries. A normal user should be able to find, open, download as EML and restore their own archived messages. They should not see other mailboxes. Attachments must be traceable in the opened message and must not disappear during export.

- Search as Alice for an Alice message.
- Search as Bob for the same Alice message and expect no result.
- Open a message with an attachment and check display and EML download.
- Document roles for helpdesk, auditors or administrators separately from normal users.

### Back up and restore the Archive platform

For Archive you do not back up the database only. You need at least the database dump, /var/lib/grommunio-archive, Archive configuration, Sphinx configuration, nginx route and the related key or secret files. Those files belong in the backup, but never in the article, screenshots or tickets.

```bash
mariadb-dump --single-transaction groarchive | gzip -c > /root/archive-backup-validation/groarchive.sql.gz
tar -C / -czf /root/archive-backup-validation/grommunio-archive-config-data.tar.gz \
 etc/grommunio-archive \
 etc/sphinx/sphinx.conf \
 etc/grommunio-common/nginx/locations.d/grommunio-archive.conf \
 var/lib/grommunio-archive

gzip -t /root/archive-backup-validation/groarchive.sql.gz
tar -tzf /root/archive-backup-validation/grommunio-archive-config-data.tar.gz | head
```

[![Terminal proof: backup artifacts and restore sanity check.](https://forgeone.solutions/media/grommunio-archive-2026-06-backup-restore-proof.png)](https://forgeone.solutions/media/grommunio-archive-2026-06-backup-restore-proof.png)

### Monitoring and logs

Do not monitor HTTP 200 only. For Archive, watch service state, local SMTP port, Sphinx port, database access, index age, incoming archive messages, search function and a synthetic restore test.

```bash
systemctl status grommunio-archive grommunio-archive-smtp searchd --no-pager
journalctl -u grommunio-archive -u grommunio-archive-smtp -u searchd --since "1 hour ago" --no-pager
du -sh /var/lib/grommunio-archive
mariadb groarchive -e "SELECT COUNT(*) AS archived_messages FROM metadata;"
```

## Result Validation / Technical Acceptance

| Test area | Check | Expected result | Status |
| --- | --- | --- | --- |
| Installation | Check packages and components | The component is fully installed | PASS |
| Services | Check systemd services | The required services are active | PASS |
| Network | Check ports and URLs | The component is reachable through the intended paths | PASS |
| Core function | Run standalone test | The core function works before deeper integration | PASS |
| Authentication | Test SSO/login | Login works through the intended path or is intentionally not required | PASS or N/A |
| grommunio Web | Check integration from Web | The component is reachable or usable from grommunio Web | PASS or N/A |
| End-to-end | Test real user workflow | The full workflow is reproducibly successful | PASS |
| Restart | Restart services | The function remains available after service restart | PASS |
| Logs | Check relevant logs | No blocking errors in the validated flow | PASS |

## End-to-end test in the user workflow

The end-to-end test sends a mail from user A to user B, checks delivery in grommunio Web, waits for archiving, searches the message in Archive and verifies subject, sender, recipient and timestamp.

## Result Validation / Technical Acceptance

| Test area | Check | Expected result | Status |
| --- | --- | --- | --- |
| Installation | Check packages and components | The component is fully installed | PASS |
| Services | Check systemd services | The required services are active | PASS |
| Network | Check ports and URLs | The component is reachable through the intended paths | PASS |
| Core function | Run standalone test | The core function works before deeper integration | PASS |
| Authentication | Test SSO/login | Login works through the intended path or is intentionally not required | PASS or N/A |
| grommunio Web | Check integration from Web | The component is reachable or usable from grommunio Web | PASS or N/A |
| End-to-end | Test real user workflow | The full workflow is reproducibly successful | PASS |
| Restart | Restart services | The function remains available after service restart | PASS |
| Logs | Check relevant logs | No blocking errors in the validated flow | PASS |

## Typical issues & troubleshooting

If the validated flow does not work, move from symptom to cause: check service state, read relevant logs, verify URL and redirects, then change configuration and repeat the user workflow.

## Conclusion & next step

This completes the component in the grommunio 2026 series and places it in the overall appliance path. The next article in the series builds on this validated baseline.

## Sources & further documentation

Vendor documentation used:

[**grommunio Documentation**](https://docs.grommunio.com/)

[**grommunio Archive Documentation**](https://docs.grommunio.com/)

[**gromox Documentation**](https://docs.gromox.com/)

## Hero image

[![Opened archived message with restore action in grommunio Archive.](https://forgeone.solutions/media/grommunio-archive-2026-06-message-open.png)](https://forgeone.solutions/media/grommunio-archive-2026-06-message-open.png)

## Author

Mathias Rumbold

## Category

- [grommunio & Groupware](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?category=grommunio-groupware)

## Tags

- [grommunio](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=grommunio)
- [grommunio Archive](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=grommunio-archive)
- [Groupware](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=groupware)
- [Email Archiving](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=e-mail-archivierung)
- [Native Exchange Replacement](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=native-exchange-replacement)
- [Keycloak](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=keycloak)
- [SSO](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=sso)
- [MFA](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=mfa)
- [Enterprise Linux](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=enterprise-linux)
- [Upgrade](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step?tags=upgrade)

## Plan grommunio Archive reliably

ForgeOne supports archiving, search, restore, retention and technical validation.

[Discuss archiving](https://forgeone.solutions/de/produkte/grommunio/grommunio-archive)

## grommunio 2026 Schritt für Schritt

Die Beiträge bauen chronologisch aufeinander auf: Installation, Security, SSO, Module, Betrieb, Migration, Upgrade und Client-Abnahme. Veröffentlichte Teile werden automatisch verlinkt; geplante Fortsetzungen bleiben sichtbar, aber ohne 404-Link.

1. [Install grommunio 2026.06.1: From ISO to Working Groupware](https://forgeone.solutions/en/tech/install-grommunio-2026)
2. [grommunio-antispam with Rspamd: Spam Filtering, Learning and Operations Step by Step](https://forgeone.solutions/en/tech/grommunio-antispam-rspamd-2026-step-by-step)
3. [grommunio-auth with Keycloak: SSO and central login step by step](https://forgeone.solutions/en/tech/grommunio-auth-keycloak-2026-step-by-step)
4. [Set up grommunio Meet 2026 without Keycloak and optionally add SSO](https://forgeone.solutions/en/tech/grommunio-meet-2026-step-by-step)
5. [Set Up grommunio Chat 2026: Teams, Channels, Users and Multi-Tenancy Testing](https://forgeone.solutions/en/tech/grommunio-chat-2026-step-by-step)
6. [Set Up grommunio Files and Office: Validate Files, Web Entry and Online Office](https://forgeone.solutions/en/tech/grommunio-files-office-2026-step-by-step)
7. [Set Up grommunio Archive 2026: Archive, Search and Restore Email (current part)](https://forgeone.solutions/en/tech/grommunio-archive-2026-step-by-step)
8. [grommunio MDM 2026 step by step: manage ActiveSync devices safely](https://forgeone.solutions/en/tech/grommunio-mdm-2026-step-by-step)
9. [grommunio Multitenancy 2026: organizations, domains and multiple LDAP sources](https://forgeone.solutions/en/tech/grommunio-multitenancy-2026-step-by-step)
10. [grommunio 2026 Cluster and High Availability: from multi-server lab to tested active/standby homeserver](https://forgeone.solutions/en/tech/grommunio-cluster-ha-2026-step-by-step)
11. [grommunio 2026 disaster recovery and single mailbox restore: backup, full DR and targeted mailbox recovery in the lab](https://forgeone.solutions/en/tech/grommunio-disaster-recovery-single-mailbox-restore-2026-step-by-step)
12. [Migrate IMAP mailboxes to grommunio with imapsync](https://forgeone.solutions/en/tech/grommunio-imap-migration-imapsync-2026-step-by-step)
13. [grommunio: Replace Public Folders with a functional mailbox - step by step](https://forgeone.solutions/en/tech/grommunio-public-folder-functional-mailbox-multiple-domains)
14. [grommunio Web 5.0 in the lab: settings namespace, shared mailboxes and admin impact](https://forgeone.solutions/en/tech/grommunio-web-5-0-in-the-lab)
15. [grommunio 2026.06.2 Upgrade and Technical Acceptance: Keycloak SSO, MFA, AutoDiscover and Mail Flow](https://forgeone.solutions/en/tech/grommunio-2026-06-2-upgrade-keycloak-sso-practice)
16. [grommunio native clients after Keycloak SSO: Thunderbird, Outlook, EWS, EAS and MFA explained](https://forgeone.solutions/en/tech/grommunio-native-clients-after-keycloak-sso)
17. grommunio Monitoring und Alerting im Betrieb
18. grommunio Security Hardening in der Praxis
19. grommunio Operations Troubleshooting: typische Fehler sauber eingrenzen
