Назад | Перейти на главную страницу

Фильтр Roundcube, заданный ManagedSieve, не найден

Вот мой текущий фильтр:

require ["vacation"];
# rule:[Filter Test]
if allof (exists "from")
{
        vacation :days 365 :addresses "newmail@vietfeir.com" :subject "Mailbox disabled" :from "newmail@vietfeir.com" text:
The mailbox dennis@vietfeir.com is no longer active. Please reply to this message and request the new address.

Thank you.

Я заметил, что это сработает один раз, и ответ будет возвращен отправителю. На любое последующее электронное письмо не приходит ответ. Если я отправлю сообщение из другого почтового ящика, он получит ответ. Что может вызвать такое поведение?

Итак, что мне действительно нужно, так это автоответчик, который отправляется каждый раз при получении сообщения. Roundcube имеет параметр конфигурации под названием «Responses», который, как я предполагал, будет делать это, но не имеет никакого эффекта. Я написал об этом сообществу Roundcube.

ЕЩЕ ОДИН ОБНОВЛЕНИЕ

Это сбивает с толку. Через несколько часов я решил изменить сценарий. Теперь я снова получаю сообщение «сито: у пользователя нет активного скрипта в хранилище», что и вызвало этот пост изначально.

ОБНОВИТЬ

Я закомментировал расположение пользовательского скрипта в /etc/dovecot/conf.d/90-sieve.conf. После этого все фильтры, которые я создаю в Roundcube, работают правильно.

Итак, какова цель этой спецификации и что по умолчанию


Я новичок в ManagedSced. В журнале отладки указано, что у пользователя нет личных скриптов. Я указал расположение пользовательского скрипта как:

sieve = /var/mail/vhosts/%d/%u/sieve/*.sieve

Это не работает. Когда я создаю фильтр с помощью Roundcube, он находится здесь:

/var/mail/vhosts/vietfeir.com/dennis_gray/sieve

Имя файла - roundcube.sieve.

Как теперь указать местоположение пользовательского сценария? Мне не удалось определить правильный синтаксис.

У меня есть следующий тестовый сценарий, созданный Roundcube. Его имя - roundcube.sieve:

# rule:[Redirect Test]
if allof (header :contains "subject" "redirect")
{
        redirect "dev@vietfeir.com";
}

Я включил отладку и видел в журнале такие сообщения:

Apr 17 10:11:10 lmtp(d0325mgray@vietfeir.com): Debug: 0B58A06ZtlzrbAAAywx1xA: sieve: file storage: Storage path
`/var/mail/vhosts/vietfeir.com/d0325mgray/.dovecot.sieve' not found
Apr 17 10:11:10 lmtp(d0325mgray@vietfeir.com): Debug: 0B58A06ZtlzrbAAAywx1xA: sieve: User has no active script i
n storage `/var/mail/vhosts/vietfeir.com/d0325mgray/sieve'
Apr 17 10:11:10 lmtp(d0325mgray@vietfeir.com): Debug: 0B58A06ZtlzrbAAAywx1xA: sieve: User has no personal script

Созданный мной сценарий Roundcube определенно хранится в пути для пользователя, поэтому я не знаю, почему он сообщает, что это не так.

Скрипт before.sieve выполняется без проблем.

Вывод dovecot -n:

# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
# OS: Linux 4.15.0-47-generic x86_64 Ubuntu 18.04.2 LTS ext4
auth_mechanisms = plain login
log_path = /var/log/dovecot.log
mail_location = maildir:/var/mail/vhosts/%d/%n/
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapflags notify
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/deny-users
  deny = yes
  driver = passwd-file
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  sieve_before = /var/mail/before.sieve
  sieve_extensions = +notify +imapflags
  sieve_trace_dir = /var/mail
  sieve_trace_level = matching
}
postmaster_address = dev@vietfeir.com
protocols = imap lmtp sieve
service auth-worker {
  user = vmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = dovecot
}
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl = required
ssl_cert = </etc/letsencrypt/live/civicrm.vietfeir.com/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_key =  # hidden, use -P to show it
userdb {
  driver = passwd
}
userdb {
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
  driver = static
}
protocol lmtp {
  mail_plugins = " sieve sieve"
}
protocol lda {
  mail_plugins = " sieve"
}

Я доволен, что теперь понимаю, как работают эти фильтры. Когда я создаю фильтр с помощью Roundcube, он помещает его в

/var/mail/vhosts/[domain]/[user]/sieve/roundtree.sieve

Затем он создает символическую ссылку на этот файл в

/var/mail/vhosts/[domain]/[user]/.dovecot.sieve

затем при первом вызове фильтра он компилируется в .dovecot.svbin в том же каталоге.

Я могу считать это закрытым.