<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SysAdmin Adventures &#187; Mailman</title>
	<atom:link href="http://blog.tpa.me.uk/tag/mailman/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tpa.me.uk</link>
	<description>Tech notes from a Systems Administrator</description>
	<lastBuildDate>Mon, 31 Oct 2011 11:09:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Mailman: Preventing Duplicate Archiving and Multiple Subject Prefixes with Umbrella Lists</title>
		<link>http://blog.tpa.me.uk/2009/08/30/mailman-preventing-duplicate-archiving-and-multiple-subject-prefixes-with-umbrella-lists/</link>
		<comments>http://blog.tpa.me.uk/2009/08/30/mailman-preventing-duplicate-archiving-and-multiple-subject-prefixes-with-umbrella-lists/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 20:36:23 +0000</pubDate>
		<dc:creator>Zordrak</dc:creator>
				<category><![CDATA[Mailman]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[umbrella]]></category>

		<guid isPermaLink="false">http://blog.tpa.me.uk/?p=38</guid>
		<description><![CDATA[This defines the process of deleting any existing X-No-Archive and X-No-Subject-Prefix headers to prevent duplication, followed by the addition of an X-No-Archive: Yes header and an X-No-Subject-Prefix: Yes header. ~mailman/Mailman/Handlers/Umbrella.py: def process&#40;mlist, msg, msgdata&#41;: &#160; &#160; del msg&#91;'x-no-archive'&#93; &#160; &#160; msg&#91;'X-No-Archive'&#93; = 'Yes' &#160; &#160; del msg&#91;'x-no-subject-prefix'&#93; &#160; &#160; msg&#91;'X-No-Subject-Prefix'&#93; = 'Yes' The following then [...]]]></description>
			<content:encoded><![CDATA[<p>This defines the process of deleting any existing X-No-Archive and X-No-Subject-Prefix headers to prevent duplication, followed by the addition of an X-No-Archive: Yes header and an X-No-Subject-Prefix: Yes header.</p>
<p>~mailman/Mailman/Handlers/Umbrella.py:</p>
<div class="codecolorer-container python geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">def</span> process<span style="color: black;">&#40;</span>mlist<span style="color: #66cc66;">,</span> msg<span style="color: #66cc66;">,</span> msgdata<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">del</span> msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'x-no-archive'</span><span style="color: black;">&#93;</span><br />
&nbsp; &nbsp; msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'X-No-Archive'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'Yes'</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">del</span> msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'x-no-subject-prefix'</span><span style="color: black;">&#93;</span><br />
&nbsp; &nbsp; msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'X-No-Subject-Prefix'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'Yes'</span></div></div>
<p>The following then inserts that handler into the message pipeline after archiving so that when a message is archived once (in the first list it hits) it is marked not to be archived again in any subsequent lists it is sent to.</p>
<p>~mailman/Mailman/mm_cfg.py:</p>
<div class="codecolorer-container python geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">GLOBAL_PIPELINE.<span style="color: black;">insert</span><span style="color: black;">&#40;</span>GLOBAL_PIPELINE.<span style="color: black;">index</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'AfterDelivery'</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'Umbrella'</span><span style="color: black;">&#41;</span></div></div>
<p>Mailman doesn&#8217;t archive messages containing an X-No-Archive header, however it doesn&#8217;t know about the X-No-Subject-Prefix header, so we have to tell it in ~mailman/Mailman/Handlers/CookHeaders.py:</p>
<p><strong>Patch</strong></p>
<div class="codecolorer-container python geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">*** CookHeaders.<span style="color: black;">py</span>.<span style="color: black;">old</span> &nbsp;<span style="color: #ff4500;">2007</span>-<span style="color: #ff4500;">09</span>-<span style="color: #ff4500;">21</span> <span style="color: #ff4500;">10</span>:<span style="color: #ff4500;">33</span>:<span style="color: #ff4500;">33.000000000</span> +<span style="color: #ff4500;">0100</span><br />
--- CookHeaders.<span style="color: black;">py</span> &nbsp; &nbsp; &nbsp;<span style="color: #ff4500;">2007</span>-<span style="color: #ff4500;">09</span>-<span style="color: #ff4500;">21</span> <span style="color: #ff4500;">10</span>:<span style="color: #ff4500;">10</span>:<span style="color: #ff4500;">38.000000000</span> +<span style="color: #ff4500;">0100</span><br />
***************<br />
*** <span style="color: #ff4500;">217</span><span style="color: #66cc66;">,</span><span style="color: #ff4500;">224</span> ****<br />
--- <span style="color: #ff4500;">217</span><span style="color: #66cc66;">,</span><span style="color: #ff4500;">226</span> ----<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">def</span> prefix_subject<span style="color: black;">&#40;</span>mlist<span style="color: #66cc66;">,</span> msg<span style="color: #66cc66;">,</span> msgdata<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Add the subject prefix unless the message is a digest or is being fast</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># tracked (e.g. internally crafted, delivered to a single user such as the</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># list admin).</span><br />
+ &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> msg.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'x-no-subject-prefix'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">and</span> msg.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'x-no-subject-prefix'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">'yes'</span>:<br />
+ &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span><br />
&nbsp; &nbsp; &nbsp; prefix <span style="color: #66cc66;">=</span> mlist.<span style="color: black;">subject_prefix</span><br />
&nbsp; &nbsp; &nbsp; subject <span style="color: #66cc66;">=</span> msg.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'subject'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: italic;"># Try to figure out what the continuation_ws is for the header</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>subject<span style="color: #66cc66;">,</span> Header<span style="color: black;">&#41;</span>:</div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.tpa.me.uk/2009/08/30/mailman-preventing-duplicate-archiving-and-multiple-subject-prefixes-with-umbrella-lists/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

