summaryrefslogtreecommitdiff
path: root/qmail-send.9
blob: ff2db126b9e79b2d046de6eb6f70034a3c8bfbbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
.TH qmail-send 8
.SH NAME
qmail-send \- deliver mail messages from the queue
.SH SYNOPSIS
.B qmail-send
.SH DESCRIPTION
.B qmail-send
handles messages placed into the outgoing queue by
.BR qmail-queue .
It uses
.B qmail-lspawn
to deliver messages to local recipients and
.B qmail-rspawn
to deliver messages to remote recipients.
If a message is temporarily undeliverable to one or more addresses,
.B qmail-send
leaves it in the queue and tries the addresses again later.

.B qmail-send
prints a readable record of its activities to descriptor 0.
It writes commands to
.BR qmail-lspawn ,
.BR qmail-rspawn ,
and
.B qmail-clean
on descriptors 1, 3, and 5,
and reads responses from descriptors 2, 4, and 6.
.B qmail-send
is responsible for avoiding deadlock.

If
.B qmail-send
receives a TERM signal,
it will exit cleanly, after waiting
(possibly more than a minute)
for current delivery attempts to finish.

If
.B qmail-send
receives an ALRM signal,
it will reschedule every message in the queue for immediate delivery.
.SH "CONTROL FILES"
.B WARNING:
.B qmail-send
reads its control files only when it starts.
If you change the control files,
you must stop and restart
.BR qmail-send .
Exception:
If
.B qmail-send
receives a HUP signal,
it will reread
.I locals
and
.IR virtualdomains .
.TP 5
.I bouncefrom
Bounce username.
Default:
.BR MAILER-DAEMON .
.TP 5
.I bouncehost
Bounce host.
Default:
.IR me ,
if that is supplied;
otherwise the literal name
.BR bouncehost ,
which is probably not what you want.
If a message is permanently undeliverable,
.B qmail-send
sends a
.B single-bounce
notice back to the message's envelope sender.
The notice is
.B From: \fIbouncefrom\fB@\fIbouncehost\fR,
although its envelope sender is empty.
.TP 5
.I concurrencylocal
Maximum number of simultaneous local delivery attempts.
Default: 10.
If 0, local deliveries will be put on hold.
.I concurrencylocal
is limited at compile time to
SPAWN.
.TP 5
.I concurrencyremote
Maximum number of simultaneous remote delivery attempts.
Default: 20.
If 0, remote deliveries will be put on hold.
.I concurrencyremote
is limited at compile time to
SPAWN.
.TP 5
.I doublebouncehost
Double-bounce host.
Default:
.IR me ,
if that is supplied;
otherwise the literal name
.BR doublebouncehost ,
which is probably not what you want.
.TP 5
.I doublebounceto
User to receive double-bounces.
Default:
.BR postmaster .
If a single-bounce notice is permanently undeliverable,
.B qmail-send
sends a
.B double-bounce
notice to
.IR doublebounceto\fB@\fIdoublebouncehost .
(If that bounces,
.B qmail-send
gives up.)
As a special case, if the first line of
.IR doublebounceto
is blank (contains a single linefeed), qmail-send will not queue
the double-bounce at all.
.TP 5
.I envnoathost
Presumed domain name for addresses without @ signs.
Default:
.IR me ,
if that is supplied;
otherwise the literal name
.BR envnoathost ,
which is probably not what you want.
If
.B qmail-send
sees an envelope recipient address without an @ sign,
it appends
.B @\fIenvnoathost\fR.
.TP 5
.I locals
List of domain names that the current host
receives mail for,
one per line.
Default:
.IR me ,
if that is supplied;
otherwise
.B qmail-send
refuses to run.
An address 
.I user@domain
is considered local if
.I domain
is listed in
.IR locals .
.TP 5
.I percenthack
List of domain names where the percent hack is applied.
If
.I domain
is listed in
.IR percenthack ,
any address of the form
.I user%fqdn@domain
is rewritten as
.IR user@fqdn .
.I user
may contain %,
so the percent hack may be applied repeatedly.
.B qmail-send
handles
.I percenthack
before
.IR locals .
.TP 5
.I queuelifetime
Number of seconds
a message can stay in the queue.
Default: 604800 (one week).
After this time expires,
.B qmail-send
will try the message once more,
but it will treat any temporary delivery failures as
permanent failures.
.TP 5
.I virtualdomains
List of virtual users or domains, one per line.
A virtual user has the form
.IR user\fB@\fIdomain\fB:\fIprepend ,
without any extra spaces.
When
.B qmail-send
sees the recipient address
.IR user\fB@\fIdomain ,
it converts it to
.I prepend\fB-\fIuser\fB@\fIdomain
and treats it as local.

A virtual domain has the form
.IR domain\fB:\fIprepend .
It applies to any recipient address at
.IR domain .
For example, if

.EX
     nowhere.mil:joeBREAKfoo
.EE

is in
.IR virtualdomains ,
and a message arrives for
.BR info@nowhere.mil ,
.B qmail-send
will rewrite the recipient address as
.B joeBREAKfoo-info@nowhere.mil
and deliver the message locally.

.I virtualdomains
may contain wildcards:

.EX
     .fax:uucpBREAKfax
     :aliasBREAKcatchall
     .nowhere.mil:joeBREAKfoo-host
.EE

.I virtualdomains
may also contain exceptions:
an empty
.I prepend
means that
.I domain
is not a virtual domain.

.B qmail-send
handles
.I virtualdomains
after
.IR locals :
if a domain is listed in
.IR locals ,
.I virtualdomains
does not apply.
.SH "SEE ALSO"
nice(1),
addresses(5),
envelopes(5),
qmail-control(5),
qmail-log(5),
qmail-queue(8),
qmail-clean(8),
qmail-lspawn(8),
qmail-rspawn(8)