Hi,

The ability of `sieve` to use variables is really nice. Two things I don't 
think you can do (but would be nice) are:

1. Test if a variable exists
2. Set a variable in a block (or maybe iterate a variable).

In my search to come up with a rule that backs up all email, I thought I could 
do with the 'pipe' extension. For various reasons I wanted to run the rule 
'once' (as I'm rsync'ing the folder) not on every single email. The "obvious" 
way seemed to be to have a counter variable, so something like:

if counter-variable
  # don't rsync as it's already been done this session
  keep;
else
  do backup
  set counter-variable

I couldn't figure out how to check a variable, all the options seem to be 
related to the message. Here's what I tried:

if envelope :matches "to" "${sender}"
{
    keep;
}
else
{
    set "backup_folder" "/home/steve/.mail/test-account";
    set "sender" "myem...@domain.net";
    pipe "/home/steve/bin/sieve-backup-all-mail.sh ${backup_folder}/INBOX 
${backup_folder}/all-mail/";
    keep;
}

The manual's example says that variables are checked against the message using 
:matches. I couldn't figure out a way to set a `counter` variable and then just 
check if it existed, or the contents of it (like "if did-backup-already == 1").

As you can see I tried to use :matches and then something that would match 
every time. This didn't work, and I think it's because I'm creating the 
"sender" variable inside the block. It doesn't appear to then exist outside the 
block?

Anyway, just some thoughts,

Steve


Reply via email to