1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
\r
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
\r
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
\r
6 <meta name="generator" content="AsciiDoc 8.2.2" />
\r
7 <style type="text/css">
\r
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
\r
11 border: 1px solid red;
\r
16 margin: 1em 5% 1em 5%;
\r
21 text-decoration: underline;
\r
39 h1, h2, h3, h4, h5, h6 {
\r
41 font-family: sans-serif;
\r
43 margin-bottom: 0.5em;
\r
48 border-bottom: 2px solid silver;
\r
51 border-bottom: 2px solid silver;
\r
61 border: 1px solid silver;
\r
66 margin-bottom: 0.5em;
\r
76 font-family: sans-serif;
\r
83 font-family: sans-serif;
\r
87 font-family: sans-serif;
\r
89 border-top: 2px solid silver;
\r
95 padding-bottom: 0.5em;
\r
99 padding-bottom: 0.5em;
\r
103 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
\r
104 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
\r
105 div.admonitionblock {
\r
108 margin-bottom: 1.5em;
\r
110 div.admonitionblock {
\r
112 margin-bottom: 2.5em;
\r
115 div.content { /* Block element content. */
\r
119 /* Block element titles. */
\r
120 div.title, caption.title {
\r
121 font-family: sans-serif;
\r
125 margin-bottom: 0.5em;
\r
131 td div.title:first-child {
\r
134 div.content div.title:first-child {
\r
137 div.content + div.title {
\r
141 div.sidebarblock > div.content {
\r
142 background: #ffffee;
\r
143 border: 1px solid silver;
\r
150 div.listingblock > div.content {
\r
151 border: 1px solid silver;
\r
152 background: #f4f4f4;
\r
156 div.quoteblock > div.content {
\r
157 padding-left: 2.0em;
\r
163 div.verseblock + div.attribution {
\r
167 div.admonitionblock .icon {
\r
168 vertical-align: top;
\r
171 text-decoration: underline;
\r
173 padding-right: 0.5em;
\r
175 div.admonitionblock td.content {
\r
176 padding-left: 0.5em;
\r
177 border-left: 2px solid silver;
\r
180 div.exampleblock > div.content {
\r
181 border-left: 2px solid silver;
\r
185 div.verseblock div.content {
\r
189 div.imageblock div.content { padding-left: 0; }
\r
190 div.imageblock img { border: 1px solid silver; }
\r
191 span.image img { border-style: none; }
\r
195 margin-bottom: 0.8em;
\r
200 font-style: italic;
\r
202 dd > *:first-child {
\r
207 list-style-position: outside;
\r
210 list-style-type: lower-alpha;
\r
213 div.tableblock > table {
\r
214 border: 3px solid #527bbd;
\r
217 font-family: sans-serif;
\r
226 margin-bottom: 0.8em;
\r
229 padding-bottom: 5px;
\r
232 vertical-align: top;
\r
233 font-style: italic;
\r
234 padding-right: 0.8em;
\r
237 vertical-align: top;
\r
241 div#footer-badges { display: none; }
\r
246 font-family: sans-serif;
\r
250 margin-bottom: 0.1em;
\r
253 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
\r
269 /* Workarounds for IE6's broken and incomplete CSS2. */
\r
271 div.sidebar-content {
\r
272 background: #ffffee;
\r
273 border: 1px solid silver;
\r
276 div.sidebar-title, div.image-title {
\r
277 font-family: sans-serif;
\r
280 margin-bottom: 0.5em;
\r
283 div.listingblock div.content {
\r
284 border: 1px solid silver;
\r
285 background: #f4f4f4;
\r
289 div.quoteblock-content {
\r
290 padding-left: 2.0em;
\r
293 div.exampleblock-content {
\r
294 border-left: 2px solid silver;
\r
295 padding-left: 0.5em;
\r
298 /* IE6 sets dynamically generated links as visited. */
\r
299 div#toc a:visited { color: blue; }
\r
301 <script type="text/javascript">
\r
303 window.onload = function(){generateToc(2)}
\r
304 /* Author: Mihai Bazon, September 2002
\r
305 * http://students.infoiasi.ro/~mishoo
\r
307 * Table Of Content generator
\r
310 * Feel free to use this script under the terms of the GNU General Public
\r
311 * License, as long as you do not remove or alter this notice.
\r
314 /* modified by Troy D. Hanson, September 2006. License: GPL */
\r
315 /* modified by Stuart Rackham, October 2006. License: GPL */
\r
317 function getText(el) {
\r
319 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
320 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
\r
322 else if (i.firstChild != null)
\r
323 text += getText(i);
\r
328 function TocEntry(el, text, toclevel) {
\r
331 this.toclevel = toclevel;
\r
334 function tocEntries(el, toclevels) {
\r
335 var result = new Array;
\r
336 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
\r
337 // Function that scans the DOM tree for header elements (the DOM2
\r
338 // nodeIterator API would be a better technique but not supported by all
\r
340 var iterate = function (el) {
\r
341 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
342 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
\r
343 var mo = re.exec(i.tagName)
\r
345 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
\r
354 // This function does the work. toclevels = 1..4.
\r
355 function generateToc(toclevels) {
\r
356 var toc = document.getElementById("toc");
\r
357 var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
\r
358 for (var i = 0; i < entries.length; ++i) {
\r
359 var entry = entries[i];
\r
360 if (entry.element.id == "")
\r
361 entry.element.id = "toc" + i;
\r
362 var a = document.createElement("a");
\r
363 a.href = "#" + entry.element.id;
\r
364 a.appendChild(document.createTextNode(entry.text));
\r
365 var div = document.createElement("div");
\r
366 div.appendChild(a);
\r
367 div.className = "toclevel" + entry.toclevel;
\r
368 toc.appendChild(div);
\r
373 <title>Cookbook for the grml mailinglistsetup</title>
\r
377 <h1>Cookbook for the grml mailinglistsetup</h1>
\r
379 <div id="toctitle">Table of Contents</div>
\r
380 <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
\r
383 <h2>1. Preface</h2>
\r
384 <div class="sectionbody">
\r
385 <p>This is a short documentation for common tasks with the grml mailing list
\r
388 <h2>2. Upstream docs</h2>
\r
389 <div class="sectionbody">
\r
390 <p><a href="http://mlmmj.mmj.dk/">mlmmj Homepage</a></p>
\r
392 <h2>3. Configuration of lists</h2>
\r
393 <div class="sectionbody">
\r
394 <p>Configuration of lists takes apart in the control directory of every list.
\r
395 This can be found in <tt>/etc/mlmmj/lists/$list/control</tt>. A full list of
\r
396 tunable options can be found in the file
\r
397 <tt>/usr/share/doc/mlmmj/TUNABLES.gz</tt>.</p>
\r
399 <h2>4. Recipes</h2>
\r
400 <div class="sectionbody">
\r
401 <p>Here are some common tasks:</p>
\r
402 <h3>4.1. Add a new mailinglist</h3>
\r
403 <div class="listingblock">
\r
404 <div class="content">
\r
405 <pre><tt>mlmmj-make-ml</tt></pre>
\r
407 <h3>4.2. Subscribe somebody to a mailinglist</h3>
\r
408 <div class="listingblock">
\r
409 <div class="content">
\r
410 <pre><tt>/usr/bin/mlmmj-sub -L /var/spool/mlmmj/$list/ -a joe@domain.tld</tt></pre>
\r
412 <h3>4.3. Add custom headers to a mailinglist</h3>
\r
413 <p>Just add your Headers to the file customheaders in the control
\r
414 directory of a list.</p>
\r
415 <div class="exampleblock">
\r
416 <div class="title">Example: Add the custom header List-Id to list <tt>foo</tt></div>
\r
417 <div class="exampleblock-content">
\r
418 <p><tt>echo "List-Id funny list <foo.ml.grml.org>" >> /etc/mlmmj/lists/foo/control/customheaders</tt></p>
\r
420 <h3>4.4. Restrict allowed posters to a list</h3>
\r
421 <p>If you add a file <tt>access</tt> to the control directory you can control who is
\r
422 allowed to post to a list. Rules are parsed from top to down and are
\r
423 specified by a regex against the header of mail and the keyword <strong>reject</strong> or
\r
424 <strong>deny</strong>. If you add a <strong>deny</strong> to the end of the file everybody who is not
\r
425 explicitly allowed to post will be rejected. If you want to customize the
\r
426 reject mail that users get modify the file
\r
427 <tt>/etc/mlmmj/lists/$list/text/access</tt> the Macro <strong>$listaddr$</strong> will be
\r
428 replaced with the address of the list.</p>
\r
429 <div class="exampleblock">
\r
430 <div class="title">Example: Deny all mails to a list with an exception for mails from foo@bar.de</div>
\r
431 <div class="exampleblock-content">
\r
432 <p>allow ^From: .*foo@bar.de.*</p>
\r
435 <div class="exampleblock">
\r
436 <div class="title">Example: Reject all mails from bar@baz.de</div>
\r
437 <div class="exampleblock-content">
\r
438 <p>deny ^From: .*bar@baz.de.*</p>
\r
440 <div class="admonitionblock">
\r
443 <div class="title">Caution</div>
\r
445 <td class="content">Every header can be forged, so don't rely to hard on this feature. If you
\r
446 really want to control all mails to a list use moderation.</td>
\r
450 <h2>5. List Archives</h2>
\r
451 <div class="sectionbody">
\r
452 <p>Currently we use <a href="http://www.sourceforge.net/projects/hypermail">Hypermail</a>
\r
453 for archive generation. To get a new list archived the following steps have
\r
454 to be followed:</p>
\r
458 Subscribe the archive user. For traditional reasons this is the user
\r
459 <strong>lurker</strong>
\r
461 <div class="listingblock">
\r
462 <div class="content">
\r
463 <pre><tt>`/usr/bin/mlmmj-sub -L /var/spool/mlmmj/$list/ -a lurker@ml.grml.org`.</tt></pre>
\r
468 Tune the procmail file of the lurker user so that mails of the list get
\r
469 there own inbox file:
\r
471 <div class="listingblock">
\r
472 <div class="content">
\r
474 * ^X-Mailing-List: <grml-live@ml.grml.org>.*
\r
475 grml-live</tt></pre>
\r
480 Copy <tt>/home/lurker/conf/hg-commits.conf</tt> to a new config
\r
485 Adjust at least the following config options in the config:
\r
487 <ol class="olist2">
\r
490 <tt>mbox = /home/lurker/hg-commits</tt> - set this to the mbox of the list
\r
495 <tt>label = Mercurial commits changes for hg.grml.org</tt> - informative
\r
496 description of the list
\r
501 <tt>dir = /var/www/archive/hg-commits/</tt> - where to generate the html files
\r
508 If the archive should be mentioned on <a href="http://ml.grml.org">ml.grml.org</a> add
\r
509 it to <tt>/var/www/archive/index.html</tt>
\r
514 <h2>6. About this document</h2>
\r
515 <div class="sectionbody">
\r
516 <p>(c) Michael Prokop <mika@grml.org> and Alexander Wirt <formorer@grml.org>; HTML version powered by <a href="http://www.methods.co.nz/asciidoc/">asciidoc</a>.</p>
\r
519 <div id="footer-text">
\r
520 Last updated 29-Feb-2008 04:31:59 CEST
\r