- Server operating system version
- CentOS 7
- Plesk version and microupdate number
- 18.0.77.x #5, 18.0.78.3
On Plesk Obsidian 18.0.78.3 (CentOS 7.9), any Sieve script using the `regex` extension
fails at compile/runtime with **"Missing regular expression support"**, even though
`require ["regex"]` parses fine. This breaks all Horde Ingo "vacation with active-from/to
date range" filters, since Ingo auto-generates `header :regex "Received" "..."` conditions
for the date window.
## Reproduction (minimal, on any sy-mail-like Plesk CentOS 7 host)
```bash
echo 'require ["regex"]; if header :regex "Subject" "^test.*$" { discard; }' > /tmp/t.sieve
sievec /tmp/t.sieve
# Output:
# t: line 1: error: invalid regular expression '^test.*$' for regex match:
# Missing regular expression support.
# t: error: validation failed.
# sievec: Fatal: failed to compile sieve script
```
## Root cause
Pigeonhole 2.4.2 switched the `:regex` matcher backend from POSIX/PCRE1 to **libpcre2**
(see upstream NEWS: "lib-sieve: Use new regular expression library in core"). When the
package is built without `libpcre2-devel` in build-deps, the regex backend is silently
disabled at compile-time — extension still registers, but runtime returns the error above.
On a current Plesk CentOS 7 host, the package linkage confirms libpcre2 is **not** linked:
```bash
$ rpm -q plesk-dovecot-pigeonhole
plesk-dovecot-pigeonhole-2.4.3-2.centos.7+p18.0.78.2+t260526.1033.x86_64
$ ldd /usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 | grep -E 'pcre'
libpcre.so.1 => /lib64/libpcre.so.1 ← PCRE1 only, no libpcre2-8
$ strings /usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 | grep "Missing regular"
Missing regular expression support ← string hardcoded in the .so
$ ldconfig -p | grep libpcre2-8
libpcre2-8.so.0 (libc6,x86-64) => /lib64/libpcre2-8.so.0 ← library IS present, just not linked
```
The library is on the host (`pcre2-9.x` from `epel/base`), it's just not in the Plesk
build's link chain.
## Same root cause as Debian bug #1121193
This is the exact issue that was reported and fixed upstream in Debian:
**[Debian #1121193 — dovecot-sieve: Regex extension ignored](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1121193)**.
Maintainer's diagnosis: "I neglected to add libpcre2-dev to build-deps for 2.4.2."
Fixed in `dovecot 1:2.4.2+dfsg1-2` (Nov 25, 2025) by adding `libpcre2-dev` to build-deps.
The Plesk CentOS 7 build never picked up that fix, and the same defect was carried into
the 2.4.3 rebuild (`+p18.0.78.2`).
## Affected
- Plesk Obsidian **18.0.77.x** (Pigeonhole 2.4.2)
- Plesk Obsidian **18.0.78.x** (Pigeonhole 2.4.3) ← current
- CentOS 7 / CloudLinux 7 builds (Debian/Ubuntu builds presumably link libpcre2 because
it's a default in those distros; couldn't verify)
## Impact
Any user of Sieve `:regex` matcher on these Plesk builds is affected. Most visible case:
Horde Ingo "vacation with date range" — Ingo's UI emits regex conditions, so end-users
cannot save a vacation message via the webmail. There is **no config-level workaround**;
the only end-user mitigation is to remove the date filter (Ingo then doesn't generate
regex). Manual sieve scripts can use the standardized `date` + `relational` +
`comparator-i;ascii-numeric` extensions instead, but Ingo will overwrite any manual
script on the next "save".
## Request
Please add `pcre2-devel` to `plesk-dovecot-pigeonhole` CentOS 7 build-deps (and rebuild).
The same single-line fix that resolved Debian #1121193.
Happy to provide more details / verify the next build on our affected host.
fails at compile/runtime with **"Missing regular expression support"**, even though
`require ["regex"]` parses fine. This breaks all Horde Ingo "vacation with active-from/to
date range" filters, since Ingo auto-generates `header :regex "Received" "..."` conditions
for the date window.
## Reproduction (minimal, on any sy-mail-like Plesk CentOS 7 host)
```bash
echo 'require ["regex"]; if header :regex "Subject" "^test.*$" { discard; }' > /tmp/t.sieve
sievec /tmp/t.sieve
# Output:
# t: line 1: error: invalid regular expression '^test.*$' for regex match:
# Missing regular expression support.
# t: error: validation failed.
# sievec: Fatal: failed to compile sieve script
```
## Root cause
Pigeonhole 2.4.2 switched the `:regex` matcher backend from POSIX/PCRE1 to **libpcre2**
(see upstream NEWS: "lib-sieve: Use new regular expression library in core"). When the
package is built without `libpcre2-devel` in build-deps, the regex backend is silently
disabled at compile-time — extension still registers, but runtime returns the error above.
On a current Plesk CentOS 7 host, the package linkage confirms libpcre2 is **not** linked:
```bash
$ rpm -q plesk-dovecot-pigeonhole
plesk-dovecot-pigeonhole-2.4.3-2.centos.7+p18.0.78.2+t260526.1033.x86_64
$ ldd /usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 | grep -E 'pcre'
libpcre.so.1 => /lib64/libpcre.so.1 ← PCRE1 only, no libpcre2-8
$ strings /usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 | grep "Missing regular"
Missing regular expression support ← string hardcoded in the .so
$ ldconfig -p | grep libpcre2-8
libpcre2-8.so.0 (libc6,x86-64) => /lib64/libpcre2-8.so.0 ← library IS present, just not linked
```
The library is on the host (`pcre2-9.x` from `epel/base`), it's just not in the Plesk
build's link chain.
## Same root cause as Debian bug #1121193
This is the exact issue that was reported and fixed upstream in Debian:
**[Debian #1121193 — dovecot-sieve: Regex extension ignored](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1121193)**.
Maintainer's diagnosis: "I neglected to add libpcre2-dev to build-deps for 2.4.2."
Fixed in `dovecot 1:2.4.2+dfsg1-2` (Nov 25, 2025) by adding `libpcre2-dev` to build-deps.
The Plesk CentOS 7 build never picked up that fix, and the same defect was carried into
the 2.4.3 rebuild (`+p18.0.78.2`).
## Affected
- Plesk Obsidian **18.0.77.x** (Pigeonhole 2.4.2)
- Plesk Obsidian **18.0.78.x** (Pigeonhole 2.4.3) ← current
- CentOS 7 / CloudLinux 7 builds (Debian/Ubuntu builds presumably link libpcre2 because
it's a default in those distros; couldn't verify)
## Impact
Any user of Sieve `:regex` matcher on these Plesk builds is affected. Most visible case:
Horde Ingo "vacation with date range" — Ingo's UI emits regex conditions, so end-users
cannot save a vacation message via the webmail. There is **no config-level workaround**;
the only end-user mitigation is to remove the date filter (Ingo then doesn't generate
regex). Manual sieve scripts can use the standardized `date` + `relational` +
`comparator-i;ascii-numeric` extensions instead, but Ingo will overwrite any manual
script on the next "save".
## Request
Please add `pcre2-devel` to `plesk-dovecot-pigeonhole` CentOS 7 build-deps (and rebuild).
The same single-line fix that resolved Debian #1121193.
Happy to provide more details / verify the next build on our affected host.