Op 30-5-2018 om 14:01 schreef Barry Pearce:
Hi,

Im on Manjaro linux fully up to date running

    dovecot 2.3.1-2
    pigeonhole 0.5.1-2


All is running well except I am having problems with fileinto - it refuses to use variables, and mailboxexists is also failing for me.

Im just dealing with plus addressing - should be simple but the behaviour Im experiencing isnt right.

    require ["variables", "envelope", "fileinto", "subaddress",
    "mailbox"];
    if envelope :matches :detail "to" "*" {
        set :lower "name" "${1}";
    }
    fileinto :create "folder3";


This works, but changing the last line to:

    fileinto :create "${name}";


fails and files into inbox. As does:

    fileinto :create "${1}";


It makes no difference if the fileinto is placed inside the if statement or otherwise. Using sieve-test suggests the basic scriptit should work and traces show the right action.

On a related matter the script Im actually trying to get to work is:

    require ["variables", "envelope", "fileinto", "subaddress",
    "mailbox"];

    if envelope :matches :detail "to" "*" {
        set :lower "name" "${1}";
    }
    if mailboxexists "${name}" {
            fileinto :create "${name}";
    }


But fails and files in the inbox.

This happens for a reason, which you can either find in your syslog or in the user log file (e.g. ~/.dovecot.sieve -> ~/.dovecot.sieve.log).


Modifying the script to:

    require ["variables", "envelope", "fileinto", "subaddress",
    "mailbox"];

    if envelope :matches :detail "to" "*" {
        set :lower "name" "${1}";
    }

    if mailboxexists "${name}" {
            fileinto :create "folder7";
    } else {
      fileinto :create "folder8";
    }


Files into folder8. So the mailboxexists is failing.

     ## Started executing script 'plus-addressing'
  3: envelope test
  3:   starting `:matches' match with `i;ascii-casemap' comparator:
  3:   getting `to' part from message envelope
  3:   extracting `detail' part from address <test+fold...@test.net>
  3:   matching value `folder4'
  3:     with key `*' => 1
  3:   finishing match with result: matched
  3: jump if result is false
  3:   not jumping
  4: set command
  7:   modify :lower "folder4" => "folder4"
  7:   assign `name' [0] = "folder4"
  7: mailboxexists test
  7:   mailbox `folder4' cannot be opened
  7:   some mailboxes are unavailable
  7: jump if result is false
  7:   jumping to line 9
 10: fileinto action
 10:   store message in mailbox `folder8'
     ## Finished executing script 'plus-addressing'

Here folder4 actually does exist - so the sieve-test confirms that issue.  Im at a loss as to whats going on. Im particularly perplexed by the difference in behaviour between sieve-test and the result under the live server.

You can also get a trace for the live server: https://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration#Trace_Debugging

Regards,

Stephan.

Reply via email to