Re: CPU usage issue with Append command (cyrus 3.0.6)

2018-05-09 Thread Ben Carter


For starters:

strace one of the processes & see if it's making any system calls at all.

pstack a process multiple times to get PC samples.

gcore a process to get a core dump & take a look at the core dump with gdb.

If you know that a specific account is likely to have this issue, enable 
IMAP protocol logging for the account.  This may tell you something.


Ben

On 05/08/2018 02:04 PM, Andrew Nichols via Info-cyrus wrote:

Hello,

We've recently upgrade to cyrus 3.0.6 and we've been experiencing issue 
where imapd will get stuck in an Append and take 100% CPU time.  The 
client doesn't see anything weird.  I've tried leaving the processes to 
see if they resolve, but they never did.  Doing a kill -TERM twice will 
kill the process.   I did not notice any issues with cyrus 3.0.5, but 
we've been trying to get Xapian indexing going, so we moved to 3.0.6.


Does anyone have any information on where I can look to rectify this issue?


Here's an example of the ps output:

87556 cyrus 1 102 0 163M 24192K CPU7 7 1:56 96.71% imapd: imap: hostname> []  user.. Append (imapd)
89680 cyrus 1 102 0 163M 24280K CPU4 4 3:10 96.22% imapd: imap: hostname> []  user.. Append (imapd)
43932 cyrus 1 102 0 161M 23416K CPU5 5 1:41 96.17% imapd: imap: hostname> []  user.. Append (imapd)
81590 cyrus 1 102 0 163M 24976K CPU6 6 3:14 94.76% imapd: imap: hostname> []  user.. Append (imapd)





--
Ben Carter
University of Pittsburgh/CSSD
Network Operations Center
b...@pitt.edu
412-624-6470

Cyrus Home Page: http://www.cyrusimap.org/
List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
To Unsubscribe:
https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus

Re: Refuse IMAP without encryption

2013-04-23 Thread Ben Carter

Try adding:

allowplaintext:  0

to imapd.conf

Ben

On 04/23/2013 09:09 AM, Paul van der Vlis wrote:
 Hello,

 Is it possible to refuse IMAP-access without encryption like TLS or SSL?
 I think this would be a good idea for security.

 And I would like to make an exception for localhost for the webmail. The
 webmail (Sogo) can do TLS or SSL, but normally I don't do that for
 localhost.

 I am using Cyrus 2.4.16 from Debian 7 (Wheezy).

 With regards,
 Paul van der Vlis.




-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

Cyrus Home Page: http://www.cyrusimap.org/
List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
To Unsubscribe:
https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus


Re: Another 2.4 upgrade horror story

2012-09-25 Thread Ben Carter
Can you tell us more about your storage configuration?

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

Cyrus Home Page: http://www.cyrusimap.org/
List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
To Unsubscribe:
https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus


Re: Detect if nntp support is enabled

2009-08-07 Thread Ben Carter
andreas.moro...@sb-brixen.it wrote:
 Hello,
 
 is there a way to detect if nntp support is enabled in cyrus ?
 
 Thanks
 Andreas
 
 
 Cyrus Home Page: http://cyrusimap.web.cmu.edu/
 Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
 List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

telnet to port 119?

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

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


Re: Strange LMTP crash

2009-07-14 Thread Ben Carter
Michael Bacon wrote:
 Hi, all,
 
 I'm working through a bizarre segfault from lmtpd that occurs following a 
 rcpt to: command.  The best I can describe what's going on is that somehow 
 the NULL value stored in the authstate pointer is getting changed to 
 0x1010101 when passed to the verify_user function.  Here's a relevant GDB 
 snippet:
 
 #5  0x00025950 in process_recipient (addr=0x172fbf , namespace=0x162610,
 ignorequota=0, verify_user=0x21310 verify_user, msg=0x179c08)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpengine.c:901
 901 in /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpengine.c
 (gdb) print msg-authstate
 $7 = (struct auth_state *) 0x0
 (gdb) print *msg
 $8 = {data = 0x0, f = 0x0, id = 0x0, size = 0,
   return_path = 0x172f58 mich...@snowplow.org, rcpt = 0x172188,
   rcpt_num = 0, authuser = 0x0, authstate = 0x0, rock = 0x0,
   hdrcache = 0x17dda0}
 (gdb) down
 #4  0x0002163c in verify_user (user=0x16f950 baconm, domain=0x0,
 mailbox=0x0, quotacheck=0, authstate=0x1010101)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpd.c:1037
 
 
 So process_recipient is calling verify_user with the correct value from 
 msg-authstate (0x0, although this is odd, since by this point I should be 
 authenticated, but whatever...).  Once the process enters verify_user, 
 however, gdb shows that value as 0x1010101.
 
 At some point down the line, the code checks to see if there's a value in 
 the pointer, and because there is, it proceeds to try to dereference 
 0x1010101 (in strcmp), resulting in the SEGV.
 
 I'm still looking, but has anyone seen anything like this before?
 
 -Michael
 
 Backtrace below:
 
 
 
 #0  0xfec31b60 in strcmp () from /lib/libc.so.1
 #1  0x000a1a94 in mymemberof (auth_state=0x1010101,
 identifier=0x172ff8 baconm)
 at /opt/local/src/cyrus-imapd-2.3.14/lib/auth_unix.c:84
 #2  0x000a18d0 in auth_memberof (auth_state=0x1010101,
 identifier=0x172ff8 baconm)
 at /opt/local/src/cyrus-imapd-2.3.14/lib/auth.c:94
 #3  0x000a1110 in cyrus_acl_myrights (auth_state=0x1010101,
 acl=0x172ff8 baconm)
 at /opt/local/src/cyrus-imapd-2.3.14/lib/acl_afs.c:91
 #4  0x0002163c in verify_user (user=0x16f950 baconm, domain=0x0,
 mailbox=0x0, quotacheck=0, authstate=0x1010101)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpd.c:1037
 #5  0x00025950 in process_recipient (addr=0x172fbf , namespace=0x162610,
 ignorequota=0, verify_user=0x21310 verify_user, msg=0x179c08)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpengine.c:901
 #6  0x0002801c in lmtpmode (func=0x158024, pin=0x179a38, pout=0x179ab0, 
 fd=0)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpengine.c:1534
 #7  0x0001ec3c in service_main (argc=1, argv=0x16f618, envp=0xffbffcd4)
 at /opt/local/src/cyrus-imapd-2.3.14/imap/lmtpd.c:299
 #8  0x0001e610 in main (argc=1, argv=0xffbffccc, envp=0xffbffcd4)
 at /opt/local/src/cyrus-imapd-2.3.14/master/service.c:540
 
 
 Cyrus Home Page: http://cyrusimap.web.cmu.edu/
 Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
 List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

I already found this.  The quota that is passed to verify_user() by 
process_recipient() has to be a quota_t, not an int.  A patch was 
already submitted.

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

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


Re: Upgrade and Migration

2009-07-07 Thread Ben Carter
Carson Gaspar wrote:
 Ben Carter wrote:
 Carson Gaspar wrote:
 Ben Carter wrote:

 You have to do the _exact_ same thing with imapsync, unless you want 
 to lose email.

 As has already been pointed out, you are incorrect.  The order is:

 [Pre-create inboxes with large quotas on new server]

 1. Shut off mail delivery to old server
 2. Shut off imapd on old server.
 3. Bring up new server with imapd running
 4. Start mail delivery to new server.
 5. Start imapd on old server with a new IP address or bound to a 
 nonstandard port so MUAs will not get to it.
 6. Migrate data using imapsync.

 And your service can be down literally for only a few minutes if you 
 plan correctly.
 
 You have chosen to have users see missing data. You have made a tradeoff 

You can't see missing data ;)

 between correctness and length of downtime by bringing up your new 
 server in a client visible way before you sync your data. I (foolishly, 
 it seems) assumed that you wouldn't want your users to log in to empty 
 mailboxes, and would leave your new server non-user-visible until your 
 sync completed.
 

Yes, that's the trade-off, obviously.  We forewarned our users a week
or 2 ahead of time though, and let's face it: a lot of retained e-mail
just spins around out there, never to be accessed again.  This is
something done on the weekend and/or at night too, remember.  Also, in
addition to being forewarned, each user got a start-of-migration
message and an end-of-migration message so they knew exactly what was
happening and they knew when their migration was complete.

So, migrating like this, the users can send and receive mail with
almost no interruption, and ours seemed to be quite happy with this.
We didn't hear a peep, and we have a lot of users.  I think that it's
much more important to them to be able to send and receive e-mail
without interruption than to have their old mail present immediately. 
  And, their old mail shows up just as it was in a relatively short
period of time.

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470


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


Re: Upgrade and Migration

2009-07-06 Thread Ben Carter
Carson Gaspar wrote:
 Ben Carter wrote:
 
 If you use rsync, you have to stop everything until that finishes, 
 possibly reconstruct all mailboxes, maybe fix some other things before 
 giving people their mail functionality back and allowing mail delivery 
 to resume.
 
 That's just silly. If you're going to use rsync to migrate data, you do 
 at least one rsync while the source data is live. More than one if the 
 initial sync takes a long time. Then you go offline, do a final sync 
 (which should be very fast), and bring the new data store online.
 

The longer you wait to upgrade, the less silly it gets.  In the case 
of a move to completely new servers, doing a migration using the 
protocol can be much more appealing.

Also, we did what you suggest with rsync on our previous upgrade and 
we did an rsync every night leading up to the upgrade night, so the 
last rsync copied only a day's worth of changes.  The last rsync took 
hours even though we ran multiple rsyncs concurrently.  I think it may 
have taken as long as 6-8 hours, but I don't remember the exact timing.

 You have to do the _exact_ same thing with imapsync, unless you want to 
 lose email.
 

As has already been pointed out, you are incorrect.  The order is:

[Pre-create inboxes with large quotas on new server]

1. Shut off mail delivery to old server
2. Shut off imapd on old server.
3. Bring up new server with imapd running
4. Start mail delivery to new server.
5. Start imapd on old server with a new IP address or bound to a 
nonstandard port so MUAs will not get to it.
6. Migrate data using imapsync.

And your service can be down literally for only a few minutes if you 
plan correctly.

 Also, the ACL format in the mailboxes file might be different between 
 these 2 Cyrus versions.
 
 Might be, but I don't think it is.
 
 If you use the protocol to move the data, you don't have to worry 
 about any data structure differences etc.  You also can re-arrange 
 your partitions and so on.  Plus it re-calculates all quota usage as 
 imapsync APPENDs the messages during the migration.
 
 All true, except to the best of my knowledge none of this (except 
 repartitioning, which the OP didn't mention) matters for cyrus imapd - 
 it will Just Work(tm) on your old data store. The only exceptions are 
 database format changes (if you use bdb and you've revved the library 
 version, for example), and sieve compiled bytecode.

Yes, but that's the point: you can fix all those things that you 
always wanted to fix.  Spin out the mailboxes evenly again across 
partitions, change DB formats, use fulldirhash, go to fewer, larger 
partitions, leave unused mailboxes behind, etc.

Not to mention that the years of RENAME operations you did to move 
mailboxes left garbage behind that rsync would blindly copy over.

 
 And why do you care about quota re-calculation? The existing quota data 
 should be correct.
 

In our case, the problem was that the old code used 32-bit integers to 
track quota/usage so we had to have a cron job that zeroed usage on 
the old server for large mailboxes every once in a while.

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

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


Re: Upgrade and Migration

2009-07-06 Thread Ben Carter
Garry wrote:
 Simon Matter wrote:
 I think an easier way is to use the 'proxyservers' option to declare a
 proxy user allowed to access all mailboxes. This user can then be used by
 imapsync. I'm quite sure the archives hold detailed information on this as
 I don't remember all the details.
   
 Cool! Works, at least accessing the user mail directories ... guess I
 will still have to figure out the best way of transferring all the
 access rights to the new server, but this should at least get the mails
 copied more easily ...
 
 -garry
 
 Cyrus Home Page: http://cyrusimap.web.cmu.edu/
 Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
 List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Yes, the proxy login worked for us.  If by access rights you mean 
IMAP ACLs, the imapsync option for this is --syncacls.

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

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


Re: Upgrade and Migration

2009-07-02 Thread Ben Carter
Peter Clark wrote:
 Hello,
 
 I have an old cyrus install (2.1.16) with 30GB of data that I need to 
 migrate to a new server. My challenge is that something on that server 
 is screwed up and I have no access to PERL on that machine anymore (the 
 OS is past EOL, so it is long past time to move anyways). I have a new 
 box (2.3.14) and a bunch of trepidation about screwing this move up. I 
 have looked at the Cyrus Upgrade doc and seemingly this is a rather 
 straight forward operation.
 
 Does this make sense?
 
 1.rsync (pulling from the old server to the new):
 config directory (/var/imap)
 partition-default (/var/spool/imap)
 
 2.  /usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley 
 /var/imap/mailboxes.db.new skiplist
 
 3.  mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db
 
 4.  find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb 
 \{\} flat \{\}.new skiplist \; -exec mv \{\}.new \{\} \;
 
 5. start imapd
 
 Is that it? I just want to make sure I am not missing anything.
 
 
 Thank you,
 
 Peter
 
 
 Cyrus Home Page: http://cyrusimap.web.cmu.edu/
 Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
 List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Peter,

You might want to use imapsync to do this.  It uses the IMAP protocol, 
copies flags, can copy ACLs etc.  What I did was to create all the 
INBOXes on the new server, set up large quotas on the new server, 
point mail delivery to the new server and then use imapsync to copy 
the folders and messages.  People had full mail functionality right 
away and their folders/messages were backfilled.

At the end, I set quotas back to what I really wanted them to be.

If you use rsync, you have to stop everything until that finishes, 
possibly reconstruct all mailboxes, maybe fix some other things before 
giving people their mail functionality back and allowing mail delivery 
to resume.

Also, the ACL format in the mailboxes file might be different between 
these 2 Cyrus versions.

If you use the protocol to move the data, you don't have to worry 
about any data structure differences etc.  You also can re-arrange 
your partitions and so on.  Plus it re-calculates all quota usage as 
imapsync APPENDs the messages during the migration.

You'll have to enable proxy logins on both IMAP servers to do this 
administratively with imapsync.

I copied 1.2TB, ~65,000 users in ~28 hours by using up to 128 
concurrent imapsync processes at a time this way.

Ben

-- 
Ben Carter
University of Pittsburgh/CSSD
b...@pitt.edu
412-624-6470

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


Re: backup without stopping the imap server?

2005-06-10 Thread Ben Carter
Markus Heller wrote:
 Dear list,
 
 I would like to ask once again as I have not received a positive answer yet. 
 Does the cyrus imap server meanwhile offer the feature of a seemless / 
 checkpointed backup that does not require to stop the service?
 
 Thanks in advance,
 

If you're on Solaris, take a look at fssnap (1m).  No need to stop
anything and you'll get an exact atomic point in time copy of the
filesystem.  If you're using VxFS, look at Snapshot Filesystems - same
thing essentially.

Ben

-- 

Ben Carter
University of Pittsburgh/CSSD
[EMAIL PROTECTED]
412-624-6470
---
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: high-availability again

2005-04-15 Thread Ben Carter
zorg wrote:
Hi c
ould you give me just some more explaination of what is the stage./ 
files used during LMTP delivery have unique filenames
so if i underdstand what you saying. if the stage./ files used during 
LMTP delivery is the same for all the node of the cluster share the 
same SAN then there won't be any problem

thank
In imap/append.c (at least in our Cyrus version) there is a function 
called append_newstage, and lmtpd uses this routine for mail delivery.  
The name of the temporary file being created in this code is of the form 
pid-timestampseconds which of course is not guaranteed to be unique 
across the cluster, so  we just changed this code to create a filename 
of the form clusternode-pid-timestampseconds.

(If you truss/strace lmtpd during message delivery, you'll understand 
this right away)

Probably what should also happen in the std. code if some cluster 
support is officially added is that master should use some exclusive 
locking mechanism when it starts, to guarantee that a sysadmin's typo in 
imapd.conf won't allow cluster nodes to share a node ID, if the 
technique of configuring a cluster node ID in imapd.conf is used.  And 
probably also, a node ID should always be required (which our code does).

When we get a chance, we're going to talk to Derrick about getting some 
cluster support into the std. code.

Ben
--
Ben Carter
University of Pittsburgh/CSSD
[EMAIL PROTECTED]
412-624-6470
---
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: high-availability again

2005-04-14 Thread Ben Carter
Dave McMurtrie wrote:
Amos wrote:
What sort of changes did you have to make?

We just had to change map_refresh() to call mmap() with MAP_PRIVATE 
instead of MAP_SHARED.  Since mmap() is being called with PROT_READ 
anyway, this doesn't affect the operation of the application since the 
mapped region can never be updated.  Veritas CFS was not very 
efficient about maintaining cache coherency across all cluster nodes 
when we were using MAP_SHARED.  Everything worked, but under heavy 
load it became extremely slow.

Actually, the important code change for any active/active cluster 
configuration is to make sure the stage./ files used during LMTP 
delivery have unique filenames across the cluster.

There are some other setup differences related to this same issue such 
as symlinking /var/imap/proc, /var/imap/socket, and if you care 
/var/imap/log to local filesystem space on each cluster node.  You could 
make these filenames unique across the cluster with code changes if you 
want to make the code changes for these also.

We added a clusternode parameter to imapd.conf to accomplish this for 
the LMTP stage./ files.

Otherwise, it just worked.
Ben
--
Ben Carter
University of Pittsburgh/CSSD
[EMAIL PROTECTED]
412-624-6470
---
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: Question about lmtp.lock

2004-12-13 Thread Ben Carter
info-cyrus -- Amos Gouaux wrote:
David G Mcmurtrie wrote:
On Mon, 13 Dec 2004, Michael Loftis wrote:

There are a number of different lockfiles that cyrus uses during it's
lifecycle.  Though one thing you need to know is that it is not 
designed to
run like you're attempting to run it.  Each cyrus instance is meant 
to be
standalone, and running them all from a shared disk could very 
likely cause
mailbox corruption, as well as skiplist corruption for the seen/subs
entries and such.  The only part of cyrus that may be multi-node 
from same
storage safe is the BerkeleyDB stuff used for the mailboxes and 
deliver DBs.

The cluster filesystem honors POSIX locking semantics across all 
nodes in
the cluster.


Take a look at MURDER, that's what you'll want if you want to cluster
Cyrus.  MURDER+heartbeat with a shared storage medium provides for 
failover
(heartbeat is a separate, generic failover package).

We chose a clustered environment over murder because we wanted 
scalability
and redundancy, not just scalability.

You're using the Cyrus code from CVS (3.0 branch?), right? Based on 
what I've picked up in the past, you'll need that for such a clustered 
environment. I know Ken had done some work on such a layout, but I 
don't know what the present state is. (I think in that situation there 
were some issues with Sun's QFS, but not sure.)

Amos
We're expecting very few issues here - if any.  As long as the locking 
works across the cluster (and it is supposed to of course), the only 
issue we expect is to have to add a VxFS-specific ioctl call to the 
Cyrus code to extend the flat mailboxes file in large chunks - maybe 
just one extension operation.  That's because in Veritas' CFS, a single 
node masters a given filesystem for metadata updates.

Also, I can't recommend QFS.  In my benchmarks it was a lot slower than 
Veritas' CFS.

Ben
--
Ben Carter
University of Pittsburgh/CSSD
[EMAIL PROTECTED]
412-624-6470
---
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


deliver.db and related issues

2003-10-15 Thread Ben Carter
Cyrus: v2.1.15
OS: Solaris 8
Berkeley DB 4.1.25
I believe I read all of the recent threads on deliver.db issues in the 
archives for this mailing list, but I still have some questions:

First of all we have duplicate delivery suppression turned off.  
However, deliver.db still seems to be maintained.  I saw a post about
it being needed for sieve too but we don't plan to use sieve either.  My 
question is, can I totally disable the use of deliver.db
without making code changes?

(For now, we changed deliver.db to skiplist since BDB format was causing 
hung and 'signaled to death by 10/11' lmtpd processes)

Also, can the periodic execution of ctl_cyrusdb -c be safely disabled 
if one used a cron entry to make copies of the mailboxes file etc?

Finally, since we have no Berkely DB files, what are all the __db... 
files that get created in the 'db' subdirectory and why is one of
them 2MB in size?  Our test mailboxes file is only 72 bytes...

Thanks,

Ben

Ben Carter
University of Pittsburgh
[EMAIL PROTECTED]
412-624-6470



Re: deliver.db and related issues

2003-10-15 Thread Ben Carter
Rob Siemborski wrote:

On Wed, 15 Oct 2003, Ben Carter wrote:

 

First of all we have duplicate delivery suppression turned off.
However, deliver.db still seems to be maintained.  I saw a post about
it being needed for sieve too but we don't plan to use sieve either.  My
question is, can I totally disable the use of deliver.db
without making code changes?
   

No.
 

OK.

 

(For now, we changed deliver.db to skiplist since BDB format was causing
hung and 'signaled to death by 10/11' lmtpd processes)
Also, can the periodic execution of ctl_cyrusdb -c be safely disabled
if one used a cron entry to make copies of the mailboxes file etc?
   

You probably still want to checkpoint, since otherwise recovery will take
much longer.  Note that this is more or less a noop for skiplist.
We're thinking of having a cron job that locks the mailboxes file (flat file) and just 
copies
it to a different disk occasionally.  So, I'm assuming in this case that I wouldn't
need recovery using ctl_cyrusdb at all, since we don't care about the
deliver.db file's recovery.  Am I correct?
I'm not trying to re-invent the wheel, but just trying to simplify the Cyrus
part of our server's configuration.  I don't like ctl_cyrusdb calling BDB
routines at all (especially since we have no BDB files) because if it gets hung
or spews error messages to syslog, both of which it's done to us, we'd rather
just avoid it.  If there is a way to get ctl_cyrusdb to just backup the flat
mailboxes file and do its noop for the skiplist deliver.db that would be fine
with us too.
 

Finally, since we have no Berkely DB files, what are all the __db...
files that get created in the 'db' subdirectory and why is one of
them 2MB in size?  Our test mailboxes file is only 72 bytes...
   

Those are Berkeley DB log files.

Did you have a berkeley db setup at one time?
 

We did, but I wiped out db/*, db.backup1/* and db.backup2/* and these files
reappeared - I assume they were created by ctl_cyrusdb.
Thanks,

Ben

Ben Carter
University of Pittsburgh
[EMAIL PROTECTED]
412-624-6470




Highly available and scalable Cyrus configurations

2003-10-07 Thread Ben Carter
We currently have a single IMAP server and we are considering two 
Solaris 8/9 HA Cyrus configurations:

#1. IMAP Aggregator (murder)
#2. Cyrus on a Veritas cluster (common file system with parallel service 
groups)

After looking at the  murder design,  it seems to  me that it's a lot 
more complicated than having a Veritas cluster and simply running imapd 
and an MTA on each cluster member, because with the murder 
configuration, you probably have to end up with a load-balancing switch 
in front of murder front-end machines which in turn are in front of the 
backend mailstore machines.  mupdate has to be run and mail delivery has 
to be directed to the correct machine, etc.  Moreover, with the murder 
design, backend machines would have to be clustered anyway (2-node 
clusters probably) to eliminate the back-end machines as SPOFs.

With a cluster configuration, all machines would run sendmail and 
master/imapd and offer exactly the same service.  A load-balancing 
switch is in front of the cluster and any cluster machine can go down 
without losing any service.  I can't see any functionality that would be 
lost but I'm pretty sure that the cluster solution will be more 
expensive even though the expense of buying murder front-end machines 
would be eliminated.

So, my first question is: has anyone implemented a Veritas-based Cyrus 
service?

And my second question is: is there something I'm missing with regard to 
the Veritas cluster being a much simpler configuration to troubleshoot 
and operate and a much stronger configuration in terms of availability?

TIA for all input.

Ben Carter
University of Pittsburgh/CSSD
[EMAIL PROTECTED]
412-624-6470




Re: Highly available and scalable Cyrus configurations

2003-10-07 Thread Ben Carter


--On Tuesday, October 07, 2003 6:43 PM -0400 Rob Siemborski 
[EMAIL PROTECTED] wrote:r

On Tue, 7 Oct 2003, Ben Carter wrote:

and an MTA on each cluster member, because with the murder
configuration, you probably have to end up with a load-balancing switch
in front of murder front-end machines which in turn are in front of the
This is not the case.  Simple DNS round-robining is sufficient.

How is simple DNS round-robin sufficient?  More than one MUA caches the DNS 
lookups for its mail servers.  I know that at least one version of 
Netscape Communicator used to.  It probably still does.  Also, some webmail 
clients do.  So if a front-end is down or has not network connectivity, one 
gets hung MUAs.

design, backend machines would have to be clustered anyway (2-node
clusters probably) to eliminate the back-end machines as SPOFs.
Well, the aggregator isn't solving the HA problem.  It is doing its best
to mitigate it however (via partial failure modes).
I know.  The aggregator is better for us for at least one other reason: we 
can use our existing SCSI storage arrays.  Veritas does not support 
clustering with SCSI (changing the host SCSI initiator IDs to be different).

And my second question is: is there something I'm missing with regard to
the Veritas cluster being a much simpler configuration to troubleshoot
and operate and a much stronger configuration in terms of availability?
Well its simpler unless it breaks or has poor performance.

OK.  I thought so.

I'm not familiar with the Veritas cluster (we have had good experience
with vxfs on our backends however).  You also probably want to be sure
you're not replaceing one single point of failure (a backend) with another
(the cluster).
The key about the usability of the filesystem is that file locks need to
be obeyed throughout the entire cluster, and mmap() needs to be efficient
(and able to deal with read()  and write() being called on that file at
the same time).
That the locking needs to work is clear.  I did not think of the mmap() vs 
read/write issues.  Thanks.

Also, the murder does get you one performance advantage that the veritas
cluster (even correctly implemented) does not: it provides a large number
of read-only copies of the mailbox list that clients can use for LIST
operations, and not interfere with updates of the master copy.  With the
size of mailbox lists on systems that are considering HA options, or
moving to an aggregator configuration, this is, in fact, a serious concern
to think about.
That's another good point.  However, is this still an issue if one does not 
select the flat file format for the mailboxes file?

Has anyone implemented Cyrus IMAP with any type of clustering softwarethat 
you know of?

Thanks,

Ben

-Rob

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Rob Siemborski * Andrew Systems Group * Cyert Hall 207 * 412-268-7456
Research Systems Programmer * /usr/contributed Gatekeeper
Ben Carter
Computing Services  System Development
University of Pittsburgh
[EMAIL PROTECTED]
412-624-6470