<?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/category/linux/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, 06 Sep 2010 12:57:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 inserts that handler into the message pipeline [...]]]></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, msg, 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: #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: #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: #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"><span style="color: #66cc66;">***</span> CookHeaders.<span style="color: black;">py</span>.<span style="color: black;">old</span> &nbsp;<span style="color: #ff4500;">2007</span>-09-<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> +0100<br />
--- CookHeaders.<span style="color: black;">py</span> &nbsp; &nbsp; &nbsp;<span style="color: #ff4500;">2007</span>-09-<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> +0100<br />
<span style="color: #66cc66;">***************</span><br />
<span style="color: #66cc66;">***</span> <span style="color: #ff4500;">217</span>,<span style="color: #ff4500;">224</span> <span style="color: #66cc66;">****</span><br />
--- <span style="color: #ff4500;">217</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, msg, 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: #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: #483d8b;">'yes'</span>:<br />
+ &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span><br />
&nbsp; &nbsp; &nbsp; prefix = mlist.<span style="color: black;">subject_prefix</span><br />
&nbsp; &nbsp; &nbsp; subject = msg.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'subject'</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, 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>
