112 lines
4.7 KiB
Text
112 lines
4.7 KiB
Text
The qmail package includes a local delivery agent, qmail-local, which
|
||
provides user-controlled mailing lists, cross-host alias loop detection,
|
||
and many other important qmail features.
|
||
|
||
There's one part of qmail-local that you need to know about right now:
|
||
qmail-local doesn't support an insecure central mail spool. It delivers
|
||
mail by default into ~user/Mailbox (in mbox format).
|
||
|
||
This file explains what you should do to deal with this change. It also
|
||
points out some reasons that you might want to make an even bigger
|
||
change, switching from mbox format to a new format, maildir.
|
||
|
||
If you desperately don't want to change anything, see INSTALL.qsmhook.
|
||
|
||
|
||
Contents:
|
||
1. Throw away /usr/spool/mail!
|
||
2. The trouble with mbox
|
||
3. Sun's Network F_ail_u_re System
|
||
|
||
|
||
1. Throw away /usr/spool/mail!
|
||
|
||
/usr/spool/mail, often called /var/spool/mail or /var/mail, is a
|
||
security disaster. A user's mailbox belongs in his home directory, not a
|
||
shared directory. Even if you don't install qmail, you should destroy
|
||
/usr/spool/mail. This takes four steps:
|
||
|
||
A. Convince your local mailer to deliver to ~user/Mailbox. If you're
|
||
using something like procmail, this is easy---just change SYSTEM_MBOX
|
||
in config.h. If you're installing qmail, you don't have to do
|
||
anything. Otherwise, take a look at hlfsd from
|
||
ftp.cs.columbia.edu/pub/amd.
|
||
|
||
B. Move each /usr/spool/mail/user to ~user/Mailbox. For safety, do
|
||
this in single-user mode---you don't want to risk corrupting
|
||
mailboxes. (qmail makes it easy to turn off deliveries temporarily:
|
||
just kill the qmail-send daemon. But you aren't running qmail yet.)
|
||
When you're done, remove /usr/spool/mail.
|
||
|
||
C. Put ``setenv MAIL $HOME/Mailbox'' in your system-wide .cshrc,
|
||
``MAIL=$HOME/Mailbox; export MAIL'' in your system-wide .profile,
|
||
``inbox-path=Mailbox'' in your system-wide pine.conf. If you're using
|
||
qpopper 2.2, you'll have to recompile with -DHOMEDIRMAIL in CFLAGS
|
||
and with /.mail changed to /Mailbox in pop_dropcopy.c. If you're
|
||
using elm on a multiuser system, you'll have to recompile elm with
|
||
"mailbox" changed to "Mailbox" around line 388 of newmbox.c.
|
||
|
||
D. Announce the change.
|
||
|
||
Some vendors, in a misguided attempt to solve the security problems of
|
||
/usr/spool/mail, have made all MUAs (e.g., /usr/ucb/Mail) setgid mail.
|
||
After you get rid of /usr/spool/mail, you can also disable those
|
||
setgid-mail bits.
|
||
|
||
|
||
2. The trouble with mbox
|
||
|
||
The mbox format---the format of ~user/Mailbox, understood by BSD Mail
|
||
and lots of other MUAs---is inherently unreliable.
|
||
|
||
Think about it: what happens if the system crashes while a program is
|
||
appending a new message to ~user/Mailbox? The message will be truncated.
|
||
Even worse, if it was truncated in the middle of a line, it will end up
|
||
being merged with the next message! Sure, the mailer understands that it
|
||
wasn't successful, so it'll try delivering the message again later, but
|
||
it can't fix your corrupted mbox.
|
||
|
||
Other formats, such as mh folders, are just as unreliable.
|
||
|
||
qmail supports maildir, a crashproof format for incoming mail messages.
|
||
maildir is fast and easy for MUAs to use. Even better, maildir works
|
||
wonders over NFS---see below.
|
||
|
||
I don't want to cram maildir down people's throats, so it's not the
|
||
default. Nevertheless, I encourage you to start asking for maildir
|
||
versions of your favorite MUAs, and to switch over to maildir as soon as
|
||
you can.
|
||
|
||
WARNING: qmail uses flock() to lock ~user/Mailbox. This agrees with the
|
||
modern mail.local locking choice. If your MUA doesn't use flock(), your
|
||
best bet is to switch to maildir, and to set up synchronous maildir2mbox
|
||
execution, as described below.
|
||
|
||
|
||
3. Sun's Network F_ail_u_re System
|
||
|
||
Anyone who tells you that mail can be safely delivered in mbox format
|
||
over NFS is pulling your leg---as explained above, mbox format is
|
||
inherently unreliable even on a single machine.
|
||
|
||
Anyway, NFS is the most unreliable computing environment ever invented,
|
||
and qmail doesn't even pretend to support mbox over NFS.
|
||
|
||
You should switch to maildir, which works fine over NFS without any
|
||
locking. You can safely read your mail over NFS if it's in maildir
|
||
format. Any number of machines can deliver mail to you at the same time.
|
||
(On the other hand, for efficiency, it's better to get NFS out of the
|
||
picture---your mail should be delivered on the server that contains your
|
||
home directory.)
|
||
|
||
Here's how to set up qmail to use maildir for your incoming mail:
|
||
|
||
% maildirmake $HOME/Maildir
|
||
% echo ./Maildir/ > ~/.qmail
|
||
|
||
Make sure you include the trailing slash on Maildir/.
|
||
|
||
Until your MUA supports maildir, you'll probably want to convert maildir
|
||
format to (gaaack) mbox format. I've supplied a maildir2mbox utility
|
||
that does the trick, along with some tiny qail and elq and pinq wrappers
|
||
that call maildir2mbox before calling Mail or elm or pine.
|