Resumen crítico
- Qué pasa: tras actualizar a Plesk 18.0.73 (30-sep-2025), Plesk sube Dovecot a 2.4.1-4. Esta versión cambia la sintaxis de configuración y Dovecot no arranca si tienes instalada la extensión Warden Anti-spam and Virus Protection.
- A quién afecta: servidores Plesk con Warden (políticas por defecto o personalizadas).
- Solución temporal: sustituir el fichero /etc/dovecot/conf.d/99-warden.conf por uno compatible con Dovecot 2.4 según tu acción de spam en Warden, y reiniciar Dovecot.
- Importante: no toques Policy Settings / Blacklist / Whitelist en Warden después de aplicar el fix, o Plesk/Warden reescribirá el fichero y volverá a fallar. Warden 5.03 corrige esto de forma permanente (ETA: próxima semana según el reporte).
Síntomas y verificación
systemctl status dovecot
muestra failed o Exited with status 89 (o similar).journalctl -u dovecot
refleja errores de sintaxis/llaves en ficheros bajo /etc/dovecot/conf.d/.doveconf -n
falla con error de parseo en 99-warden.conf.
Solución temporal paso a paso
Antes de empezar: haz copia del fichero actual.
cp -a /etc/dovecot/conf.d/99-warden.conf /etc/dovecot/conf.d/99-warden.conf.bak.$(date +%F%H%M)
1) Elige el bloque correcto según tu política de spam en Warden
- Warden → Content Filter Settings → Policy Settings → Spam action = “move to spam folder” (por defecto)
Sustituye el contenido de /etc/dovecot/conf.d/99-warden.conf por:
service imap {
vsz_limit = 512MB
}
protocol imap {
mail_plugins {
imap_sieve = yes
}
}
sieve_plugins {
sieve_imapsieve = yes
sieve_extprograms = yes
}
sieve_global_extensions {
vnd.dovecot.pipe = yes
}
sieve_pipe_bin_dir = /var/qmail/popuser
sieve_script mailbox-after {
type = after
path = /var/qmail/mailnames/%{user | domain}/%{user | username}/.warden.sieve
}
sieve_script domain-after {
type = after
path = /var/qmail/mailnames/%{user | domain}/.warden.sieve
}
sieve_script global-after {
type = after
path = /var/qmail/popuser/warden-server.sieve
}
Lenguaje del código: PHP (php)
- Si tu “Spam action” es “quarantine”, “block” o “tag”
Sustituye /etc/dovecot/conf.d/99-warden.conf por:
service imap {
vsz_limit = 512MB
}
protocol imap {
mail_plugins {
imap_sieve = yes
}
}
sieve_plugins {
sieve_imapsieve = yes
sieve_extprograms = yes
}
sieve_global_extensions {
vnd.dovecot.pipe = yes
}
sieve_pipe_bin_dir = /var/qmail/popuser
sieve_script mailbox-after {
type = after
path = /var/qmail/mailnames/%{user | domain}/%{user | username}/.warden.sieve
}
sieve_script domain-after {
type = after
path = /var/qmail/mailnames/%{user | domain}/.warden.sieve
}
Lenguaje del código: JavaScript (javascript)
Nota: estas directivas usan la nueva sintaxis de Dovecot 2.4 para
mail_plugins
,sieve_plugins
,sieve_script
, etc. y sustituyen constructos antiguos que rompían el arranque.
2) Comprobar dependencias de Sieve (Pigeonhole)
Asegúrate de tener instalado el paquete de Sieve (nombre varía según distro):
- Debian/Ubuntu:
apt-get install dovecot-sieve dovecot-managesieved
- RHEL/Alma/Rocky:
dnf install dovecot-pigeonhole
3) Validar y reiniciar
doveconf -n # debe listar la config sin errores
systemctl restart dovecot
systemctl status dovecot --no-pager
Lenguaje del código: PHP (php)
Si todo está bien: ACTIVE (running).
Evitar que se revierta el fix hasta Warden 5.03
Mientras llega la actualización:
- No cambies en Warden los Policy Settings, Blacklist o Whitelist globales (re-escriben el fichero).
- Si necesitas blindar el archivo temporalmente, puedes marcarlo inmutable (con cuidado):
chattr +i /etc/dovecot/conf.d/99-warden.conf
Advertencia: recuerda quitar la inmutabilidad (chattr -i
) antes de actualizar a Warden 5.03 o si vas a modificarlo de nuevo.
Comprobaciones adicionales
- Logs:
journalctl -u dovecot -b
tras el reinicio debe estar limpio de errores de parseo. - Puertos:
ss -ltnp | grep dovecot
onetstat -tlnp
para IMAP/IMAPS. - Prueba funcional: conectar por IMAP/IMAPS y mover un correo a Spam; verificar ejecución de reglas Sieve.
Automatización (opcional) para múltiples servidores
Ejecuta bajo tu responsabilidad en entornos heterogéneos. Ajusta según política (“move” vs “quarantine/block/tag”).
#!/usr/bin/env bash
set -euo pipefail
CONF=/etc/dovecot/conf.d/99-warden.conf
BACKUP=${CONF}.bak.$(date +%F%H%M)
POLICY="${1:-move}" # move | quarantine
cp -a "$CONF" "$BACKUP"
if [[ "$POLICY" == "move" ]]; then
cat > "$CONF" <<'EOF'
service imap { vsz_limit = 512MB }
protocol imap { mail_plugins { imap_sieve = yes } }
sieve_plugins { sieve_imapsieve = yes sieve_extprograms = yes }
sieve_global_extensions { vnd.dovecot.pipe = yes }
sieve_pipe_bin_dir = /var/qmail/popuser
sieve_script mailbox-after { type = after path = /var/qmail/mailnames/%{user | domain}/%{user | username}/.warden.sieve }
sieve_script domain-after { type = after path = /var/qmail/mailnames/%{user | domain}/.warden.sieve }
sieve_script global-after { type = after path = /var/qmail/popuser/warden-server.sieve }
EOF
else
cat > "$CONF" <<'EOF'
service imap { vsz_limit = 512MB }
protocol imap { mail_plugins { imap_sieve = yes } }
sieve_plugins { sieve_imapsieve = yes sieve_extprograms = yes }
sieve_global_extensions { vnd.dovecot.pipe = yes }
sieve_pipe_bin_dir = /var/qmail/popuser
sieve_script mailbox-after { type = after path = /var/qmail/mailnames/%{user | domain}/%{user | username}/.warden.sieve }
sieve_script domain-after { type = after path = /var/qmail/mailnames/%{user | domain}/.warden.sieve }
EOF
fi
doveconf -n >/dev/null
systemctl restart dovecot
systemctl --no-pager --full status dovecot
echo "Aplicado fix temporal. Backup en $BACKUP"
Lenguaje del código: PHP (php)
Uso: bash fix-warden-dovecot.sh move
o bash fix-warden-dovecot.sh quarantine
Preguntas frecuentes
¿Puedo volver a la versión anterior de Dovecot?
No es recomendable hacer downgrade en Plesk: puede dejar el sistema en estado inconsistente. El fix de configuración es la vía segura hasta que Warden 5.03 llegue.
¿Qué versión exacta rompe la compatibilidad?
La actualización a Dovecot 2.4.1-4 (incluida en Plesk 18.0.73) introduce cambios de sintaxis que invalidan los ficheros generados por versiones previas de Warden.
¿Necesito tocar otros ficheros en /etc/dovecot/?**
En principio no. El problema está en 99-warden.conf. Aun así, ejecuta doveconf -n
para detectar si hay otros includes con sintaxis antigua.
¿Cuándo llegará Warden 5.03?
Según el reporte del proveedor, en la próxima semana desde la última actualización del aviso. 5.03 abordará este y “cualquier otro” asunto derivado del salto a Dovecot 2.4.
¿Qué pasa si cambio Policy/Blacklist/Whitelist tras aplicar el fix?
Warden reescribirá 99-warden.conf con la sintaxis antigua y Dovecot volverá a fallar. Evítalo hasta tener Warden 5.03 o, provisionalmente, protege el archivo con chattr +i
(recordando deshacerlo antes de actualizar).
Registro de cambios del incidente
- 30-sep-2025: Plesk 18.0.73; Dovecot 2.4.1-4. Dovecot no arranca con Warden.
- 06-oct-2025: se publica workaround y ETA de Warden 5.03 con fix permanente.