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