LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Опишу, как я сделал. В Thunderbird перемещаешь письмо в папку Junk, на сервере вызывается spamc (работает и в обратную сторону).

/etc/dovecot/conf.d/90-sieve.conf
...
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_plugins = sieve_imapsieve sieve_extprogram
...

/etc/dovecot/conf.d/90-sieve-extprograms.conf
...
  sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
...

/etc/dovecot/conf.d/91-imapsieve-spam.conf
plugin {
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_before = file:/usr/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_before = file:/usr/lib/dovecot/sieve/report-ham.sieve
}

/usr/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-ham.sh";

/usr/lib/dovecot/sieve/report-ham.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=ham --username=debian-spamd

/usr/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-spam.sh";


/usr/lib/dovecot/sieve/report-spam.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=spam --username=debian-spamd

# sievec /usr/lib/dovecot/sieve/report-ham.sieve
# sievec /usr/lib/dovecot/sieve/report-spam.sieve

Там ещё заморочка с этим юзером. Как я понимаю, все правила для каждого юзера отдельно считаются. Я через –username=debian-spamd делаю так, чтобы все правила через этого юзера проходили. Соответственно в postfix надо тоже spamc от этого юзера запускать и в spamd разрешить чего-то:

/etc/default/spamassassin
OPTIONS="--allow-tell --create-prefs --max-children 5 --helper-home-dir --username debian-spamd"

Исправление Legioner, :

Опишу, как я сделал. В Thunderbird перемещаешь письмо в папку Junk, на сервере вызывается spamc (работает и в обратную сторону).

/etc/dovecot/conf.d/90-sieve.conf
...
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_plugins = sieve_imapsieve sieve_extprogram
...

/etc/dovecot/conf.d/90-sieve-extprograms.conf
...
  sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
...

/etc/dovecot/conf.d/91-imapsieve-spam.conf
plugin {
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_before = file:/usr/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_before = file:/usr/lib/dovecot/sieve/report-ham.sieve
}

/usr/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-ham.sh";

/usr/lib/dovecot/sieve/report-ham.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=ham --username=debian-spamd

/usr/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-spam.sh";


/usr/lib/dovecot/sieve/report-spam.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=spam --username=debian-spamd

# sievec /usr/lib/dovecot/sieve/report-ham.sieve
# sievec /usr/lib/dovecot/sieve/report-spam.sieve

Там ещё заморочка с этим юзером. Как я понимаю, все правила для каждого юзера отдельно считаются. Я через –username=debian-spamd делаю так, чтобы все правила через этого юзера проходили. Соответственно в postfix надо тоже этого юзера в spamc передавать.

Исправление Legioner, :

Опишу, как я сделал. В Thunderbird перемещаешь письмо в папку Junk, на сервере вызывается spamc (работает и в обратную сторону).

/etc/dovecot/conf.d/90-sieve.conf
...
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_plugins = sieve_imapsieve sieve_extprogram
...

/etc/dovecot/conf.d/90-sieve-extprograms.conf
...
  sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
...

/etc/dovecot/conf.d/91-imapsieve-spam.conf
plugin {
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_before = file:/usr/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_before = file:/usr/lib/dovecot/sieve/report-ham.sieve
}

/usr/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-ham.sh";

/usr/lib/dovecot/sieve/report-ham.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=ham --username=debian-spamd

/usr/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-spam.sh";


/usr/lib/dovecot/sieve/report-spam.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=spam --username=debian-spamd

# sievec /usr/lib/dovecot/sieve/report-ham.sieve
# sievec /usr/lib/dovecot/sieve/report-spam.sieve

Там ещё заморочка с этим юзером. Как я понимаю, все правила для каждого юзера отдельно считаются. Я через –username=debian-spamd делаю так, чтобы все правила через этого юзера проходили.

Исходная версия Legioner, :

Опишу, как я сделал. В Thunderbird перемещаешь письмо в папку Junk, на сервере вызывается spamc (работает и в обратную сторону).

/etc/dovecot/conf.d/90-sieve.conf
...
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_plugins = sieve_imapsieve sieve_extprogram
...

/etc/dovecot/conf.d/90-sieve-extprograms.conf
...
  sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
...

/etc/dovecot/conf.d/91-imapsieve-spam.conf
plugin {
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_before = file:/usr/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_before = file:/usr/lib/dovecot/sieve/report-ham.sieve
}

/usr/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-ham.sh";

/usr/lib/dovecot/sieve/report-ham.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=ham --username=debian-spamd

/usr/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy"];
pipe :copy "report-spam.sh";


/usr/lib/dovecot/sieve/report-spam.sh
#!/bin/sh
exec /usr/bin/spamc --learntype=spam --username=debian-spamd

# sievec /usr/lib/dovecot/sieve/report-ham.sieve
# sievec /usr/lib/dovecot/sieve/report-spam.sieve

Там ещё заморочка с этим юзером. Как я понимаю, все правила для каждого юзера отдельно считаются. Я через –username=debian-spamd делаю так, чтобы все правила через этого юзера проходили.

Может можно без .sh скриптов обойтись, я в этом sieve не силён.