Re: v2.3.6 message delete causes signal 10

2006-06-30 Thread Andrew Findlay
On Fri, May 26, 2006 at 12:11:05PM -0400, Ken Murchison wrote:

> >Cyrus IMAP v2.3.3 (with sasl v2.1.21) ran fine.  Any ideas?
> 
> Can you get a backtrace from a core dump?

I have a similar problem using 2.3.6 murder on CentOS 4.3 (very like
RHEL 4) on 32-bit x86.

In my case it is the front-end imap proxyd that crashes and the
signal is 11 (SIGSEGV) but the case seems very similar: it happens
when deleting messages and the traceback shows prot_printf() as the
active function.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208183104 (LWP 2)]
0x0809462c in prot_printf (s=0x8312250, fmt=0x80aa579 " %s ") at prot.c:960
960 prot.c: No such file or directory.
in prot.c
(gdb) where
#0  0x0809462c in prot_printf (s=0x8312250, fmt=0x80aa579 " %s ") at prot.c:960
#1  0x0805124b in cmd_store (tag=0x83126a8 "a0008", sequence=0x8312788 "8", 
usinguid=1)
at imapd.c:4169
#2  0x0805f53b in cmdloop () at imapd.c:1640
#3  0x08060687 in service_main (argc=1, argv=0x8308008, envp=0xbff0b8ac) at 
imapd.c:789
#4  0x0804c545 in main (argc=1, argv=0xbff0b8a4, envp=0xbff0b8ac) at 
service.c:532
(gdb) up
#1  0x0805124b in cmd_store (tag=0x83126a8 "a0008", sequence=0x8312788 "8", 
usinguid=1)
at imapd.c:4169
4169imapd.c: No such file or directory.
in imapd.c
(gdb) print tag
$1 = 0x83126a8 "a0008"
(gdb) print operation
$2 = {s = 0x0, len = 0, alloc = 0}
(gdb) print &operation
$3 = (struct buf *) 0x8135d20
(gdb) print tag
$4 = 0x83126a8 "a0008"
(gdb) print cmd
$5 = 0x80aa558 "UID Store"
(gdb) print sequence
$6 = 0x8312788 "8"
(gdb) print operation
$7 = {s = 0x0, len = 0, alloc = 0}

I think the problem is the last parameter to the prot_printf call:
in cmd_store() the call looks like this:

if (backend_current) {
/* remote mailbox */
prot_printf(backend_current->out, "%s %s %s %s ",
tag, cmd, sequence, operation);
pipe_command(backend_current, 65536);
return;
}

'operation' is declared as:

static struct buf operation, flagname;

but it is not assigned a value before prot_printf() is called so
when prot_printf() tries to do strlen() it gets SEGV.

I am not sure what is intended here, nor am I sure why we are doing
a STORE operation in the first place!

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: v2.3.6 message delete causes signal 10

2006-07-03 Thread Andrew Findlay
On Mon, Jul 03, 2006 at 09:24:15AM -0400, Ken Murchison wrote:

> I was thinking too hard about this.  The fix is trivial:
> 
> https://bugzilla.andrew.cmu.edu/cgi-bin/cvsweb.cgi/src/cyrus/imap/imapd.c.diff?r1=1.443.2.83&r2=1.443.2.84&f=u

That fixes it, thanks!

Andrew
-- 
---
|     From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


2.3.6: cannot administer the murder

2006-07-04 Thread Andrew Findlay
I am having great difficulty in getting cyradm to work properly
with a 2.3.6 murder. This is a 'standard' murder with separate
front-end, backends, and mupdate server. 'virtdomains: userid' is in
effect. Operations done by ordinary users are OK; I only have trouble
with admin ops.

Problem 1: creating top-level user mailboxes.

I connect to the front-end with cyradm:

/usr/local/cyrus/bin/cyradm -user zqvh_admin fe1.srv.tile

Things like listmailbox work OK. However, if I try to create
a new user on a specified backend server:

fe1.srv.tile> cm user/[EMAIL PROTECTED] ms1.srv.tile
createmailbox: Permission denied

(If I leave out the backend name, the mailbox gets created on
the frontend and then things get *really* confusing.)
This permission denied is very odd, as I can connect directly
to the mailstore ms1.srv.tile and authenticate as either the
main admin user or as the frontend proxy user and create the
mailbox with no trouble. I enable protocol logs on the
message store, and found this:

Create via front-end, as seen on the mailstore:
-- zqvh_admin Tue Jul  4 20:56:32 2006

<1152042992<6 CREATE {16+}
user/[EMAIL PROTECTED]
>1152042992>6 NO Permission denied
<11520430631152043063>* BYE LOGOUT received
Q01 OK Completed

Create directly on mailstore:
-- zqvh_admin Tue Jul  4 20:57:58 2006

<1152043078<4 RLIST "" ""
>1152043078>* LIST (\Noselect) "/" ""
4 OK Completed (0.000 secs 0 calls)
<1152043104<5 CREATE user/[EMAIL PROTECTED]
>1152043104>5 OK Completed

The only difference that I can see is that the failing operation is
using the IMAP 'literal' syntax, but operations done by users are the
same, and they work!

[ The literal syntax does look rather odd: I don't think the '+'
symbol should be there ]


I have several other problems, but I suspect they all have a similar
cause. I have turned up syslog logging to debug level and all I get
in the log is a note that the user logged in with DIGEST-MD5 auth.

Can anyone suggest what is wrong?

Thanks

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: 2.3.6: cannot administer the murder

2006-07-04 Thread Andrew Findlay
On Tue, Jul 04, 2006 at 08:28:54PM +0100, Andrew Findlay wrote:

> I am having great difficulty in getting cyradm to work properly
> with a 2.3.6 murder. This is a 'standard' murder with separate
> front-end, backends, and mupdate server. 'virtdomains: userid' is in
> effect. Operations done by ordinary users are OK; I only have trouble
> with admin ops.

>   fe1.srv.tile> cm user/[EMAIL PROTECTED] ms1.srv.tile
>   createmailbox: Permission denied

I am beginning to suspect that the problem is due to the frontend
using IMAP AUTHENTICATE where the client code uses LOGIN. The
code-paths are different, and it looks as if the imapd_userisadmin
and imapd_userisproxyadmin variables in imapd.c are not getting set
in the AUTHENTICATE case.

This probably means that there is some SASL config that I need to do
to define the admins as well as setting the admins item in imapd.conf
- auth_mech perhaps?

The frontends use DIGEST-MD5 when authenticating to the backends, but
then they use exactly the same when authenticating to the mupdate
master, and that does treat them as admins!

Can anyone suggest where to look next?

Thanks

Andrew
-- 
-----------
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: Mailstore filesystem

2006-07-05 Thread Andrew Findlay
On Wed, Jul 05, 2006 at 08:48:23AM -0400, John Madden wrote:

> How big?  ext3 STILL only supports 32000 directories within a directory.
> That gets to be quite a problem on large installs.

You can contain the fanout by enabling both fulldirhash and
hashimapspool in imapd.conf (but you will need to stop the server and
rehash everything if you do this on an existing system).

The 32000 limit applies to subdirectories, not to files so it would
only be a problem for the main spool directory of a server with a lot
of users. Hashing should raise the supportable number of users by a
factor of about 20. I suspect there are other things that would stop
you putting 600,000 users on one server...

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Murder without Kerberos?

2006-07-06 Thread Andrew Findlay
Is anyone running a Cyrus Murder without using Kerberos?

I am trying to build a Murder using DIGEST-MD5 authentication, but I
am running into weird problems and would like to know if it has been
done before. I am particularly keen to know what SASL options are
needed in this environment.

Thanks

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: Murder without Kerberos?

2006-07-06 Thread Andrew Findlay
On Thu, Jul 06, 2006 at 11:43:50AM -0400, Patrick Radtke wrote:

> We use PLAIN to authenticate between all the machines in our murder.

That is very interesting. I found that I had to enable MD5 because
the backends (and mupdate?) would not accept lower-strength
authentication. PLAIN would be preferable for several reasons.


> What version of Cyrus are you using?

2.3.6

> do you have a
> sasl_mech_list:
> line in your imapd.conf?

That is commented out at the moment, to allow MD5. I started with
PLAIN and LOGIN only.

> Can you auth using imtest and DIGEST-MD5?

Yes

> Do you support other mechanisms for users?

I would like to support PLAIN, LOGIN, and DIGEST-MD5, but the latter
requires a plaintext password database so it will probably be judged
too risky.

Thanks

Andrew
-- 
---
|         From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: Murder without Kerberos?

2006-07-07 Thread Andrew Findlay
On Thu, Jul 06, 2006 at 04:38:24PM -0400, Patrick Radtke wrote:

> I haven't tried it with 2.3.6, but PLAIN should work.

The result seems to be the same as with MD5: ordinary user connections
work fine, but admin stuff that goes through to the backends fails.
PLAIN would not work at all until I enabled TLS.

> I would suggest starting with
> sasl_mech_list: PLAIN
> 
> in all your imapd.conf files (make sure it says only PLAIN).
> 
> and make sure there is no
>  force_sasl_client_mech
> lines anywhere.
> 
> Then make sure you can use imtest (with -m PLAIN and -t ""  (for  
> tls)) to connect to backends, and then see if the backends will  
> communicate correctly.

Similar results: here, frontend is the proxy authentication ID and
[EMAIL PROTECTED] is an ordinary user. ms1.srv.tile is a backend store:

imtest -t '' -m plain -u [EMAIL PROTECTED] -a frontend ms1.srv.tile

Gave the password for 'frontend'.

Connects OK, the backend logs that [EMAIL PROTECTED] has logged
in, and an IMAP LIST command shows fred's mailboxes.

imtest -t '' -m plain -u admin -a frontend ms1.srv.tile

Gave the password for 'frontend'.

Connects and logs in OK. Backend logs that admin has logged in,
but IMAP LIST does not show anything.

imtest -t '' -m plain -u admin -a admin ms1.srv.tile

Gave the password for 'admin'.

Connects OK, backend logs that admin has logged in, and
IMAP LIST shows all mailboxes on the server.

So it looks as if the backend will not accept proxied admin accounts.

I am still stuck!

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: Murder without Kerberos?

2006-07-07 Thread Andrew Findlay
On Fri, Jul 07, 2006 at 04:53:59PM +0100, Andrew Findlay wrote:

> So it looks as if the backend will not accept proxied admin accounts.

This looks more and more like a 2.3.x issue. This comment is in
cmd_getquotaroot in imapd.c :

/* If they are an admin, they won't retain that privledge if we
 * proxy for them, so we need to refer them -- even if they haven't
 * told us they're able to handle it. */

so I suspect that all admin operations should be referred rather than
proxied, and that is not happenning.

Andrew
-- 
---
|     From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: Cyrus IMAPd 2.3.7 Released

2006-07-27 Thread Andrew Findlay
On Mon, Jul 10, 2006 at 09:19:16PM -0400, Ken Murchison wrote:

> I am pleased to announce the release of Cyrus IMAPd 2.3.7.  This release 
> should be considered late beta quality, reflecting that most large bugs 
> have been resolved, but some small buglets might still remain.

Bug 2858 is still present. The diff in the Bugzilla entry still fixes
the problem for me:

https://bugzilla.andrew.cmu.edu/show_bug.cgi?id=2858

This only affects Murder front-ends.

Andrew
-- 
---
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: performance issue (imap spool on san)

2006-07-28 Thread Andrew Findlay
On Fri, Jul 28, 2006 at 12:18:12AM -0700, Nikola Milutinovic wrote:

> So, perhaps we could state that the desired behavior of any IMAP client would 
> be to fetch only those message headers it nedds to and perhaps a bit more. In 
> case of TB, that would transalte to fetching only headers that would be 
> visible to the user and perhaps screenful of header up and down.

It also helps if the clients ask for a limited set of headers from
each message of interest. For example, Squirrelmail asks for this lot at
mailbox opening time:

(FLAGS UID RFC822.SIZE INTERNALDATE BODY.PEEK[HEADER.FIELDS (Date To
Cc From Subject X-Priority Importance Priority Content-Type)])

Cyrus caches some headers in the index file, but unfortunately does
not include Importance or Content-Type so it has to open and parse
every message file in the mailbox to satisfy the request! This is
defined in imapd/mailbox.c in struct mailbox_header_cache
mailbox_cache_headers. I am considering expanding the list in that
definition to improve efficiency: does anyone know of any problems
this might cause? (This is for a new deployment, so there are no
existing index files to worry about).

Andrew
-- 
---
|     From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html


Re: performance issue (imap spool on san)

2006-07-28 Thread Andrew Findlay
On Fri, Jul 28, 2006 at 10:37:43AM +0100, Alain Williams wrote:

> Might it not be better to have Cyrus 'learn' what header lines are needed,
> rather than just bloating the list with more headers. The set of headers
> would needed to be dynamically changable.  The points are:
> 
> 1) different IMAP clients want different sets of headers. The same IMAP
>client at different releases might change the set requested.
> 2) most individual sites run only 2 or 3 different IMAP clients, why get
>Cyrus to collect the headers that the IMAP clients at that site don't want.
> 3) most system admins don't have the skills/inclination/... to optimise
>the set of headers cached.

The problem with the learning approach is that the index is no use at
all unless it contains the same headers from every message, and it is
built at message delivery time rather than when the message is read.

I suppose some sort of 'lazy indexing' could add headers to the index
on demand, but the code changes might be significant.

Headers are not usually very large, so I would be more inclined to
the idea that the index should store every header (perhaps with a
blocklist to avoid things like Received:)

Andrew
-- 
-----------
| From Andrew Findlay, Skills 1st Ltd |
| Consultant in large-scale systems, networks, and directory services |
| http://www.skills-1st.co.uk/+44 1628 782565 |
---

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html