Replies: 1 comment
|
tldr - for support on enterprise please open a support ticket |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Category: Bug — Enterprise OpenPanel/OpenAdmin, OpenMail/Roundcube SSO and upgrade migration
OpenPanel version affected
OpenPanel Enterprise
1.7.66OpenCLI upstream commit installed:
Roundcube
1.6.12, from image digest:Operating system
Rocky Linux 9.7, kernel
5.14.0-611.24.1.el9_7.x86_64, Docker 29.2.1.Severity
High — the advertised passwordless webmail entry point is completely broken on
an upgraded paid installation, and the failed path handles a Dovecot master
credential. A partial path or installer-only repair would leave either the
feature unusable or the authentication handoff unsafe.
We are a paying OpenPanel Enterprise customer. OpenPanel documents the Webmail
button as an automatic Roundcube login, and the current API documents a
single-use autologin token. On this upgraded 1.7.66 installation, the button
cannot complete that contract.
The direct Roundcube endpoint is healthy and presents its normal
username/password login. The defect is specifically the
OpenPanel/OpenAdmin-to-Roundcube passwordless integration and its
upgrade/reconciliation path.
This is not a duplicate of #942. That issue concerned SMTP sending after an
autologin session on 1.7.8 and was closed as fixed for 1.7.58. The present
report is from the Docker-based 1.7.66 line: the user cannot reach an
authenticated Roundcube inbox, the token bridge is mounted as a directory and
returns
403, and the 1.7.66 image contains a version-2.0 webmail module thatinvokes Podman even though the vendor explicitly keeps existing 1.x
installations on Docker.
No customer domains, mailbox addresses, credentials, tokens or message data are
included in this report.
Sanitized production evidence
The following checks were performed read-only. No real autologin token or
credential was published or used in the HTTP probe.
1. Roundcube itself is available
The dedicated HTTPS webmail root returns
200and renders the normal Roundcubelogin form.
The OpenPanel 1.7.66 user image renders the mailbox button as:
That is the documented passwordless entry point, not our local prefill
workaround.
2. OpenPanel 1.7.66 contains a Podman-only version-2.0 webmail module
The installed licensed
webmailmodule identifies itself as version2.0.0,with build date
2026-07-27, even though the running paid product is OpenPanelEnterprise
1.7.66.That module checks and executes the OpenMail containers with
podman. Therunning OpenPanel container has both
DOCKER_HOSTandCONTAINER_HOSTset to:That socket does not exist in the container. The 1.7.66 platform correctly
continues to run on Docker and mounts the live Docker socket at
/var/run/docker.sock. Bothpodman psanddocker psfail inside the panelcontainer because the running 1.7.66 container environment directs both clients
to the missing Podman socket.
The licensed version-2.0 handler therefore can report that Roundcube is not
running and return to the Emails page before it creates an autologin token,
even though the Docker-managed
openadmin_roundcubeandopenadmin_mailservercontainers are running.This is not evidence that the 1.7.66 server should be migrated to Podman. The
vendor's own 2.0 release material says 1.x remains on Docker and that there is
no in-place 1.x-to-2.0 runtime migration. It is evidence that a wrong-generation
module was packaged into the 1.7.66 image while the running 1.7.66 container was
also given a Podman-targeting environment.
This report describes that installed behavior without reproducing or
redistributing the licensed module source.
3. The token bridge is a directory, not a PHP file
The live OpenMail Compose file mounts:
./roundcube-plugins/autologin.php:/var/www/html/public_html/autologin.php:roBoth sides of that mount are currently directories:
The directory is empty. Roundcube therefore has no executable
public_html/autologin.phpbridge.4. The public failure is deterministic
A request using a dummy token that only matches the documented token shape
produces this redirect chain:
The first redirect appends
/because Apache seesautologin.phpas adirectory. The intermediate redirect also attempts an HTTP downgrade before
the edge proxy forces HTTPS again.
5. The other auth components are present
autologonanddovecot_impersonateplugins.autologonoverride is mounted as a real file and its host andcontainer hashes match.
and is not the passwordless feature OpenPanel documents.
This isolates the failure to the panel runtime handoff, bridge deployment and
upgrade reconciliation rather than general IMAP or Roundcube availability.
Public source evidence and upgrade root cause
1. The product documentation promises autologin
The current Webmail documentation says the Webmail link automatically logs the
mailbox into Roundcube:
OpenPanel/website/docs/panel/emails/webmail.md
Lines 5 to 10 in 57f4b69
The API documentation describes a single-use token and an
autologin.php?token=...URL:OpenPanel/website/docs/panel/999_api.md
Lines 2066 to 2093 in 57f4b69
The 1.7.58 changelog explicitly introduced OpenPanel and OpenAdmin webmail
autologin and claimed the earlier SMTP issue was fixed:
OpenPanel/website/docs/changelog/1.7.58.md
Lines 1 to 19 in 57f4b69
2. The 1.7.58 updater can create the directory state
The updater adds the Roundcube bind mount for
./roundcube-plugins/autologin.phpbut does not first create or download thatfile. It then recreates Roundcube:
OpenPanel/version/1.7.58/UPDATE.sh
Lines 112 to 130 in 57f4b69
OpenPanel/version/1.7.58/UPDATE.sh
Lines 179 to 225 in 57f4b69
On an upgraded installation where the source path does not already exist,
Docker creates it as a directory when applying the bind mount. This exactly
matches the installed source and destination state above.
The same 1.7.58 block also downloads the impersonation plugin into a nested
directory without first creating that nested directory. It does not validate
that either expected PHP file exists and is a regular file before restarting
Roundcube.
3. The 1.7.59 repair cannot remove the directory it needs to replace
The next updater was explicitly intended to fix webmail autologin on some
installations. It runs:
OpenPanel/version/1.7.59/UPDATE.sh
Lines 1 to 20 in 57f4b69
rm -fdoes not remove a directory.wget -Ocannot replace that directorywith a file. The script has no fail-fast or postcondition check and can bring
Roundcube back up with the same broken directory mount. That is exactly the
state still present after upgrade to 1.7.66.
4. OpenMail requires that mount to be a real file
The current OpenMail Compose file defines the source as a file mount and enables
the impersonation plugin:
https://github.com/stefanpejcic/OpenMail/blob/206b2bcffbc7dfeb7e3ea63d5a8a2f0004febbdb/compose.yml#L39-L55
The mounted bridge validates the opaque token, consumes a short-lived token
payload and posts a master-login credential to local Roundcube:
https://github.com/stefanpejcic/OpenMail/blob/206b2bcffbc7dfeb7e3ea63d5a8a2f0004febbdb/roundcube-plugins/autologin.php#L1-L82
The impersonation plugin then carries the master-login suffix into IMAP, SMTP
and Sieve connections:
https://github.com/stefanpejcic/OpenMail/blob/206b2bcffbc7dfeb7e3ea63d5a8a2f0004febbdb/roundcube-plugins/dovecot_impersonate/dovecot_impersonate.php#L11-L59
This is an end-to-end authentication chain. Installing only one PHP file is not
sufficient proof of repair.
5. Podman starts with 2.0; supported 1.x installations remain on Docker
The official 2.0 changelog is explicit:
OpenPanel/website/docs/changelog/2.0.0.md
Lines 1 to 9 in 57f4b69
The vendor's Podman transition announcement likewise says only new 2.0
installations move to Podman, while existing installations remain on Docker
with no forced migration:
OpenPanel/website/blog/2026-07-11-podman-switch-openpanel-2.md
Lines 12 to 18 in 57f4b69
OpenPanel/website/blog/2026-07-11-podman-switch-openpanel-2.md
Lines 127 to 131 in 57f4b69
The supported repair for 1.7.66 must therefore restore a Docker-compatible 1.x
webmail handler and environment. Pointing this production 1.x installation at
Podman would contradict the published product boundary and is not an acceptable
workaround.
6. Current end-to-end tests do not prove upgrade safety
The repository test expects the Webmail button to open an authenticated inbox,
compose and send a message, and verify receive behavior:
OpenPanel/tests/openpanel/tests/emails.spec.ts
Lines 302 to 370 in 57f4b69
That is the correct user-path test. The production state shows that the
Docker-based 1.x upgrade path also needs explicit coverage, including the
missing-file-to-directory failure and release validation that prevents
version-2.0 Podman modules from entering a 1.x image or a 1.x deployment from
being given a Podman-only environment.
Required use cases
UC1 — Existing upgraded Enterprise installation
Given a supported pre-1.7.58 Enterprise installation with OpenMail already
running on Docker, upgrading through 1.7.58, 1.7.59 and a current 1.x release
must remain on Docker and leave a working passwordless Webmail button without
manual file, Compose, socket or container repairs.
UC2 — OpenPanel user launch
A signed-in user may launch only an existing mailbox on a domain owned by that
account. The result must be an authenticated Roundcube inbox, not a login form,
redirect loop,
403, blank page or return to the Emails page.UC3 — OpenAdmin launch
If OpenAdmin advertises the same feature, an authorized administrator must be
able to launch the intended mailbox through the same supported authentication
contract. Reseller and delegated-administrator boundaries must remain tenant
isolated.
UC4 — Product-line runtime separation
Supported 1.x releases must use the Docker client, Docker environment and Docker
socket for webmail container discovery and token creation. They must not invoke
Podman or require a Podman socket.
OpenPanel 2.x may use its separate Podman implementation on a clean 2.x
installation. Version-specific modules and environment must not be mixed across
those product lines.
An unreachable Docker runtime in 1.x must produce an actionable diagnostic and
must not be reported as “Roundcube is not running” when the Docker container is
actually healthy.
UC5 — Bridge deployment and reconciliation
The source and target of the
autologin.phpmount must both be regular files.Installer and updater reconciliation must safely replace the known accidental
empty-directory artifact, validate the downloaded file and fail closed before
restarting Roundcube if any postcondition is false.
Re-running the repair must be idempotent.
UC6 — Token security
The browser receives only a cryptographically strong, opaque, short-lived,
single-use token. It must never receive a mailbox password or Dovecot master
credential.
Token payload files must be created atomically with restrictive permissions,
must not be exposed to unrelated processes, and must be consumed exactly once.
Expired, malformed, missing and replayed tokens must fail without revealing
whether a mailbox or credential exists.
Token-bearing responses must be HTTPS-only and non-cacheable, must not create an
HTTP downgrade, and must prevent token leakage through referrers or ordinary
access-log query strings.
UC7 — Full Roundcube session
After passwordless launch, the target user must be able to:
UC8 — Lifecycle and failure behavior
Suspended users, deleted or disabled mailboxes, unowned domains, wrong
mailboxes, expired tokens and stopped mail services must fail closed with
accurate user-facing and administrator diagnostics.
UC9 — Persistence
The complete integration must survive Roundcube recreation, OpenMail restart,
OpenPanel restart, host reboot and a subsequent supported OpenPanel/OpenCLI
update. No customer-maintained bind mount or template override may be required.
Sanitized upgrade reproduction
Linux 9 or another supported OS.
mailbox.
roundcube-plugins/autologin.phppath is absent; do not create it manually.1.7.66 or the candidate fixed release.
staton its source and target.module, does not set either runtime client to a Podman socket, and can list
the Docker-managed
openadmin_roundcubeandopenadmin_mailservercontainers.
mailbox.
safely.
closed.
repeat the launch and send/receive tests.
idempotent.
Also run the same functional and security matrix on a clean current 1.x
Enterprise installation. A clean-install pass does not replace the
Docker-based 1.x upgrade-path test. Test the Podman implementation separately
on a clean 2.x installation; do not use a 1.x-to-2.x runtime conversion as the
reproducer or repair.
Expected result
Roundcube session without exposing or requesting its password.
uses its separate Podman contract only on 2.x installations.
environment.
directory artifact on existing systems.
absent from ordinary logs and browser-visible content.
Actual result
version 2.0.0 and invokes Podman inside the vendor-supported Docker-based 1.x
product line.
can report the Docker-managed Roundcube container stopped even while it is
running.
autologin.phpsource and destination are empty directories.Apache
403.cannot remove it or fail closed.
passwordless path on the upgraded 1.7.66 installation.
Acceptance criteria for vendor resolution
reinstall is not required.
container discovery and token creation.
installed version-2.0 Podman module.
artifacts and clean 2.x installations.
major version/runtime does not match the product line.
stopped/missing Roundcube container.
syntax, then replace atomically.
invalid bridge.
through referrers, caches or ordinary query logging.
detail.
all pass.
on Docker.
supported 1.x regression.
Requested vendor response
Please confirm:
supported Enterprise feature in 1.7.66.
webmailmodule entered the Docker-based 1.7.66image, and how the running 1.7.66 container came to receive a Podman-targeting
environment, despite the documented product-line separation.
include an idempotent repair for the accidental
autologin.phpdirectory.should use in the meantime, without installing Podman or attempting an
unsupported 1.x-to-2.x migration.
inbox, SMTP send/receive, token replay/expiry, restart and reboot.
We can provide additional sanitized command output from the affected paid
installation if required. We will not publish customer identifiers,
credentials, password hashes, master secrets, real tokens or message content.
All reactions