9 messages in net.sourceforge.lists.courier-users[courier-users] Mailbox locations for...
FromSent OnAttachments
Robin WhittleJun 25, 2001 9:14 am 
mr...@eproinet.comJun 25, 2001 9:45 am 
MONZJun 25, 2001 1:13 pm 
Sam VarshavchikJun 25, 2001 2:31 pm 
Sam VarshavchikJun 25, 2001 2:31 pm 
Robin WhittleJul 2, 2001 8:54 am 
Sam VarshavchikJul 2, 2001 2:50 pm 
Robin WhittleJul 2, 2001 7:28 pm 
Sam VarshavchikJul 2, 2001 7:42 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[courier-users] Mailbox locations for Postfix -> MaildropActions...
From:Robin Whittle (rw@firstpr.com.au)
Date:Jul 2, 2001 8:54:55 am
List:net.sourceforge.lists.courier-users

Thanks for the messages in response to my original queries a week ago. Thanks Wietse and Sam for these programs!

I figured out where Courier IMAP expects its mailbox files to be - and it also took me a while to get the Postfix -> Courier Maildrop combination to deliver mail to where Courier IMAP expects it.

This message reports on what I found.

This is going to both the Postfix and the Courier lists, since I was not sure which program I had not properly configured.

I started writing this as a question, but I solved it - so I am presenting it as an answer for other souls who travel this way. The trick is the config files in Maildrop before it is compiled. The config setting for Postfix does not seem to affect Maildrop's behaviour - at least for me.

My newly compiled Maildrop executable is four times longer than the original - and I haven't figured out why. Does this matter? I wonder if it is full of debugging guff or just not using shared libraries, in which case, it makes little or no difference to performance.

I have found that Courier IMAP, as I installed it on my RH7.1 system (by using rpm to compile it to an RPM package, and then installing the package without any changes) has the following arrangements for user blah:

/home/blah/Maildir/

This needs to be created by some means (say by the useradd and /etc/skel system). At my current stage of testing things, I use Courier's maildirmake binary:

http://www.flounder.net/~mrsam/maildrop/maildirmake.html

as the user blah, to make this directory. From /home/blah/ simply:

maildirmake Maildir

This /home/blah/Maildir/ directory is a Maildir format directory. Its owner is blah and it contains three subdirectories which, like itself, are chmod 700.

/home/blah/Maildir/cur /home/blah/Maildir/new /home/blah/Maildir/tmp

Together, these directories constitute a Maildir format "Inbox" which I can access with both Netscape 4.77 and Outlook Express.

Furthermore, using the client (Netscape or Outlook Express) I can create mailboxes within this directory, and then mailboxes in those.

(Netscape is configured as per: http://www.inter7.com/courierimap/README.imap.html )

I did not build Courier IMAP with the --enable-workarounds-for-imap-client-bugs option - and I am getting quite a bit of flakiness with Netscape which I assume will be fixed when I recompile Courier IMAP with this option set.

Each of these of these mailboxes is a Maildir directory with its three sub-directories.

To the client they appear as a tree of directories and sub-directories, such as:

Inbox | |--aaa | |--Trash | |--xxx | |--yyy | zzz

Physically in the file system, they are as follows, not counting each directory's three subdirectories and two files which Courier IMAP puts in each one.

/home/blah/Maildir/.aaa /home/blah/Maildir/.Trash /home/blah/Maildir/.yyy /home/blah/Maildir/.yyy.zzz

Each can contain both messages and mailboxes.

My problem was that I had not been able to get Postfix -> Maildrop to deliver mail to the correct location: the Maildir format directory:

/home/blah/Maildir/

(I want to use Maildir for its filtering capabilities, I think, but I haven't got that far yet. Postfix can deliver directly to Maildir directories. )

If I create a Maildir format directory at:

/var/spool/mail/blah/

then Postfix -> Maildrop delivers the incoming emails there.

There is nothing to configure at run-time for Courier Maildrop, as far as I know. All configuration is done by editing config.h files and recompilation. The relevant entries in /etc/postfix/main.cf are:

home_mailbox = Maildir/ << This seems to have no effect!

mailbox_command = /usr/bin/maildrop

local_destination_concurrency_limit=1

(Because Maildrop can only deliver one email at a time and so should not be asked to deliver to two or more local mailboxes at the same time.)

I haven't used "mailbox_transport" or "fallback_transport".

Should I set these to point to maildrop too?

I restarted Postfix and still the mail goes to /var/spool/mail/blah/ .

I tried writing a little debug script to echo to a file the env-vars which Postfix sets up when calling Maildrop, (USER, EXTENSION, DOMAIN and LOCAL) but was not successful. Postfix certainly is using Maildrop because happy messages in /var/log/maillog appear when it delivers a message. I get an error message with my debug script in place of Maildrop.

I tried a symlink to make /var/spool/mail/blah point to /home/blah/Maildir but this didn't work, for reasons unknown, and I shouldn't have to resort to such a kludge.

Scrutinising the "DEFAULT_DEF" section of:

http://www.flounder.net/~mrsam/maildrop/INSTALL.html

I find that I should set this DEFAULT_DEF to "./Mailbox" to make Maildrop deliver incoming mail as Qmail would, and as Courier IMAP expects, to /home/blah/Maildir/ .

I had built Mailrop as root with a simple rpm command for the tar.gz file, and then installed the package. (This means I can easily uninstall it if I like.) When I built the package like this, I guess the autoconfigure stuff figured that I wasn't using this /home/blah/Maildir/ arrangement.

Now I want to recompile just the maildir binary, without mucking around with RPM.

In the unzipped source tree, in /maildrop-1.3.3/ , as root, I give the command:

configure

Now I want to alter this DEFAULT_DEF thang . . .

It is mentined but commented out in the /maildrop-1.3.3/maildrop/config.h file which the configuration script has generated.

(Or was it uncommented and set to /var/spool/mail? I am unsure. This report is a simplification of the path I took.)

I uncomment it and make it:

#define DEFAULT_DEF "./Maildir"

Then I change back to the maildrop-1.3.3 directory and type "make".

After it is all done, I have a new binary in the maildrop directory "maildrop". But it is 604,043 bytes, while the old one was 149,864.

This size difference is a worry! Maybe it is not sharing libraries properly.

I rename the old maildrop binary, copy the new one to /usr/bin/ and give it the right permissions:

Set user ID Set group ID read execute read execute read execute

Owner root Group mail

Should I set the sticky bit to keep it in memory after it has run once?

Success! The new executable delivers mail to /home/blah/Maildir . (Actually to the /new/ directory there.) Swapping back to the old one, incoming mail goes to /var/spool/blah/ again.

So the problem is solved, but I am puzzled about the new Maildrop executable being so large.

Next, I need to recompile Courier IMAP to make it tolerate whatever Netscape is doing to upset it.

All this and more will be documented on my website in the future - a RH71-Postfix-Maildrop-Courier-IMAP-IMP-How-I-did-it page.

- Robin

http://www.firstpr.com.au