summaryrefslogtreecommitdiff
path: root/man/setforward.1
blob: 1c2925cb213981caecd2ecea49471f2e71abc51a (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
.TH s/qmail: setforward 1
.SH NAME
setforward \- create a forwarding database
.SH SYNOPSIS
.B setforward
.I cdb
.I tmp
.SH DESCRIPTION
.B setforward
reads a table of forwarding instructions from its standard input.
It converts the table into a forwarding database.
The forwarding database can be used by
.BR fastforward .

.B setforward
writes the forwarding database to
.IR tmp ;
it then moves
.I tmp
to
.IR cdb .
.I tmp
and
.I cdb
must be on the same filesystem.

If there is a problem creating
.IR tmp ,
.B setforward
complains and leaves
.I cdb
alone.

The forwarding database format is portable across machines.
.SH "INSTRUCTION FORMAT"
A forwarding instruction contains a
.I target\fR,
a colon, a series of commands, and a semicolon.
Each command is a
.I recipient address\fR,
.I owner address\fR,
.I external mailing list\fR,
or
.I program\fR.
Commands are separated by commas.

For example,

.EX
   root@yp.to: god@heaven.af.mil, staff@af.mil;
.EE

says that mail for
.B root@yp.to
should be forwarded to the recipient addresses
.B god@heaven.af.mil
and
.BR staff@af.mil .

When
.B setforward
sees # it ignores all text from # to the end of the line:

.EX
   # this is a comment
.EE

.B setforward
ignores all other line endings,
so you can split a forwarding instruction across lines.
It also ignores spaces and tabs.
Exception:
you can put a space (or tab or comma or whatever)
into a target or command by putting a backslash in front of it.
(However, NUL bytes are not permitted anywhere.)
.SH "TARGETS"
When
.B fastforward
sees the incoming address
.IR user@host.dom ,
it tries three targets:
.IR user@host.dom ,
.IR @host.dom ,
and
.IR user@ .
It obeys the commands for the first target that it finds.
Target names are interpreted without regard to case.

All the commands for a single target must be listed in a single instruction.
Exception: an owner address can be listed in a separate instruction.
.SH "RECIPIENT ADDRESSES"
If a command begins with an ampersand,
.B setforward
takes the remaining bytes in the command as a recipient address:

.EX
   boss@yp.to: &god@heaven.af.mil;
.EE

.B fastforward
sends each incoming mail message
to the recipient address.
The recipient address must include a fully qualified domain name.
It cannot be longer than 800 bytes.

If a recipient address is itself a target in the forwarding table,
.B fastforward
will recursively handle the instructions for that target.
Note that
.I @host.dom
and
.I user@
wildcards do not apply here;
they apply only to the incoming address.

If a command begins with a letter or number,
.B setforward
takes the entire command as a recipient address:

.EX
   boss@yp.to: god@heaven.af.mil;
.EE
.SH "OWNER ADDRESSES"
If a command begins with a question mark,
.B setforward
takes the remaining bytes in the command as an owner address:

.EX
   sos@heaven.af.mil: ?owner-sos@heaven.af.mil;
.EE

.B fastforward
uses that address as the envelope sender for forwarded mail,
so bounces will go back to that address.
(Normally, if a message is forwarded to a bad address,
it will bounce back to the original envelope sender.)
.SH "EXTERNAL MAILING LISTS"
If a command begins with a dot or slash,
.B setforward
takes the entire command as the name of a binary mailing list file created by
.BR setmaillist :

.EX
   sos@heaven.af.mil: /etc/lists/sos.bin;
.EE

.B fastforward
will read and obey the commands in that file.
The file must be world-readable
and accessible to
.BR fastforward .
.SH "PROGRAMS"
If a command begins with a vertical bar or exclamation point,
.B setforward
takes the rest of the command as the name of a program to run:

.EX
   dew@: |dew-monitor;
.EE

For a vertical bar,
.B fastforward
feeds the message
to that program.
An exclamation point works the same way except that
.B fastforward
inserts
.BR $UFLINE ,
.BR $RPLINE ,
and
.B $DTLINE
in front of the message.
.SH "DUPLICATES"
When
.B fastforward
is building the recipient list for a message,
it keeps track of the recipient addresses and external mailing lists
it has used.
If the same command shows up again, it skips it.
For example:

.EX
   everybody@yp.to: programmers@yp.to, testers@yp.to;
   programmers@yp.to: joe@yp.to, bob@yp.to;
   testers@yp.to: joe@yp.to, fred@yp.to;
.EE

A message to
.B everybody@yp.to
will be sent to
.B joe@yp.to
only once.
(This also means that addresses in an internal forwarding loop
are discarded.)

Exception:
If a target has an owner address,
commands for that target are considered different
from commands for ``outside'' targets.
.SH "SEE ALSO"
newaliases(1),
preline(1),
printforward(1),
setmaillist(1)