Problem with dovecot-managesieved and sieve scripts in mysql
Hello,
I would like to ask for advice on the following things:
I have sieve scripts stored in mysql, work for LDA and imapd correctly.
When I try to connect using the client managesieve (Roungcube plugin managesieve with Thunderbird addon sieve), i receive the following error:
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts.
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Error: sieve-storage: Cannot open non-file script location for active script `dict:proxy::sieve;name=active;bindir=/var/vmail/sieve-scripts/11044167'
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Fatal: Failed to open Sieve storage.
If i change settings sieve to:
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
it works fine.
can someone please advise configuring dovecot-managesieved with saving scripts in the database.
Thank you very much
Petr Bitzan
# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.6 ext4
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
dict {
acl = mysql:/etc/dovecot/dovecot-acl-shared-dict.conf.ext
sieve = mysql:/etc/dovecot/dict-sieve-sql.conf.ext
}
first_valid_gid = 1002
first_valid_uid = 1002
last_valid_gid = 1002
last_valid_uid = 1002
mail_debug = yes
mail_location = maildir:/var/vmail/%n/Maildir
mail_plugins = " mail_log notify acl"
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 ihave
namespace {
list = children
location = maildir:%%h/Maildir:INDEX=~/shared/%%u/
prefix = shared/%%u/
separator = /
subscriptions = yes
type = shared
}
namespace inbox {
hidden = no
inbox = yes
list = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox HAM {
auto = subscribe
}
mailbox Junk {
special_use = \Junk
}
mailbox SPAM {
auto = subscribe
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
separator = /
subscriptions = yes
type = private
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
acl = vfile
acl_shared_dict = proxy::acl
quota = maildir:User quota
quota_warning = storage=95%% quota-warning 95 %u
sieve = dict:proxy::sieve;name=active;bindir=/var/vmail/sieve-scripts/%u
sieve_dir = dict:proxy::sieve;name=active;bindir=~/.sieve-bin
}
protocols = " imap lmtp sieve pop3"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}
service dict {
unix_listener dict {
group = vmail
mode = 0600
user = vmail
}
}
service lmtp {
inet_listener lmtp {
address = 127.0.0.1
port = 24
}
user = vmail
}
service managesieve-login {
inet_listener sieve {
address = xxxxxxx
port = 4190
}
}
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
unix_listener quota-warning {
user = vmail
}
user = dovecot
}
ssl_cert =
ssl_key =
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol lmtp {
mail_plugins = " mail_log notify acl quota sieve"
}
protocol lda {
mail_plugins = " mail_log notify acl quota sieve acl"
}
protocol imap {
mail_plugins = " mail_log notify acl quota imap_quota acl imap_acl"
}
protocol pop3 {
mail_plugins = " mail_log notify acl quota"
}
dict-sieve-sql.conf.ext:
connect = host=xxxxxxxxxxxxx dbname=xxxxxxxx user=xxxxxxxx password=xxxxxxxxxxxxxx
map {
pattern = priv/sieve/name/$script_name
table = user_sieve_scripts
username_field = username
value_field = id
fields {
script_name = $script_name
}
}
map {
pattern = priv/sieve/data/$id
table = user_sieve_scripts
username_field = username
value_field = script_data
fields {
id = $id
}
}
CREATE TABLE IF NOT EXISTS user_sieve_scripts
(
id
int(11) NOT NULL DEFAULT '0',
username
varchar(40) DEFAULT NULL,
script_name
varchar(255) DEFAULT NULL,
script_data
varchar(10240) DEFAULT NULL,
PRIMARY KEY (id
),
UNIQUE KEY username
(username
,script_name
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
On 10/3/2014 7:34 PM, ing. Petr Bitzan wrote:
Hello,
I would like to ask for advice on the following things:
I have sieve scripts stored in mysql, work for LDA and imapd correctly.
When I try to connect using the client managesieve (Roungcube plugin managesieve with Thunderbird addon sieve), i receive the following error:
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts.
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Error: sieve-storage: Cannot open non-file script location for active script `dict:proxy::sieve;name=active;bindir=/var/vmail/sieve-scripts/11044167'
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Fatal: Failed to open Sieve storage.
Currently, ManageSieve only supports the file storage. The dict storage can only be used to retrieve scripts, not store them. Latest Pigeonhole hg revision provides the infrastructure to implement this, but that will probably not happen soon.
Regards,
Stephan.
Thank you very much for your reply.
I have to store sieve scripts still think.
With best regards Petr Bitzan
-----Original Message----- From: dovecot [mailto:dovecot-bounces@dovecot.org] On Behalf Of Stephan Bosch Sent: Friday, October 03, 2014 11:10 PM To: ing. Petr Bitzan; dovecot@dovecot.org Subject: Re: Problem with dovecot-managesieved and sieve scripts in mysql
On 10/3/2014 7:34 PM, ing. Petr Bitzan wrote:
Hello,
I would like to ask for advice on the following things:
I have sieve scripts stored in mysql, work for LDA and imapd correctly.
When I try to connect using the client managesieve (Roungcube plugin managesieve with Thunderbird addon sieve), i receive the following error:
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts.
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Error: sieve-storage: Cannot open non-file script location for active script `dict:proxy::sieve;name=active;bindir=/var/vmail/sieve-scripts/11044167'
Oct 3 19:04:50 mail dovecot: managesieve(11044167): Fatal: Failed to open Sieve storage.
Currently, ManageSieve only supports the file storage. The dict storage can only be used to retrieve scripts, not store them. Latest Pigeonhole hg revision provides the infrastructure to implement this, but that will probably not happen soon.
Regards,
Stephan.
participants (2)
-
ing. Petr Bitzan
-
Stephan Bosch