| Current File : //var/qmail/man/cat5/dot-qmail.0 |
Standards, Environments, and Macros dot-qmail(5)
NNNNAAAAMMMMEEEE
dot-qmail - control the delivery of mail messages
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
Normally the qqqqmmmmaaaaiiiillll----llllooooccccaaaallll program delivers each incoming mes-
sage to your system mailbox, _h_o_m_e_d_i_r////MMMMaaaaiiiillllbbbbooooxxxx, where _h_o_m_e_d_i_r
is your home directory.
It can instead write the mail to a different file or direc-
tory, forward it to another address, distribute it to a
mailing list, or even execute programs, all under your con-
trol.
TTTTHHHHEEEE QQQQMMMMAAAAIIIILLLL FFFFIIIILLLLEEEE
To change qqqqmmmmaaaaiiiillll----llllooooccccaaaallll's behavior, set up a ....qqqqmmmmaaaaiiiillll file in
your home directory.
....qqqqmmmmaaaaiiiillll contains one or more lines. Each line is a delivery
instruction. qqqqmmmmaaaaiiiillll----llllooooccccaaaallll follows each instruction in turn.
There are five types of delivery instructions: (1) comment;
(2) program; (3) forward; (4) mbox; (5) maildir.
(1) A comment line begins with a number sign:
# this is a comment
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll ignores the line.
(2) A program line begins with a vertical bar:
|preline /usr/ucb/vacation djb
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll takes the rest of the line as a command to
supply to sssshhhh. See qqqqmmmmaaaaiiiillll----ccccoooommmmmmmmaaaannnndddd((((8888)))) for further infor-
mation.
(3) A forward line begins with an ampersand:
&me@new.job.com
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll takes the rest of the line as a mail
address; it uses qqqqmmmmaaaaiiiillll----qqqquuuueeeeuuuueeee to forward the message to
that address. The address must contain a fully quali-
fied domain name; it must not contain extra spaces,
angle brackets, or comments:
# the following examples are WRONG
&me@new
&<me@new.job.com>
& me@new.job.com
&me@new.job.com (New Address)
SunOS 5.11 Last change: 1
Standards, Environments, and Macros dot-qmail(5)
If the address begins with a letter or number, you may
leave out the ampersand:
me@new.job.com
Note that qqqqmmmmaaaaiiiillll----llllooooccccaaaallll omits its new RRRReeeettttuuuurrrrnnnn----PPPPaaaatttthhhh line
when forwarding messages.
(4) An _m_b_o_x line begins with a slash or dot, and does not
end with a slash:
/home/djb/Mailbox.sos
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll takes the entire line as a filename. It
appends the mail message to that file, using fffflllloooocccckkkk-
style file locking if possible. qqqqmmmmaaaaiiiillll----llllooooccccaaaallll stores the
mail message in _m_b_o_x format, as described in mmmmbbbbooooxxxx((((5555)))).
WWWWAAAARRRRNNNNIIIINNNNGGGG:::: On many systems, anyone who can read a file
can fffflllloooocccckkkk it, and thus hold up qqqqmmmmaaaaiiiillll----llllooooccccaaaallll's delivery
forever. Do not deliver mail to a publicly accessible
file!
If qqqqmmmmaaaaiiiillll----llllooooccccaaaallll is able to lock the file, but has trou-
ble writing to it (because, for example, the disk is
full), it will truncate the file back to its original
length. However, it cannot prevent mailbox corruption
if the system crashes during delivery.
(5) A _m_a_i_l_d_i_r line begins with a slash or dot, and ends
with a slash:
/home/djb/Maildir/
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll takes the entire line as the name of a
directory in _m_a_i_l_d_i_r format. It reliably stores the
incoming message in that directory. See mmmmaaaaiiiillllddddiiiirrrr((((5555)))) for
more details.
If ....qqqqmmmmaaaaiiiillll has the execute bit set, it must not contain any
program lines, _m_b_o_x lines, or _m_a_i_l_d_i_r lines. If qqqqmmmmaaaaiiiillll----llllooooccccaaaallll
sees any such lines, it will stop and indicate a temporary
failure.
If ....qqqqmmmmaaaaiiiillll is completely empty (0 bytes long), or does not
exist, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll follows the _d_e_f_a_u_l_t_d_e_l_i_v_e_r_y instructions
set by your system administrator; normally _d_e_f_a_u_l_t_d_e_l_i_v_e_r_y
is ....////MMMMaaaaiiiillllbbbbooooxxxx, so qqqqmmmmaaaaiiiillll----llllooooccccaaaallll appends the mail message to
MMMMaaaaiiiillllbbbbooooxxxx in _m_b_o_x format.
....qqqqmmmmaaaaiiiillll may contain extra spaces and tabs at the end of a
line. Blank lines are allowed, but not for the first line
SunOS 5.11 Last change: 2
Standards, Environments, and Macros dot-qmail(5)
of ....qqqqmmmmaaaaiiiillll.
If ....qqqqmmmmaaaaiiiillll is world-writable, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll stops and indicates
a temporary failure.
SSSSAAAAFFFFEEEE QQQQMMMMAAAAIIIILLLL EEEEDDDDIIIITTTTIIIINNNNGGGG
Incoming messages can arrive at any moment. If you want to
safely edit your ....qqqqmmmmaaaaiiiillll file, first set the sticky bit on
your home directory:
chmod +t $HOME
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll will temporarily defer delivery of any message
to you if your home directory is sticky (or group-writable
or other-writable, which should never happen). Make sure to
chmod -t $HOME
when you are done! It's a good idea to test your new ....qqqqmmmmaaaaiiiillll
file as follows:
qmail-local -n $USER ~ $USER '' '' '' '' ./Mailbox
EEEEXXXXTTTTEEEENNNNSSSSIIIIOOOONNNN AAAADDDDDDDDRRRREEEESSSSSSSSEEEESSSS
In the qqqqmmmmaaaaiiiillll system, you control all local addresses of the
form _u_s_e_r----_a_n_y_t_h_i_n_g, as well as the address _u_s_e_r itself,
where _u_s_e_r is your account name. Delivery to _u_s_e_r----_a_n_y_t_h_i_n_g
is controlled by the file _h_o_m_e_d_i_r/....qqqqmmmmaaaaiiiillll-_a_n_y_t_h_i_n_g. (These
rules may be changed by the system administrator; see
qqqqmmmmaaaaiiiillll----uuuusssseeeerrrrssss(5).)
The aaaalllliiiiaaaassss user controls all other addresses. Delivery to
_l_o_c_a_l is controlled by the file _h_o_m_e_d_i_r/....qqqqmmmmaaaaiiiillll-_l_o_c_a_l, where
_h_o_m_e_d_i_r is aaaalllliiiiaaaassss's home directory.
In the following description, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll is handling a mes-
sage addressed to _l_o_c_a_l@_d_o_m_a_i_n, where _l_o_c_a_l is controlled by
....qqqqmmmmaaaaiiiillll-_e_x_t. Here is what it does.
If ....qqqqmmmmaaaaiiiillll-_e_x_t is completely empty, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll follows the
_d_e_f_a_u_l_t_d_e_l_i_v_e_r_y instructions set by your system administra-
tor.
If ....qqqqmmmmaaaaiiiillll-_e_x_t doesn't exist, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll will try some
default ....qqqqmmmmaaaaiiiillll files. For example, if _e_x_t is ffffoooooooo----bbbbaaaarrrr,
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll will try first ....qqqqmmmmaaaaiiiillll----ffffoooooooo----bbbbaaaarrrr, then ....qqqqmmmmaaaaiiiillll----ffffoooooooo----
ddddeeeeffffaaaauuuulllltttt, and finally ....qqqqmmmmaaaaiiiillll----ddddeeeeffffaaaauuuulllltttt. If none of these
exist, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll will bounce the message. (Exception: for
the basic _u_s_e_r address, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll treats a nonexistent
....qqqqmmmmaaaaiiiillll the same as an empty ....qqqqmmmmaaaaiiiillll.)
WWWWAAAARRRRNNNNIIIINNNNGGGG:::: For security, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll replaces any dots in _e_x_t
SunOS 5.11 Last change: 3
Standards, Environments, and Macros dot-qmail(5)
with colons before checking ....qqqqmmmmaaaaiiiillll-_e_x_t. For convenience,
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll converts any uppercase letters in _e_x_t to lower-
case.
When qqqqmmmmaaaaiiiillll----llllooooccccaaaallll forwards a message as instructed in
....qqqqmmmmaaaaiiiillll-_e_x_t (or ....qqqqmmmmaaaaiiiillll----ddddeeeeffffaaaauuuulllltttt), it checks whether
....qqqqmmmmaaaaiiiillll-_e_x_t----oooowwwwnnnneeeerrrr exists. If so, it uses _l_o_c_a_l----oooowwwwnnnneeeerrrr@@@@_d_o_m_a_i_n
as the envelope sender for the forwarded message. Otherwise
it retains the envelope sender of the original message.
Exception: qqqqmmmmaaaaiiiillll----llllooooccccaaaallll always retains the original envelope
sender if it is the empty address or ####@@@@[[[[]]]], i.e., if this is
a bounce message.
qqqqmmmmaaaaiiiillll----llllooooccccaaaallll also supports vvvvaaaarrrriiiiaaaabbbblllleeee eeeennnnvvvveeeellllooooppppeeee rrrreeeettttuuuurrrrnnnn ppppaaaatttthhhhssss
(VERPs): if ....qqqqmmmmaaaaiiiillll-_e_x_t----oooowwwwnnnneeeerrrr and ....qqqqmmmmaaaaiiiillll-_e_x_t----oooowwwwnnnneeeerrrr----ddddeeeeffffaaaauuuulllltttt
both exist, it uses _l_o_c_a_l-oooowwwwnnnneeeerrrr-@@@@_d_o_m_a_i_n----@@@@[[[[]]]] as the envelope
sender. This will cause a recipient _r_e_c_i_p@@@@_r_e_c_i_p_h_o_s_t to see
an envelope sender of _l_o_c_a_l-oooowwwwnnnneeeerrrr-_r_e_c_i_p====_r_e_c_i_p_h_o_s_t@@@@_d_o_m_a_i_n.
EEEERRRRRRRROOOORRRR HHHHAAAANNNNDDDDLLLLIIIINNNNGGGG
If a delivery instruction fails, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll stops immedi-
ately and reports failure. qqqqmmmmaaaaiiiillll----llllooooccccaaaallll handles forwarding
after all other instructions, so any error in another type
of delivery will prevent all forwarding.
If a program returns exit code 99, qqqqmmmmaaaaiiiillll----llllooooccccaaaallll ignores all
succeeding lines in ....qqqqmmmmaaaaiiiillll, but it still pays attention to
previous forward lines.
To set up independent instructions, where a temporary or
permanent failure in one instruction does not affect the
others, move each instruction into a separate ....qqqqmmmmaaaaiiiillll-_e_x_t
file, and set up a central ....qqqqmmmmaaaaiiiillll file that forwards to all
of the ....qqqqmmmmaaaaiiiillll-_e_x_ts. Note that qqqqmmmmaaaaiiiillll----llllooooccccaaaallll can handle any
number of forward lines simultaneously.
SSSSEEEEEEEE AAAALLLLSSSSOOOO
envelopes(5), maildir(5), mbox(5), qmail-users(5), qmail-
local(8), qmail-command(8), qmail-queue(8), qmail-lspawn(8)
SunOS 5.11 Last change: 4