greenhouse / pollen / pollen.1204 lines · 3812B · raw
1.TH POLLEN 1 pollen\-VERSION
2.SH NAME
3pollen \- mailing list manager
4.SH SYNOPSIS
5.B pollen
6.I list
7.RI [ extension ]
8.br
9.B pollen
10.B \-v
11.SH DESCRIPTION
12.B pollen
13delivers one message, read from standard input, to the mailing list
14.IR list .
15It is meant to run as a Postfix
16.BR pipe (8)
17transport.
18The envelope sender is taken from the
19.B Return-Path
20header that Postfix prepends.
21.P
22Without an
23.IR extension ,
24the message is a post.
25It is rejected if it has no
26.BR Message-ID ,
27if it already carries this list's
28.BR List-Id ,
29if it is larger than
30.BR maxsize ,
31or if the address in its single
32.B From
33header may not post.
34Otherwise the
35.BR List-Id ,
36.BR List-Post ,
37.BR List-Subscribe ,
38.BR List-Unsubscribe ,
39.B List-Help
40and
41.B Precedence
42headers are prepended, plus
43.B List-Archive
44if
45.B web
46is set and the list is
47.BR public ,
48incoming
49.BR List-* ,
50.B Return-Path
51and
52.B Delivered-To
53headers are dropped and everything else is kept byte for byte.
54The result is stored in the archive and then handed to
55.B sendmail
56in a single call for all subscribers, with
57.IB list +bounces@ domain
58as envelope sender.
59If that call fails, the archived copy is removed again so Postfix can
60retry cleanly.
61.SH OPTIONS
62.TP
63.B \-v
64prints version information to stderr, then exits.
65.SH COMMANDS
66Commands are addressed as
67.IB list + command @ domain .
68.TP
69.B subscribe, unsubscribe
70Mail a confirmation request to the
71.B From
72address.
73For subscriptions to a closed list the request goes to the list owner
74instead.
75.TP
76.BI confirm- token
77Apply a pending request and notify the subscriber.
78Requests expire after
79.B expiry
80seconds.
81.TP
82.B bounces
83Log the bounce to syslog.
84Subscribers are not removed.
85.TP
86.B help
87Reply with the list of command addresses, as does any other extension.
88.P
89No reply is ever sent to a message with an
90.B Auto-Submitted
91header other than
92.BR no ,
93a
94.B Precedence
95of
96.BR bulk ,
97.B list
98or
99.BR junk ,
100or a null or
101.B MAILER-DAEMON
102envelope sender.
103.SH FILES
104Lists live in
105.IR root /
106.IR list /,
107where the list name matches
108.BR ^[a-z0-9][a-z0-9-]*$ .
109.TP
110.B description
111One line describing the list.
112.TP
113.B owner
114Owner address.
115.TP
116.B post
117Who may post:
118.BR anyone ,
119.B subscribers
120or
121.BR owner .
122The owner may always post.
123.TP
124.B subscribe
125.B open
126or
127.BR closed .
128.TP
129.B public
130Present if the archive is public; only then does pollen advertise it
131in
132.B List-Archive
133and help replies.
134.TP
135.B subscribers
136One lowercase address per line, written by pollen.
137.TP
138.BI pending/ token
139.RI \(dq action " " address " " time \(dq
140for each open request, written by pollen.
141.TP
142.B archive/
143Maildir of every distributed post, exactly as sent.
144The archive is group-readable for archive readers such as herbarium;
145everything else pollen writes is private to its user.
146.TP
147.B .lock
148Lock file serializing changes to
149.BR subscribers .
150.SH EXIT STATUS
151.TP
152.B 0
153The message was accepted.
154.TP
155.B EX_NOUSER
156No such list.
157.TP
158.B EX_NOPERM
159The message was rejected; the reason is printed to standard output.
160.TP
161.B EX_TEMPFAIL
162Transient failure; Postfix will retry.
163.SH POSTFIX
164.B master.cf:
165.P
166.nf
167pollen unix - n n - - pipe
168 flags=Rq user=pollen argv=/usr/local/bin/pollen ${user} ${extension}
169.fi
170.P
171.B main.cf:
172.P
173.nf
174recipient_delimiter = +
175transport_maps = hash:/etc/postfix/transport
176pollen_destination_recipient_limit = 1
177relay_domains = lists.lostduk.com
178relay_recipient_maps = hash:/etc/postfix/lists
179.fi
180.P
181.BR transport :
182.P
183.nf
184lists.lostduk.com pollen:
185.fi
186.P
187.B relay_recipient_maps
188lists every
189.IR list ,
190so Postfix rejects unknown lists before queueing.
191.B pollen_destination_recipient_limit
192must be 1.
193The
194.B pollen
195user needs write access to every list directory.
196.SH CUSTOMIZATION
197.B pollen
198is configured by editing
199.I config.h
200and recompiling.
201.SH SEE ALSO
202.BR herbarium (1),
203.BR pipe (8),
204.BR sendmail (1)