Hello Andrea,

There is no Sieve-related change between 3.4.8 and 3.4.9, but FreeBSD might 
apply some changes to the source code.

You can insert a different syslog message on all the lines just before 
producing SIEVE_INTERNAL_ERROR:

$ git grep -n SIEVE_INTERNAL_ERROR
sieve/message.c:128:                return SIEVE_INTERNAL_ERROR;
sieve/message.c:175:    if (!i->fileinto) return SIEVE_INTERNAL_ERROR;
sieve/message.c:208:                ret = SIEVE_INTERNAL_ERROR;
sieve/message.c:308:                ret = SIEVE_INTERNAL_ERROR;
sieve/script.c:490:        case SIEVE_INTERNAL_ERROR: return "Internal Error"; 
⇐ here not
sieve/script.c:752:                return SIEVE_INTERNAL_ERROR;
sieve/script.c:771:                return SIEVE_INTERNAL_ERROR;
sieve/script.c:787:                return SIEVE_INTERNAL_ERROR;
sieve/script.c:803:                return SIEVE_INTERNAL_ERROR;
sieve/script.c:818:                return SIEVE_INTERNAL_ERROR;
sieve/script.c:848:                    return SIEVE_INTERNAL_ERROR;
sieve/script.c:887:            ret = SIEVE_INTERNAL_ERROR;
sieve/sieve_err.et:56:ec SIEVE_INTERNAL_ERROR,  ⇐ here not

as demonstrated below.  Then recompile, install and check where exactly does 
the internal error come from (based on the concrete syslog message)

diff --git a/sieve/script.c b/sieve/script.c
index 477591b94..37ffeb9a5 100644
--- a/sieve/script.c
+++ b/sieve/script.c
@@ -814,8 +814,10 @@ static int do_action_list(sieve_interp_t *interp,
                          "Kept\n");
             break;
         case ACTION_REDIRECT:
-            if (!interp->redirect)
+            if (!interp->redirect) {
+                syslog(LOG_CRIT, "A");
                 return SIEVE_INTERNAL_ERROR;
+            }
             ret = interp->redirect(&a->u.red,
                                    interp->interp_context,
                                    script_context,

Greetings
  Дилян

-----Original Message-----
From: Andrea Venturoli <[email protected]>
Reply-To: Info <[email protected]>
To: Info <[email protected]>
Subject: Sieve Internal Error
Date: 22/10/24 11:40:55

Hello.

Last week I upgraded a FreeBSD 13.3 server to 14.1 and, at the same 
time, Cyrus IMAP 3.4.8 to 3.4.9.
Since then Sieve scripts have stopped working.

As an example, an user has a very simple script:
> # rule:[Inoltra]
> if true
> {
>         redirect "[email protected]";
> }

This was created through RoundCube and I deleted and recreated it 
without trouble.

However, it does nothing and in the logs I find:

> lmtpunix[66514]: sieve runtime error for xxxxxx id 
> <[email protected]>: Redirect 
> ([email protected]): Internal Error

I have no idea how to solve or even debug this.
Any hint?

  bye & Thanks
        av.


------------------------------------------
Cyrus: Info
Permalink: 
https://cyrus.topicbox.com/groups/info/T0ce14ced55a4536e-Mbe80f2da59066eae4b2fd19d
Delivery options: https://cyrus.topicbox.com/groups/info/subscription

Reply via email to