[Dovecot] namespace and list=children inconsistencies

2010-12-15 Thread Holger Mauermann
Hi,

after setting up a new Dovecot server with shared and public namespaces,
both with hidden=no and list=children, I see some inconsistency in the
folder listing.

. NAMESPACE
* NAMESPACE (("" "/")) (("Shared/" "/")) (("Public/" "/"))
. OK Namespace completed.

. LIST "" *
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\Noselect \HasChildren) "/" "Shared/u...@do.main"
* LIST (\HasNoChildren) "/" "Shared/u...@do.main/INBOX"
* LIST (\HasChildren) "/" "Public"
. OK List completed.

. LIST "Shared/" *
* LIST (\Noselect \HasChildren) "/" "Shared/u...@do.main"
. OK List completed.

. LIST "Public/" *
. OK List completed.

With LIST "Shared/" the other users INBOX is missing, so with namespace
capable clients like Thunderbird it is impossible to see or subscribe
this folder.

The "Public/" namespace has some subfolders, but only for other
acl_groups and I don't have rights to access any of them. So the LIST
"Public/" looks good. However, with LIST "" * it is shown without the
trailing slash and with \HasChildren where it should be hidden.

Here is the relevant doveconf -n output:
...
namespace {
  list = children
  location = maildir:%%h/Maildir:INDEX=~/shared/%%u
  prefix = Shared/%%u/
  separator = /
  subscriptions = no
  type = shared
}
namespace {
  list = children
  location = cydir:/var/spool/imap/public:INDEX=~/public
  prefix = Public/
  separator = /
  subscriptions = no
  type = public
}
...



Re: [Dovecot] namespace and list=children inconsistencies

2010-12-16 Thread Holger Mauermann
Am 16.12.2010 13:39, schrieb Charles Marcus:
> On 2010-12-15 7:38 PM, Holger Mauermann wrote:
>> Here is the relevant doveconf -n output:
>> ...
> 
> Please always include *full* doveconf -n output, not just what you
> *think* is relevant... its not that much more, and includes extra info
> that people sometimes forget - like dovecot version (and filesystem, etc)...

You're right, I forgot at least to include the dovecot version ;-)
Here is the full doveconf -n output:

# 2.0.8: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.35-23-virtual x86_64 Ubuntu 10.10
auth_mechanisms = plain login digest-md5 cram-md5 apop
debug_log_path = /var/log/dovecot/debug.log
disable_plaintext_auth = no
info_log_path = /var/log/dovecot/info.log
lmtp_save_to_detail_mailbox = yes
log_path = /var/log/dovecot/error.log
mail_location = maildir:~/Maildir
mail_plugins = " quota acl listescape zlib lazy_expunge"
namespace {
  hidden = yes
  list = no
  location = maildir:~/expunged
  prefix = .EXPUNGED/
  separator = /
  type = private
}
namespace {
  list = children
  location = maildir:%%h/Maildir:INDEX=~/shared/%%u
  prefix = Shared/%%u/
  separator = /
  subscriptions = no
  type = shared
}
namespace {
  list = no
  location = cydir:/var/spool/imap/public:INDEX=~/public
  prefix = Public/
  separator = /
  subscriptions = no
  type = public
}
namespace {
  inbox = yes
  location =
  prefix =
  separator = /
  type = private
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  acl = vfile
  acl_shared_dict = file:/var/spool/imap/shared-mailboxes.dict
  lazy_expunge = .EXPUNGED/
  quota = dict:Mailbox::file:%h/Maildir/dovecot-quota
  quota_rule = *:storage=1G
  quota_rule2 = Trash:storage=+50M
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
}
protocols = imap pop3 sieve
service auth {
  unix_listener auth-exim {
user = Debian-exim
  }
  unix_listener auth-userdb {
user = vmail
  }
}
service lmtp {
  inet_listener lmtp {
port = 24
  }
}
service managesieve-login {
  inet_listener sieve {
port = 4190
  }
  inet_listener sieve_deprecated {
port = 2000
  }
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol lmtp {
  mail_plugins = " quota acl listescape zlib lazy_expunge sieve"
}
protocol lda {
  mail_plugins = " quota acl listescape zlib lazy_expunge sieve"
}
protocol imap {
  mail_plugins = " quota acl listescape zlib lazy_expunge imap_quota
imap_acl imap_zlib"
}


Re: [Dovecot] namespace and list=children inconsistencies

2010-12-16 Thread Holger Mauermann
Am 16.12.2010 01:38, schrieb Holger Mauermann:
> With LIST "Shared/" the other users INBOX is missing, so with namespace
> capable clients like Thunderbird it is impossible to see or subscribe
> this folder.

After restarting Thunderbird now I can see and subscribe the other users
INBOX. However, I still think that a "LIST Shared/ *" should include
*all* sub mailboxes. Or am I wrong?

> The "Public/" namespace has some subfolders, but only for other
> acl_groups and I don't have rights to access any of them. So the LIST
> "Public/" looks good. However, with LIST "" * it is shown without the
> trailing slash and with \HasChildren where it should be hidden.

I found a solution for this annoying "Public/" namespace vs. nonexistent
"Public" mailbox behavior:

I'm trying to setup per-domain public folders. First I used
location=cydir:/path/%d/public:..., but Dovecot doesn't expand the %d
variable inside type=public namespaces.

Next I used location=cydir:/path/public:... and created
/path/public/do.main and a dovecot-acl file inside with content
"group=do.main lrswi". This works fine for users with the
acl_groups=do.main extra field, they see their Public/ namespace. But
users without a group or users in a group for that no public folder
exists are wondering why they see a "Public" mailbox, which gives an
error on select or subscribe...

Now I return CONCAT('cydir:/path/', `domain`, '/public:INDEX=~/public')
AS `namespace/pub/location` in the user_query, which works fine for all
users in all domains :-) as long as there is either no subfolder or a
subfolder/dovecot-acl with "anyone lrs" in /path/do.main/public.

Holger


Re: [Dovecot] namespace and list=children inconsistencies

2010-12-17 Thread Holger Mauermann
Am 17.12.2010 01:35, schrieb Willie Gillespie:
> Eh, hard to say.
> 
> From RFC 3501:
> ... A non-empty
> reference name argument is the name of a mailbox or a level of
> mailbox hierarchy, and indicates the context in which the mailbox
> name is interpreted.
> 
> But, later on it says:
> Note: The interpretation of the reference argument is
> implementation-defined.

I really should read RFC 3501 completely. It's been many years since I
tried to understand the now obsolete RFC 2060 ;-) I always thought that
  LIST "some/mail/box/" "*"
  LIST "" "some/mail/box/*"
  LIST "some/mail/" "box/*"
are all equivalent.

> and:
> A client SHOULD NOT use such a reference argument except
> at the explicit request of the user.

Hmmm, but this paragraph starts with:

  If the reference argument is not a level of mailbox hierarchy (that
  is, it is a \NoInferiors name), and/or the reference argument does not
  end with the hierarchy delimiter, it is implementation-dependent how
  this is interpreted. ... A client SHOULD NOT use such a reference
  argument except at the explicit request of the user.

So Shared/ seems to be a valid reference argument that may be used by
clients, because it is a level of mailbox hierarchy, it is not a
\NoInferiors name and it ends with the hierarchy delimiter.

Anyway, it works now. Thunderbird always uses "" as reference argument
to list the shared namespace. And for LIST "" "Shared/*" dovecot returns
all sub mailboxes. However, I still don't know why TB first displayed
only Shared/u...@do.main without the shared mailboxes...

Holger


Re: [Dovecot] stat(/..../Maildir/cur) failed: No such file or directory

2010-12-19 Thread Holger Mauermann
Am 19.12.2010 08:02, schrieb Lystopad Olexandr:
> ...
> mail_location = maildir:~/Maildir
> ...
> user_query = SELECT homedir as home, uid, gid, maildir as mail FROM accounts 
> WHERE login = '%u';
> ...
> Dec 19 08:50:05 server dovecot: lda: Debug: auth input: 3m...@somedomain.priv 
> home=/d/mail/somedomain.priv/3mail uid=26 gid=26 
> mail=/d/mail/somedomain.priv/3mail/Maildir

Have you tried

  SELECT homedir as home, uid, gid FROM accounts WHERE login = '%u'

in your user_query? If mail_location is the same for all users you don't
need to override it with "SELECT ... maildir as mail...". But if you do
you have to prefix it with the mailbox format.

Holger


Re: [Dovecot] v2.0.9 released

2011-01-13 Thread Holger Mauermann
Am 13.01.2011 12:21, schrieb Timo Sirainen:
> I'm still lagging behind in my email, but I guess it's time to release
> v2.0.9 anyway.
>   ...
>   - Maildir: Fixed renaming child mailboxes when namespace had a prefix.

Renaming a mailbox that has children still doesn't work for me with
v2.0.9 Any ideas?

. CREATE mailbox
. OK Create completed.
. CREATE "mailbox/sub mailbox"
. OK Create completed.
. LIST "" *
* LIST (\HasChildren) "/" "mailbox"
* LIST (\HasNoChildren) "/" "mailbox/sub mailbox"
. OK List completed.
. RENAME mailbox mail-box
. NO [SERVERBUG] Internal error occurred. Refer to server log for more 
information. [2011-01-13 17:48:15]
. LIST "" *
* LIST (\HasNoChildren) "/" "mail-box"
* LIST (\HasNoChildren) "/" "mailbox/sub mailbox"
. OK List completed.

# cat /var/log/mail.err
Jan 13 17:48:15 dovecot dovecot: imap(u...@do.main): Error: 
rename(/var/spool/imap/do.main/user/Maildir/.mailbox/sub mailbox, 
/var/spool/imap/do.main/user/Maildir/.mail-box/sub mailbox) failed: No such 
file or directory

# ls -alF /var/spool/imap/do.main/user/Maildir/
drwx--  5 vmail vmail  4096 2011-01-13 17:47 .mail-box/
drwx--  5 vmail vmail  4096 2011-01-13 17:47 .mailbox.sub mailbox/


Holger


Re: [Dovecot] v2.0.9 released

2011-01-13 Thread Holger Mauermann
Am 13.01.2011 18:58, schrieb Timo Sirainen:
> On 13.1.2011, at 19.20, Holger Mauermann wrote:
> 
>> Renaming a mailbox that has children still doesn't work for me with
>> v2.0.9 Any ideas?
> 
> I can't reproduce. Show your dovecot -n output?

Here it is:

# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.35-24-virtual x86_64 Ubuntu 10.10 
auth_mechanisms = plain login digest-md5 cram-md5 apop
disable_plaintext_auth = no
lmtp_save_to_detail_mailbox = yes
mail_location = maildir:~/Maildir
mail_plugins = " quota acl listescape zlib lazy_expunge"
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
namespace {
  hidden = yes
  list = no
  location = maildir:~/expunged
  prefix = .EXPUNGED/
  separator = /
  type = private
}
namespace {
  list = children
  location = maildir:%%h/Maildir:INDEX=~/shared/%%u
  prefix = Shared/%%u/
  separator = /
  subscriptions = no
  type = shared
}
namespace {
  list = children
  location = maildir:/var/spool/imap/public:INDEX=~/public
  prefix = Public/
  separator = /
  subscriptions = no
  type = public
}
namespace {
  inbox = yes
  location = 
  prefix = 
  separator = /
  type = private
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  acl = vfile
  acl_shared_dict = file:/var/spool/imap/shared-mailboxes.dict
  lazy_expunge = .EXPUNGED/
  quota = dict:Mailbox::file:%h/Maildir/dovecot-quota
  quota_rule = *:storage=1G
  quota_rule2 = Trash:storage=+50M
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
}
protocols = imap pop3 sieve
rejection_subject = Mail delivery failed: %s
service auth {
  unix_listener auth-exim {
user = Debian-exim
  }
  unix_listener auth-userdb {
user = vmail
  }
}
service lmtp {
  inet_listener lmtp {
port = 24
  }
}
service managesieve-login {
  inet_listener sieve {
port = 4190
  }
  inet_listener sieve_deprecated {
port = 2000
  }
}
ssl_cert = 

Re: [Dovecot] v2.0.9 released

2011-01-13 Thread Holger Mauermann
Am 13.01.2011 19:42, schrieb Holger Mauermann:
> Am 13.01.2011 18:58, schrieb Timo Sirainen:
>> On 13.1.2011, at 19.20, Holger Mauermann wrote:
>>
>>> Renaming a mailbox that has children still doesn't work for me with
>>> v2.0.9 Any ideas?
>>
>> I can't reproduce. Show your dovecot -n output?
> 
> Here it is:
> 
> # 2.0.9: /etc/dovecot/dovecot.conf
> # OS: Linux 2.6.35-24-virtual x86_64 Ubuntu 10.10 
> ...
> mail_plugins = " quota acl listescape zlib lazy_expunge"
> ...

Ok, seems  to be a  bug in  the listescape plugin.  If I remove  it from
mail_plugins renaming  works fine.  Unfortunately, that's not  an option
because some users have folders with '.' in its name.

Another issue that  is probably related: if a user  shares a _sub_folder
to other users,  it is not visible for them  while the listescape plugin
is enabled. It works only for root level folders.

Holger


Re: [Dovecot] v2.0.9 released

2011-01-14 Thread Holger Mauermann
Am 14.01.2011 12:35, schrieb Mark Alan:
> Ubuntu (Debian based) server < http://www.ubuntu.com/server >
> 
> Main distro has Dovecot 1.2.12, but there are ppa's (a kind of user
> maintained, but publicly available repository) with the latest Dovecot
> (currently 2.0.9).
> 
> To install Dovecot 2.0.9, using Mauermann's ppa, you just execute:
> sudo add-apt-repository ppa:mauermann/testing
> sudo apt-get update
> sudo apt-get install dovecot-imapd dovecot-pop3d

Nice to hear that some people other than me are using my PPA :-)
But I recommend using my main "stable" PPA:

sudo add-apt-repository ppa:mauermann/ppa

However, above steps currently only work for Ubuntu 10.10 Maverick. The
packages should work in Lucid and Natty too (feedback welcome), but you
may have to manually edit /etc/apt/sources.list (or
/etc/apt/sources.list.d/mauermann-xx-yy.list)

Holger


Re: [Dovecot] v2.0.9 released

2011-01-14 Thread Holger Mauermann
Am 14.01.2011 10:52, schrieb Spyros Tsiolis:
> Quick question :
> 
> Is "listescape" a plugin that allows people own folders with
> period (".")in them ?
> AFAIK (and on mozilla thunderbird) one cannot have these :
> 
> "." "/" "\" "*" and "^"

With the listescape plugin you can have almost any character in mailbox
names. See http://wiki2.dovecot.org/Plugins/Listescape

Holger


[Dovecot] Panic: file mailbox-list-maildir.c: line 133: unreached

2011-01-16 Thread Holger Mauermann
I converted personal mailboxes from maildir to sdbox. Public mailboxes
are still in maildir format, because I need per-user seen flags.
However, if the user is subscribed to public mailboxes and the client
sends 'LIST (SUBSCRIBED) "" *', dovecot crashes with:

imap(hol...@mauermann.org): Panic: file mailbox-list-maildir.c: line 133: 
unreached
imap(hol...@mauermann.org): Error: Raw backtrace: 
/usr/lib/dovecot/libdovecot.so.0(+0x3756a) [0x7f25f7b1456a] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x375b6) [0x7f25f7b145b6] -> 
/usr/lib/dovecot/libdovecot.so.0(+0x118ca) [0x7f25f7aee8ca] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(+0x35cce) [0x7f25f7d8acce] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(mailbox_list_is_valid_pattern+0x26) 
[0x7f25f7d80146] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x33a31) 
[0x7f25f7d88a31] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(fs_list_iter_next+0x2f) 
[0x7f25f7d885cf] -> /usr/lib/dovecot/modules/lib01_acl_plugin.so(+0xb658) 
[0x7f25f6f2c658] -> 
/usr/lib/dovecot/libdovecot-storage.so.0(mailbox_list_iter_next+0xa) 
[0x7f25f7d7faba] -> dovecot/imap(+0xc529) [0x7f25f824d529] -> 
dovecot/imap(cmd_list_full+0x43e) [0x7f25f824e48e] -> dovecot/imap(+0x10dad) 
[0x7f25f8251dad] -> dovecot/imap(+0x10e8d) [0x7f25f8251e8d] -> 
dovecot/imap(client_handle_input+0x135) [0x7f25f82520c5] -> 
dovecot/imap(client_in
put+0x62) [0x7f25f8252a22] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_call_io+0x48) [0x7f25f7b1f898] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_handler_run+0x9f) [0x7f25f7b2080f] -> 
/usr/lib/dovecot/libdovecot.so.0(io_loop_run+0x28) [0x7f25f7b1f828] -> 
/usr/lib/dovecot/libdovecot.so.0(master_service_run+0x13) [0x7f25f7b0dcf3] -> 
dovecot/imap(main+0x30f) [0x7f25f825b07f] -> 
/lib/libc.so.6(__libc_start_main+0xfe) [0x7f25f736cd8e] -> 
dovecot/imap(+0x9279) [0x7f25f824a279]
master: Error: service(imap): child 32285 killed with signal 6 (core dumped)

This does not happen with 'LSUB  "" *' or with personal mailboxes in
maildir format.

Below is the gdb and doveconf -n output:

(gdb) bt full
#0  0x7f25f7381ba5 in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x7f25f73856b0 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x7f25f7b1457d in default_fatal_finish (type=, 
status=0) at failures.c:187
backtrace = 0x7f25f980d468 "/usr/lib/dovecot/libdovecot.so.0(+0x3756a) 
[0x7f25f7b1456a] -> /usr/lib/dovecot/libdovecot.so.0(+0x375b6) [0x7f25f7b145b6] 
-> /usr/lib/dovecot/libdovecot.so.0(+0x118ca) [0x7f25f7aee8ca] -> 
/usr/lib/do"...
#3  0x7f25f7b145b6 in i_internal_fatal_handler (ctx=0x7fff36a6acc0, 
format=, args=) at failures.c:645
status = 0
#4  0x7f25f7aee8ca in i_panic (format=0x7e1d ) at failures.c:259
ctx = {type = LOG_TYPE_PANIC, exit_status = 0, timestamp = 0x0}
args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 
0x7fff36a6ad90, reg_save_area = 0x7fff36a6acd0}}
#5  0x7f25f7d8acce in maildir_is_valid_pattern (list=, 
pattern=) at mailbox-list-maildir.c:133
No locals.
#6  0x7f25f7d80146 in mailbox_list_is_valid_pattern (list=0x7f25f98422d0, 
pattern=0x7f25f980d410 "public") at mailbox-list.c:651
_data_stack_cur_id = 0
ret = 
#7  0x7f25f7d88a31 in fs_list_subs (ctx=0x7f25f9818b70) at 
mailbox-list-fs-iter.c:683
node = 
flags = MAILBOX_SUBSCRIBED
ns = 
path = 
dir = 
fname = 
storage_name = 0x7f25f980d410 "public"
len = 0
st = {st_dev = 139801076486872, st_ino = 19, st_nlink = 
139801053739543, st_mode = 128, st_uid = 0, st_gid = 1, __pad0 = 0, st_rdev = 
139801046211004, st_size = 206158430224, st_blksize = 140734110281536, 
  st_blocks = 140734110281344, st_atim = {tv_sec = 579820584960, 
tv_nsec = 139801076651024}, st_mtim = {tv_sec = 139801076728920, tv_nsec = 
139801076766928}, st_ctim = {tv_sec = 139801076486872, 
tv_nsec = 536871048}, __unused = {128, 139801076731466, 
139801046189669}}
#8  0x7f25f7d885cf in fs_list_iter_next (_ctx=0x7f25f9818b70) at 
mailbox-list-fs-iter.c:356
_data_stack_cur_id = 0
info = 
__FUNCTION__ = "fs_list_iter_next"
#9  0x7f25f6f2c658 in acl_mailbox_list_iter_next_info (_ctx=) at acl-mailbox-list.c:205
alist = 0x7f25f9835410
#10 acl_mailbox_list_iter_next (_ctx=) at 
acl-mailbox-list.c:372
ctx = 0x7f25f98163f0
info = 0x7f25f98518d0
ret = 
#11 0x7f25f7d7faba in mailbox_list_iter_next (ctx=0x7e1d) at 
mailbox-list.c:1029
info = 
#12 0x7f25f824d529 in list_namespace_mailboxes (cmd=) 
at cmd-list.c:377
info = 0x80
flags = 536871048
str = 0x7f25f980d2d8
ret = 1
ns = 0x0
name = 0x7f25f98518d0 "Public/public"
#13 cmd_list_continue (cmd=) at cmd-list.c:792
_data_stack_cur_id = 4
ctx = 0x7f25f9848458
#14 0x7f25f824e48e in cmd_list_full (cmd=0x7f25f9848350, lsub=false) at 
cmd-list.c:957
  

Re: [Dovecot] Dovecot2 + Sieve

2011-01-28 Thread Holger Mauermann
Am 28.01.2011 11:10, schrieb Philipp v. Strobl-Albeg:
> Am 28.01.2011 11:03, schrieb Ralf Hildebrandt:
>> * Philipp v. Strobl-Albeg:
>>
>>> Everything else works fine, except the program "mail". I dont know if
>>> there is a coherence but a typical Mailserver-Test "date|mail -s test
>>> em...@example.com" also don't sent a message to postfix.
>> find / -name sendmail
>>
>> what is the output?
>>
> 
> find / -name sendmail Output:
> 
> /etc/webmin/sendmail
> /usr/libexec/webmin/blue-theme/sendmail
> /usr/libexec/webmin/caldera/sendmail
> /usr/libexec/webmin/sendmail
> /usr/libexec/webmin/mscstyle3/sendmail
> /usr/sbin/sendmail
> /usr/lib/sendmail

Try

  echo "Subject: Test" | /usr/sbin/sendmail em...@example.com

and watch your sendmail log.