<?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>NetworksAreMadeOfString &#187; Email</title>
	<atom:link href="http://blog.networksaremadeofstring.co.uk/category/datacenter/email/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.networksaremadeofstring.co.uk</link>
	<description>Cat5, Cat6, Fibre, or String.............</description>
	<lastBuildDate>Mon, 21 Jun 2010 19:37:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Deploying Exchange 2010 Edge Transport Server on Windows Server 2008 R2</title>
		<link>http://blog.networksaremadeofstring.co.uk/2010/06/21/deploying-exchange-2010-edge-transport-server-on-windows-server-2008-r2/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2010/06/21/deploying-exchange-2010-edge-transport-server-on-windows-server-2008-r2/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 19:37:18 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=630</guid>
		<description><![CDATA[Microsoft have continued the trend of going x64 all the way and 2008 R2 is 64bit only. The first thing we need to do is install the pre-requisites via a privileged PowerShell; Import-Module ServerManager Add-WindowsFeature NET-Framework,RSAT-ADDS,ADLDS -Restart Once the machine has restarted you will need to ensure you set the machine name and a DNS [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft have continued the trend of going x64 all the way and 2008 R2 is 64bit only.</p>
<p>The first thing we need to do is install the pre-requisites via a privileged PowerShell;<br />
<code><br />
Import-Module ServerManager<br />
Add-WindowsFeature NET-Framework,RSAT-ADDS,ADLDS -Restart<br />
</code><br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/1-Powershell-AddFeature.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/1-Powershell-AddFeature-300x225.png" alt="1-Powershell-AddFeature" title="1-Powershell-AddFeature" width="300" height="225" class="aligncenter size-medium wp-image-631" /></a><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
Once the machine has restarted you will need to ensure you set the machine name and a DNS suffix.</p>
<p>Assuming the checks all work you can click install and off you go;<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/2-Complete.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/2-Complete-300x225.png" alt="2-Complete" title="2-Complete" width="300" height="225" class="aligncenter size-medium wp-image-632" /></a><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
Once all is installed the next step is to prepare a config bundle / auth package (I can&#8217;t quite remember what Microsoft call it) by issuing the following command in the EMS on the Edge server;<br />
<code>New-EdgeSubscription -FileName "C:\EdgeSubscriptionInfo.xml"</code></p>
<p>With that done you can either attempt to import the file via the EMS on a Hub Transport server or utilise the EMC. I chose the EMC as I kept on running into syntax errors and I was being impatient;<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/4-EdgeImportFail.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/4-EdgeImportFail-300x224.png" alt="4-EdgeImportFail" title="4-EdgeImportFail" width="300" height="224" class="aligncenter size-medium wp-image-638" /></a><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
Unfortunately I hit an issue which was probably due to a very poor choice of mine in transfering the file. A quick rethink of moving the file and the Edge Synchronisation was complete;<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/5-EdgeImportSuccessWarning.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/06/5-EdgeImportSuccessWarning-300x224.png" alt="5-EdgeImportSuccessWarning" title="5-EdgeImportSuccessWarning" width="300" height="224" class="aligncenter size-medium wp-image-639" /></a><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
The dialog shows a warning claiming the port 50636 needs to be available and the host be contactable, I checked with telnet and all was OK. So maybe the warning icon was just to draw my attention to it.</p>
<p>Once that is done simply issue the command;</p>
<p><code>Start-EdgeSynchronization</code></p>
<p>Unfortunately within minutes of me adding this server as a secondary MX I received a spam message which wasn&#8217;t very fun;</p>
<p><code>Return-Path: XXXXXXXXXX@yahoo.com<br />
X-MS-Exchange-Organization-PRD: yahoo.com<br />
Received-SPF: None (XXX-XXXX-XX.networksaremadeofstring.co.uk: XXXXXXXXXX@yahoo.com does not designate permitted sender hosts)<br />
X-MS-Exchange-Organization-PCL: 2<br />
X-MS-Exchange-Organization-Antispam-Report: DV:3.3.5705.600;SID:SenderIDStatus None;OrigIP:195.XXX.XXX.122<br />
X-MS-Exchange-Organization-SCL: 5<br />
X-MS-Exchange-Organization-SenderIdResult: NONE<br />
X-MS-Exchange-Organization-AuthSource: XXX-XXXX-XX.networksaremadeofstring.co.uk<br />
X-MS-Exchange-Organization-AuthAs: Anonymous</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2010/06/21/deploying-exchange-2010-edge-transport-server-on-windows-server-2008-r2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing Exchange 2007 (on Server 2008) from an Exchange 2010 Environment</title>
		<link>http://blog.networksaremadeofstring.co.uk/2010/03/10/removing-exchange-2007-on-server-2008-from-an-exchange-2010-environment/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2010/03/10/removing-exchange-2007-on-server-2008-from-an-exchange-2010-environment/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 12:12:07 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=574</guid>
		<description><![CDATA[With my new Exchange 2010 environment working quite happily it was time to remove the old 2007 stuff from the setup. This is extremely easy to do but I haven&#8217;t posted anything in a while so I thought I&#8217;d document the process. To start just load up the Programs and Features section of Control Panel, [...]]]></description>
			<content:encoded><![CDATA[<p>With my new Exchange 2010 environment working quite happily it was time to remove the old 2007 stuff from the setup.</p>
<p>This is extremely easy to do but I haven&#8217;t posted anything in a while so I thought I&#8217;d document the process.</p>
<p>To start just load up the Programs and Features section of Control Panel, choose Exchange and select Uninstall.<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step1-300x223.png" alt="uninstall_exchange2007_on_2008_step1" title="uninstall_exchange2007_on_2008_step1" width="300" height="223" class="aligncenter size-medium wp-image-575" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
The first screen is utterly pointless<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step2-300x223.png" alt="uninstall_exchange2007_on_2008_step2" title="uninstall_exchange2007_on_2008_step2" width="300" height="223" class="aligncenter size-medium wp-image-576" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>At the next screen you need to deselect the options you no longer require. Ideally as I&#8217;m Uninstalling and not Modifying the installation I&#8217;d have thought you&#8217;d select that which you want to remove.<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step3-300x223.png" alt="uninstall_exchange2007_on_2008_step3" title="uninstall_exchange2007_on_2008_step3" width="300" height="223" class="aligncenter size-medium wp-image-577" /><br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step4-300x223.png" alt="uninstall_exchange2007_on_2008_step4" title="uninstall_exchange2007_on_2008_step4" width="300" height="223" class="aligncenter size-medium wp-image-578" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Clicking next will start the uninstall process<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step5-300x223.png" alt="uninstall_exchange2007_on_2008_step5" title="uninstall_exchange2007_on_2008_step5" width="300" height="223" class="aligncenter size-medium wp-image-579" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>Unfortunately even though this machine wasn&#8217;t actually doing anything there was still a connector that used this server as a source transport server so the uninstall of the Hub Transport Role failed.<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step6-300x223.png" alt="uninstall_exchange2007_on_2008_step6" title="uninstall_exchange2007_on_2008_step6" width="300" height="223" class="aligncenter size-medium wp-image-580" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
To resolve this all you need to do is load up the Exchange 2010 Management console, navigate to the Hub Transport role within the Organisation Configuration and in the Send Connectors tab remove the Connector that uses the server as a source.<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step7-300x223.png" alt="uninstall_exchange2007_on_2008_step7" title="uninstall_exchange2007_on_2008_step7" width="300" height="223" class="aligncenter size-medium wp-image-581" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Running the uninstaller again allows all the Readiness Checks to pass<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step8-300x223.png" alt="uninstall_exchange2007_on_2008_step8" title="uninstall_exchange2007_on_2008_step8" width="300" height="223" class="aligncenter size-medium wp-image-582" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Nearly 2 hours later <em>(This machine had virtually no RAM as I&#8217;d allocated it elsewhere)</em> the uninstall completed<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2010/03/uninstall_exchange2007_on_2008_step9-300x223.png" alt="uninstall_exchange2007_on_2008_step9" title="uninstall_exchange2007_on_2008_step9" width="300" height="223" class="aligncenter size-medium wp-image-583" /><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Easy as anything.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2010/03/10/removing-exchange-2007-on-server-2008-from-an-exchange-2010-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 with Windows Server 2008</title>
		<link>http://blog.networksaremadeofstring.co.uk/2009/12/01/exchange-2010-with-windows-server-2008/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2009/12/01/exchange-2010-with-windows-server-2008/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 23:51:07 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=551</guid>
		<description><![CDATA[With Exchange 2010 available on MSDN I decided to take the risk and jump straight into a migration as the only thing as fun as a well planned migration is shooting from the hip on full auto. Exchange 2010 cannot co-exist with Exchange 2007 unless it is SP2. The Exchange 2007 SP2 install was exceptionally [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/11/Exchange2010.png" alt="Exchange2010" title="Exchange2010" width="80" height="89" class="alignleft size-full wp-image-560" />With Exchange 2010 available on MSDN I decided to take the risk and jump straight into a migration as the only thing as fun as a well planned migration is shooting from the hip on full auto.<br />
<br/><br />
<br/><br />
Exchange 2010 cannot co-exist with Exchange 2007 unless it is SP2. The <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4c4bd2a3-5e50-42b0-8bbb-2cc9afe3216a&#038;displaylang=en">Exchange 2007 SP2 install</a> was exceptionally pain free <em>(It was so easy I may not sleep properly tonight)</em> and with that done it was time to start preparing my new Exchange 2010 server.</p>
<p>A base copy of Windows Server 2008 <em>(non R2)</em> will have the following pre-requisites;<br />
<em><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&#038;displaylang=en">.Net 3.5 (SP1)</a><br />
<a href="http://support.microsoft.com/kb/968929">PowerShell 2.0</a><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC&#038;displaylang=en">Office 2007 System Converter Filter Pack</a><br />
</em></p>
<p>Once these are installed you will need to wield ServerManagerCmd and get some other things installed;<br />
<strong><br />
ServerManagerCmd -i RSAT-ADDS<br />
ServerManagerCmd -i Web-Server<br />
ServerManagerCmd -i Web-ISAPI-Ext<br />
ServerManagerCmd -i Web-Metabase<br />
ServerManagerCmd -i Web-Lgcy-Mgmt-Console<br />
ServerManagerCmd -i Web-Basic-Auth<br />
ServerManagerCmd -i Web-Digest-Auth<br />
ServerManagerCmd -i Web-Windows-Auth<br />
ServerManagerCmd -i Web-Dyn-Compression<br />
ServerManagerCmd -i Web-Net-Ext<br />
ServerManagerCmd -i NET-WIN-CFAC<br />
</strong></p>
<p>This went exceptionally smoothly and then it was time to run the Exchange 2010 setup.</p>
<p>Unfortunately it threw an error regarding the Net.Tcp Port Sharing service needing to be set to automatic;<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/11/PortSharing-300x261.png" alt="PortSharing" title="PortSharing" width="300" height="261" class="aligncenter size-medium wp-image-558" /><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
To fix this just set the service to auto start;<br />
<strong>sc config NetTcpPortSharing start= auto</strong></p>
<p>A quick retry of the Readiness checks came back with a clean bill of health and we are good to go!</p>
<p>Just over half an hour later Exchange 2010 is installed and ready to go!<br />
<img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/11/Finished-300x261.png" alt="Finished" title="Finished" width="300" height="261" class="aligncenter size-medium wp-image-567" /><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
Since my last post regarding Exchange I&#8217;ve been using the Active Directory Certification Services to handle all my SSL stuff which worked lovely with IIS7 and Exchange 2010 so there was no need to do any of the crazy private key recovery stuff as we did with Exchange 2007.</p>
<p>A full install and even a test mailbox migration in just over an hour, not bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2009/12/01/exchange-2010-with-windows-server-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilising Read Only Domain Controllers to Leverage Hosted Active Directory</title>
		<link>http://blog.networksaremadeofstring.co.uk/2009/08/20/utilising-read-only-domain-controllers-to-leverage-hosted-active-directory/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2009/08/20/utilising-read-only-domain-controllers-to-leverage-hosted-active-directory/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 19:57:57 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Datacenter]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Networks]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=533</guid>
		<description><![CDATA[One of the common issues that appears when integrating a hybrid vision of Hosted Exchange with someones existing infrastructure (so not really Hosted Exchange at all!) is synchronising credentials between the Exchange Server and the local machines or for the more tech savvy the &#8216;hackiness&#8217; of having disparate forests. Cross Forest trusts are a possibility [...]]]></description>
			<content:encoded><![CDATA[<p>One of the common issues that appears when integrating a hybrid vision of Hosted Exchange with someones existing infrastructure <em>(so not really Hosted Exchange at all!)</em> is synchronising credentials between the Exchange Server and the local machines or for the more tech savvy the &#8216;hackiness&#8217; of having disparate forests. </p>
<p>Cross Forest trusts are a possibility and merging one with the other <em>(i.e having the Hosted Exchange solution bound to the existing domain)</em> is another but there are many issues with that <em>(mostly political)</em>. </p>
<p>What I intend to do is utilise the &#8216;Branch office&#8217; concept that Read Only Domain Controllers were designed for to mock up a solution for Hosting the entire AD infrastructure remotely and having R/O DC&#8217;s on the customer premises. </p>
<h2>What now?</h2>
<p>For no other reason than that of satisifying my curiosity I built an entire AD infrastructure hosted at the data center and then had a remote &#8216;office&#8217; running for a day without a local DC and then the following day with a Read Only Domain Controller sitting there. </p>
<p>There&#8217;s nothing new or crazy here other than maybe the fact that most people move bits of their AD infrastructure to the DC when its bandwidth requirements overwhelm their resources. What I&#8217;m playing with is the idea of having everything remote and only putting the stuff you need (NAS etc) in the office.</p>
<h2><strong>The Test</strong></h2>
<p>In the Red Corner we have a full Active Directory and Exchange infrastructure at the DC and then the &#8216;offices&#8217; were built using a few Terminal Services servers  running a respective amounts of users. The idea is to monitor traffic before dropping in a RO DC and then again afterwards. </p>
<h2><strong>The Infrastructure</strong></h2>
<h2>Hosted Infrastructure</h2>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/hosted-infrastructure.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/hosted-infrastructure-101x300.png" alt="" title="hosted-infrastructure" width="101" height="300" class="alignnone size-medium wp-image-170" /></a> The Hosted infrastructure consists of a relatively standard Exchange 2007 deployment (if you follow the guidelines) visible to the world (selected ports only) is an Edge Transport server for handling the initial mail connections and the Client Access Server. Behind those is the Mailbox and Hub Transport (in reality these were on the same box but the diagram wasn&#8217;t as symmetrical then!).<br />
<br/><br />
The Domain controller is a special case because whilst we have no reason for the Internet at large to talk to it we need the read only Domain Controller at the client site to be able to communicate with it so an IPSEC LAN to LAN VPN was required.<br />
<br/><br/><br/><br/></p>
<h2><strong>The Results</strong></h2>
<p><br/></p>
<h2>AD Traffic From the TS to the Remote DC No Local DC</h2>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/replication_traffic_no_local_dc.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/replication_traffic_no_local_dc.png" alt="" title="Active Directory Traffic From the TS to the Remote DC" width="500" height="166" class="aligncenter size-full wp-image-187" /></a><br />
<br/><br/></p>
<h2>AD Traffic to the Remote DC with Local RODC</h2>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/replication_traffic_rodc.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/replication_traffic_rodc.png" alt="" title="Active Directory Traffic to the Remote DC with A Local RODC" width="500" height="166" class="aligncenter size-full wp-image-189" /></a><br />
<br/><br/><br/></p>
<h2>OWA Traffic During the Tests</h2>
<p><em>Scripted behavior &#8211; so it was the same(ish) on both days</em><br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/traffic-owa.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/09/traffic-owa.png" alt="" title="OWA Traffic" width="500" height="203" class="aligncenter size-full wp-image-195" /></a><br />
<br/><br/><br/></p>
<h2>Conclusion</h2>
<p>Well it did exactly what I expected it to do so nothing ground breaking there. It was interesting to see the spike just after I logged all the fake users off the Terminal Servers.</p>
<p>R/O DC&#8217;s were used because in an ideal world customers shouldn&#8217;t have write access to an AD infrastructure that a SysAdmin has an SLA to honor!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2009/08/20/utilising-read-only-domain-controllers-to-leverage-hosted-active-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Information Dispersal (Cloud) Storage and Exchange 2007</title>
		<link>http://blog.networksaremadeofstring.co.uk/2009/01/07/information-dispersal-cloud-storage-and-exchange-2007/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2009/01/07/information-dispersal-cloud-storage-and-exchange-2007/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 23:57:44 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=431</guid>
		<description><![CDATA[Recently I&#8217;ve been looking at CleverSafe&#8217;s Storage Cloud product and as part of the research I noticed that a small scale DSNet provides more than enough IOPs for small scale mailbox installations. I took a selection of decommissioned mid-range [Pentium Dual Core / SATA I Disks etc] Workstations to which I installed CentOS 5.0 and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/01/infrastructure.jpg"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/01/infrastructure-300x170.jpg" alt="" title="infrastructure" width="300" height="170" class="aligncenter size-medium wp-image-433" style="border-width: 0px;" /></a>Recently I&#8217;ve been looking at <a href="http://www.cleversafe.org/">CleverSafe&#8217;s</a> Storage Cloud product and as part of the research I noticed that a small scale DSNet provides more than enough IOPs for small scale mailbox installations.</p>
<p>I took a selection of decommissioned mid-range <em>[Pentium Dual Core / SATA I Disks etc]</em> Workstations to which I installed CentOS 5.0 and the CleverSafe software. 4 IDE SliceStores and an Accesser provides enough IOP throughput for around 50 mailboxes. Ramping this up to 6 SATA SliceStores and there is enough IOP throughput for 70 mailboxes.</p>
<p>We&#8217;re obviously not talking about large scale Enterprise / Data Centre solutions here but for a small scale Exchange install <em>[I'm thinking Test Lab setups maybe at a push a SOHO install]</em> that needs reliable disk storage this seems to work quite well especially if used as the target storage for LCR <em>[Consider that powering up a couple of old workstations is probably cheaper than the purchase of a decent SATA II hardware RAID card and extra disks.]</em></p>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/01/randomhardwareiops.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2009/01/randomhardwareiops-300x236.png" alt="" title="randomhardwareiops" width="300" height="236" class="aligncenter size-medium wp-image-462" style="border-width: 0px;"/></a>Utilising a 1Gb/s Network would improve the throughput considerably but for this test I was only utilising 100Mb/s between the Accesser and the Exchange server with a latency of around 40m/s so a constant Read Throughput of 2.8Mb/s will have to do.<br />
&nbsp;<br />
&nbsp;<br />
DSNet offers access to the Storage &#8216;Vault&#8217; via an iSCSI interface so there isn&#8217;t any extra work involved in preparing the Vault for use with Exchange 2007. Since this isn&#8217;t a normal SCSI device you have to disable &#8220;Synchronous Transfer&#8221; and &#8220;Tagged Queuing&#8221;. Their purposes are detailed <a href="http://support.microsoft.com/kb/233541">here</a>. Since these are enhancements to the operation of SCSI it shouldn&#8217;t adversely affect the operation of Exchange.</p>
<p>With the disks mounted and formatted it was a simple matter of changing the Queue and DB locations with PowerShell:<br />
<code>Move-StorageGroupPath -Identity "Second Storage Group" -LogFolderPath:"D:\Mailbox\Second Storage Group" -SystemFolderPath:"D:\Mailbox\Second Storage Group"</code></p>
<p>Running the Exchange server for a couple of days shows no degradation in usability even when a DSNet storage Vault was used for the Mailbox stores as well as the LCR.</p>
<p>Looking at other DSNets that are out there and looking at the potential for improvements in this DSNet then it may be possible to scale a DSNet out to production grade usability, if I have enough time and can get hold of some newer SATA II disks, better machines and a gigabit LAN infrastructure I&#8217;ll do a proper experiment and see what can be acheived.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2009/01/07/information-dispersal-cloud-storage-and-exchange-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Has Disconnecting McColo Really Resulted in a Drop in Spam?</title>
		<link>http://blog.networksaremadeofstring.co.uk/2008/11/14/has-disconnecting-mccolo-really-resulted-in-a-drop-in-spam/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2008/11/14/has-disconnecting-mccolo-really-resulted-in-a-drop-in-spam/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 19:56:11 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=366</guid>
		<description><![CDATA[When I heard the news that McColo had been pulled I wondered if we&#8217;d actually see a drop in Hostile traffic and Spam. Turns out that there has been a massive drop in Spam levels coming through some of the filters I have dotted around the place. C&#038;C or Spam Hosts? I wrote a little [...]]]></description>
			<content:encoded><![CDATA[<p>When I heard the <a href="http://www.theregister.co.uk/2008/11/12/mccolo_goes_silent/">news</a> that McColo had been pulled I wondered if we&#8217;d actually see a drop in Hostile traffic and Spam.</p>
<p>Turns out that there has been a massive drop in Spam levels coming through some of the filters I have dotted around the place.</p>
<p style="text-align:center;">
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam-week2.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam-week2-300x81.png" alt="" title="spam-week2" width="300" height="81" style="text-align:center;" /></a></p>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam-week_3.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam-week_3-300x81.png" alt="" title="spam-week_3" width="300" height="81" class="aligncenter size-medium wp-image-382" /></a></p>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/hourly_spam1.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/hourly_spam1-300x148.png" alt="" title="hourly_spam1" width="300" height="148" class="aligncenter size-medium wp-image-379" /></a>
</p>
<h2>C&#038;C or Spam Hosts?</h2>
<p>I wrote a little script to see what percentages of machines that had made incoming connections that were then classified as spam were still alive.<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam_hosts.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spam_hosts-300x180.png" alt="" title="spam_hosts" width="300" height="180" class="aligncenter size-medium wp-image-369" /></a></p>
<p>The majority of hosts were still contactable in some way shape or form but weren&#8217;t listening on known SMTP ports, some were alive and actively listening on SMTP ports. A small percentage were totally offline.</p>
<p>This basic test appears to indicate that the Datacenter that went offline was merely a Command &#038; Control hub rather than actual spamming hosts.</p>
<h2>Elsewhere</h2>
<p>Just to make sure that there were no anomolies with my graphs I checked a few other places and it does indeed appear that there is a worldwide drop in spam:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/big-all-spam-ratio1week.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/big-all-spam-ratio1week-300x146.png" alt="" title="big-all-spam-ratio1week" width="300" height="146" class="alignnone size-medium wp-image-390" /></a><br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spamweek.gif"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/11/spamweek-300x208.gif" alt="" title="spamweek" width="300" height="208" class="alignnone size-medium wp-image-391" /></a><br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
&nbsp; <br />
It probably won&#8217;t be long until the levels are back where they used to be but for now our AntiSpam servers can rest for a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2008/11/14/has-disconnecting-mccolo-really-resulted-in-a-drop-in-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPv6 Only Exchange 2007</title>
		<link>http://blog.networksaremadeofstring.co.uk/2008/10/15/ipv6-only-exchange-2007/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2008/10/15/ipv6-only-exchange-2007/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 23:48:13 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[NAMOS]]></category>
		<category><![CDATA[Networks]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=236</guid>
		<description><![CDATA[We already know that disabling IPv6 on a 2008 &#038; Exchange 2007 server breaks things but what if we go IPv6 only? IPv6 Only Domain Controllers: The installation didn&#8217;t cause any trouble but after initially logging on and running a DCDiag we see this: It turns out that the install of the DNS Server had [...]]]></description>
			<content:encoded><![CDATA[<p>We already know that disabling IPv6 on a 2008 &#038; Exchange 2007 server breaks things but what if we go IPv6 only?</p>
<h2>IPv6 Only Domain Controllers:</h2>
<p>The installation didn&#8217;t cause any trouble but after initially logging on and running a DCDiag we see this:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/first_dcdiag.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/first_dcdiag-289x300.png" alt="" title="Initial DCDiag After Installing AD" width="289" height="300" class="aligncenter size-medium wp-image-237" /></a></p>
<p>It turns out that the install of the DNS Server had set the NIC&#8217;s properties to be ::1 but the DNS Server was only listening on the Static Site Local address FEC0::2 and its self assigned Link Local. This of course caused all DNS reliant checks to fail and cause a whole world of pain.<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<p>Changing the NIC DNS properties to FEC0::2 resulted in a different set of errors:</p>
<p><a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/second_dcdiag.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/second_dcdiag-148x300.png" alt="" title="Second DCDiag Run" width="148" height="300" class="aligncenter size-medium wp-image-243" /></a></p>
<p>There were actually 10&#8242;s of the System Log errors which made me panic for a bit till I remembered that this is expected behaviour. The expected behaviour is that if there are any Warnings or other bad apples in the Event logs DCDiag will throw some unfriendly errors. </p>
<p>These errors appear to be even <em>more</em> unfriendly owing to a <a href="http://support.microsoft.com/kb/934640">bug</a> in how the Event Viewer copes with IPv6 address.<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<p>A quick purge or the Event logs later and we are back in business:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/third_dcdiag.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/third_dcdiag-176x300.png" alt="" title="Third DCDiag" width="176" height="300" class="alignright size-medium wp-image-265" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<h2>Preparing the Exchange Server</h2>
<p>Exchange 2007 has several prerequisites that need to be installed before Setup can be successfully launched. First I&#8217;ll add the prerequisites that don&#8217;t affect / require a machine to be bound to a domain, if they install correctly then I&#8217;ll bind it to the domain (<em>and see how that goes</em>) and finish off with the prerequisites that require a machine to be bound to the domain.</p>
<p>Installing the non-domain related roles / features went smoothly:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/servermanager_cmd_1.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/servermanager_cmd_1-300x240.png" alt="" title="Non Domain Roles and Features" width="300" height="240" class="aligncenter size-medium wp-image-274" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
Unfortunately binding to the domain was not as smooth:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/domain_bind_error.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/domain_bind_error-300x275.png" alt="" title="domain_bind_error" width="300" height="275" class="aligncenter size-medium wp-image-279" /></a></p>
<p>The first issue to resolve is whether Windows Server 2008 actually wants a A record or whether someone just hasn&#8217;t got round to updating the error dialog.<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
Firing up the NSLookup tool we see that [despite some timeouts (??)] DNS is working as expected. Although this was evident because the SRV lookups for the domain resulted in the name of the Domain Controller.<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/nslookup_success.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/nslookup_success-300x148.png" alt="" title="nslookup_success" width="300" height="148" class="aligncenter size-medium wp-image-280" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
So I did what every curious Windows Admin knows might fix the problem, do it again. And who&#8217;d have guessed it?<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/domain_bind_succss.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/domain_bind_succss-266x300.png" alt="" title="Domain Bind Success" width="266" height="300" class="aligncenter size-medium wp-image-281" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
Hmm, well with that sorted and following a quick reboot its time to see if the final prerequisite piece of the puzzle works:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/rsat-adds_successful_use.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/rsat-adds_successful_use-158x300.png" alt="" title="rsat-adds_successful_use" width="158" height="300" class="aligncenter size-medium wp-image-289" /></a><br />
Excellent! </p>
<p>There are a few errors but these may not be show stoppers. </p>
<p>Onto the next stage!<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<h2>Installing Exchange 2007 on an IPv6 Only 2008 Server</h2>
<p>Well unfortunately we&#8217;ve stumbled at the first hurdle:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/exchange_setup_fail.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/exchange_setup_fail-300x261.png" alt="" title="exchange_setup_fail" width="300" height="261" class="aligncenter size-medium wp-image-294" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
The <a href="http://technet.microsoft.com/en-gb/library/bb629624.aspx">link</a> the error mentions tells us the following:<br />
<code><br />
IPv6 is only supported in Exchange 2007 SP1 when it is installed on a Windows Server 2008 computer that has both IPv4 and IPv6 enabled. If you disable the IPv4 protocol, Exchange 2007 SP1 can't support IPv6.</code></p>
<p>Well screw that, the Install button hasn&#8217;t greyed out so onwards to Victory!<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/setup_success.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/setup_success-300x261.png" alt="" title="setup_success" width="300" height="261" class="aligncenter size-medium wp-image-300" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
Setup claims to have installed, lets see if the SMTP element is contactable:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/telnet_success.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/telnet_success-300x229.png" alt="" title="telnet_success" width="300" height="229" class="aligncenter size-medium wp-image-302" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<h2>Using Exchange 2007 in a Native IPv6 Environment</h2>
<p>OWA worked without any major hassles and sending internal email worked fine. Unfortunately trying to send email to an &#8216;external&#8217; host resulted in a &#8220;451 4.4.0 DNS Query Failed&#8221;. </p>
<p>Looking through the Event Logs I found this:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/dns_error.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/dns_error-300x207.png" alt="" title="dns_error" width="300" height="207" class="aligncenter size-medium wp-image-307" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
Running the suggested powershell command did indeed show that no DNS Servers were set:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/powershell_clue.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/powershell_clue-300x148.png" alt="" title="powershell_clue" width="300" height="148" class="aligncenter size-medium wp-image-308" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
No matter what I did using netsh or the NIC GUI the error remained, I resorted to setting the DNS entries in the Hub Transport server properties:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/dns_properties.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/dns_properties-262x300.png" alt="" title="dns_properties" width="262" height="300" class="aligncenter size-medium wp-image-309" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
We now get another error but hey at least its progress:<br />
<code>451 4.4.0 primary target IP address responded with "421.4.4.2 unable to connect."attempted failover to alternate host, but that did not succeed.Either there are no alternate hosts, or delivery failed to all alternate hosts.</code></p>
<p>Turns out I forgot to make the Postfix server listen on its IPv6 address :/ A few quick config changes later and Victory is mine!<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/postfix_success.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/10/postfix_success-300x229.png" alt="" title="postfix_success" width="300" height="229" class="aligncenter size-medium wp-image-312" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<h2>Conclusion</h2>
<p>Well its a bit painful to get going but it appears to work once setup. I&#8217;ll keep this going with some scheduled in and out email to see if it dies after a week or so.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2008/10/15/ipv6-only-exchange-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dealing with Massive Spam Levels In Postfix</title>
		<link>http://blog.networksaremadeofstring.co.uk/2008/09/01/dealing-with-massive-spam-levels-in-postfix/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2008/09/01/dealing-with-massive-spam-levels-in-postfix/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 19:15:12 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=109</guid>
		<description><![CDATA[Recently I encountered a situation where a vanilla install of Postfix had been targeted by what appeared to be a Spam Botnet. Bizarrely this server was what you could call an &#8216;Edge Server&#8217; but it didn&#8217;t have any AntiVirus or AntiSpam to be honest it was pretty useless. There were three issues to clear up. [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I encountered a situation where a vanilla install of Postfix had been targeted by what appeared to be a Spam Botnet. Bizarrely this server was what you could call an &#8216;Edge Server&#8217; but it didn&#8217;t have any AntiVirus or AntiSpam to be honest it was pretty useless.</p>
<p>There were three issues to clear up. First there were 2,435,239 emails from the Botnet destined for a domain that was no longer hosted on the &#8216;backend&#8217; server. Secondly none of this email was being Spam checked and finally the massive queues meant that the 568,372 legitimate emails stuck in the queue were being delayed by upto 8 hours.</p>
<h2>Preventing Spammers getting to the queues</h2>
<p>As it was evident that a Botnet was sending the spam the first thing to do was to enforce some of the settings that Postfix is capable of doing &#8216;out of the box&#8217; to try and stop these hosts bombarding the server. [More information about these settings here: <a href="http://blog.networksaremadeofstring.co.uk/2007/12/23/leveraging-virtualisation-to-fight-spam/">Leveraging Virtualisation to Fight Spam</a>]<br />
<code><br />
#Stop people hammering the hell out of us<br />
smtpd_data_restrictions = reject_unauth_pipelining<br />
<br />
#Start off with some blacklisting<br />
# Check our black / white list | RealtimeBlacklist | Realtime blacklist<br />
smtpd_client_restrictions = permit_sasl_authenticated, check_client_access hash:/etc/postfix/client_access, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dul.dnsbl.sorbs.net<br />
<br />
#Make clients use EHLO / HELO verbs<br />
smtpd_helo_required = yes<br />
<br />
#If we are being REALLY strict make them conform to the RFC<br />
#strict_rfc821_envelopes = yes<br />
<br />
#Now we make them say hello politely<br />
# Crap remote hostname remote host not FQDN<br />
smtpd_helo_restrictions = reject_invalid_hostname, reject_non_fqdn_hostname<br />
<br />
# Non FQDN target email Allow inside Only relay our domains<br />
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_non_fqdn_recipient, permit_mynetworks, reject_unauth_destination<br />
</code></p>
<h2>Spam Checking</h2>
<p>An article on <a href="http://www.freespamfilter.org/FC4.html">FreeSpamFilter.org</a> shows you how to add Amavisd-new, SpamAssassin, Pyzor, Razor, DCC, and ClamAV to a Postfix setup. The article is geared towards Fedora 4 but works equally well on CentOS (the server in question) and RHEL etc. The article is very indepth and doesn&#8217;t require any further explaination.</p>
<h2>Clearing Out the Queues</h2>
<p>The final issue (<em>and the bit of this Blog that is different to the Virtualisation one linked to earlier</em>) is that I <strong>had</strong> to clear out these queues <em>no matter what</em>! </p>
<p>Postfix have some <a href="http://www.postfix.org/QSHAPE_README.html">detailed explainations</a> of some of the troubleshooting tools available and advice on what to do in this situation.</p>
<p>I however decided to write some &#8216;Sledgehammer to open a nut&#8217; type scripts to fix the issue.</p>
<p>First of all with the number of emails in the queue qshape was unusable and the majority of the mails were deferred. So this script looks in the deferred queue directory, matches the domain name in question and then calls postsuper to delete the mail from the queue:</p>
<p><code><br />
#!/bin/bash<br />
lastid=0<br />
<br />
cd /var/spool/postfix/defer<br />
grep -R "DOMAINNAME" * | awk '{print $1}' | while read line; do<br />
&nbsp;&nbsp;&nbsp;x=${line%:*}<br />
&nbsp;&nbsp;&nbsp;mailid=${x#*/}<br />
&nbsp;&nbsp;&nbsp;if [ $lastid = $mailid ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo Deleting MailID $mailid<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;postsuper -d ${mailid%:*}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastid=${mailid%:*}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastid=${mailid%:*}<br />
&nbsp;&nbsp;&nbsp;fi<br />
done<br />
</code></p>
<p>This second script is for handling the massive amount of bouncebacks that had been generated and were sitting there trying to be delivered to either some poor persons back scatter targetted address or non existant domain. Something to note is that this would obviously have deleted all legitimate bouncebacks etc.</p>
<p><code><br />
#!/bin/bash<br />
# Delete all bounce backs from MAILER-DAEMON<br />
# Blah blah rfc compliance blah blah<br />
postqueue -p | grep MAILER-DAEMON | awk '{print $1}' | while read line; do<br />
&nbsp;&nbsp;&nbsp;echo Deleting MailID $line<br />
&nbsp;&nbsp;&nbsp;postsuper -d ${line%\**}<br />
done;<br />
</code></p>
<p>I&#8217;m pretty sure that some people will object to these scripts but they did the job and the server is now swatting these botnet spam surges with ease.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2008/09/01/dealing-with-massive-spam-levels-in-postfix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EdgeTransport.exe.config Cmdlet</title>
		<link>http://blog.networksaremadeofstring.co.uk/2008/08/11/edgetransportexeconfig-cmdlet/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2008/08/11/edgetransportexeconfig-cmdlet/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 22:55:56 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=106</guid>
		<description><![CDATA[In the previous post on this subject I mentioned that I&#8217;ve been working on a little project regarding the EdgeTransport.exe.config file. With the advent of PowerShell I decided to look into writing my own Cmdlets and the EdgeTransport file seemed like a good place to start. To get started you&#8217;ll need to download the Cmdlet [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post on this subject I mentioned that I&#8217;ve been working on a little project regarding the EdgeTransport.exe.config file. With the advent of PowerShell I decided to look into writing my own Cmdlets and the EdgeTransport file seemed like a good place to start.</p>
<p>To get started you&#8217;ll need to download the Cmdlet from <a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/Directs/NAMOS-HiddenTransportConfig.zip">here</a>.</p>
<p>Once download you will need to extract it somewhere (in this example I just dropped it in C:\) and then install it by running the following command:<br />
 <code>C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe C:\NAMOS-HiddenTransportConfig.dll</code></p>
<p>You should get the following output:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/installutil.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/installutil-300x212.png" alt="Using InstallUtil to install the cmdlet" title="installutil" width="300" height="212" class="size-medium wp-image-119" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Next Load up PowerShell and run the following command:<br />
<code>Get-PSSnapin -registered</code> </p>
<p>You should see something similar to the following:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-pssnapin.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-pssnapin-300x148.png" alt="" title="get-pssnapin" width="300" height="148" class="alignright size-medium wp-image-120" /></a><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br />
Now you can either type<br />
<code>add-pssnapin NAMOS-HiddenTransportConfig</code><br />
into the console each time or create a shortcut similar to the following:<br />
<code>%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -command add-pssnapin NAMOS-HiddenTransportConfig</code></p>
<p>If you typed it into your current console you will not get any feedback unless it fails:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/add-pssnapin.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/add-pssnapin-300x148.png" alt="" title="add-pssnapin" width="300" height="148" class="aligncenter size-medium wp-image-121" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>Now that the cmdlet is installed you have two commands at your disposal:<br />
<code>get-HiddenTransportConfig</code></p>
<p>This will get the entire EdgeTransport.exe.config file and format it nicely:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfig.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfig-212x300.png" alt="" title="get-hiddentransportconfig" width="212" height="300" class="alignnone size-medium wp-image-138" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>You can pass a single arguement to get-HiddenTransportConfig which is the name of a key to retrieve the details of just that key:<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfig-singlekey.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfig-singlekey-300x148.png" alt="" title="get-hiddentransportconfig-singlekey" width="300" height="148" class="alignnone size-medium wp-image-139" /></a><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
The other command at your disposal is:<br />
<code>get-HiddenTransportConfigDescription</code></p>
<p>This takes an arguement of a key name and then queries this website to get the most up to date description of that keys purpose.<br />
<a href="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfigdescription.png"><img src="http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/get-hiddentransportconfigdescription-300x148.png" alt="" title="get-hiddentransportconfigdescription" width="300" height="148" class="alignnone size-medium wp-image-140" /></a><br />
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br />
Feel free to provide any feedback or suggestions. Please bare in mind that this software is provided AS IS without any warranty whatsoever</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2008/08/11/edgetransportexeconfig-cmdlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Researching Exchange 2007&#8242;s EdgeTransport.exe.config</title>
		<link>http://blog.networksaremadeofstring.co.uk/2008/08/02/researching-exchange-2007s-edgetransportexeconfig/</link>
		<comments>http://blog.networksaremadeofstring.co.uk/2008/08/02/researching-exchange-2007s-edgetransportexeconfig/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 20:21:56 +0000</pubDate>
		<dc:creator>Gareth Llewellyn</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[NAMOS]]></category>

		<guid isPermaLink="false">http://blog.networksaremadeofstring.co.uk/?p=68</guid>
		<description><![CDATA[Whilst there are a lot of features in Exchange 2007 that can be configured and tweaked using the GUI and Powershell I have on several occasions (bare in mind I work in Managed hosting so these occasions are not all for the same installation) needed to &#8216;play&#8217; with the settings in EdgeTransport.exe.config file [which should [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst there are a lot of features in Exchange 2007 that can be configured and tweaked using the GUI and Powershell I have on several occasions (<em>bare in mind I work in Managed hosting so these occasions are not all for the same installation</em>) needed to &#8216;play&#8217; with the settings in EdgeTransport.exe.config file [which should be located in C:\Program Files\Microsoft\Exchange Server\Bin\].</p>
<p>EdgeTransport.exe.config appears to be XML which is extremely useful for something else I&#8217;ll be releasing sometime soon and it also makes comprehension a breeze. Unfortunately whilst you can easily understand which variable you are changing its not always obvious what that variable does and what that impact could be. </p>
<p>On the subject of impacting changes it might be good idea to note that the features in this config file are probably hidden away to prevent us from breaking stuff!</p>
<h2><strong>Resource Related</strong></h2>
<h2>EnableResourceMonitoring</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;If you&#8217;ve heard of &#8216;<a href="http://technet.microsoft.com/en-us/library/bb201658(EXCHG.80).aspx">Back Pressure</a>&#8216; then you already know what this key does. Exchange 2007 Resource monitoring is a good idea until it strikes.<br />
<a href='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/backpressureerror.png' title='Back Pressure Warning'><img src='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/backpressureerror.thumbnail.png' alt='Back Pressure Warning' /></a>Of course it should never strike as you should be paying attention to the warnings in the Event Log.  </p>
<p>Back Pressure is a system resource monitoring feature of Exchange 2007 that responds to low resources by refusing incoming mail (<em>its more complicated than that but I&#8217;m bitter</em>)<br />
&nbsp;<br />
The following system resources are monitored as part of the back pressure feature:</p>
<li>Free space on the hard disk drive that stores the message queue database.</li>
<li>Free space on the hard disk drive that stores the message queue database transaction logs.</li>
<li>The number of uncommitted message queue database transactions that exist in memory.</li>
<li>The memory that is used by the EdgeTransport.exe process.</li>
<li>The memory that is used by all processes.</li>
<p>&nbsp;<br />
If email isn&#8217;t being delivered because of BackPressure you can either resolve the issue or change the key to false and restart the Transport service. Microsoft <strong>strongly</strong> discourages disabling back pressure checks.</p>
<p>The following entries are related to Resource Monitoring:<br />
<strong>ResourceMonitoringInterval</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This dictates the interval in which resources are checked the default is 00:00:02 [HH:MM:SS]</p>
<p><strong>PercentageDatabaseDiskSpaceUsedHighThreshold<br />
PercentageDatabaseDiskSpaceUsedMediumThreshold<br />
PercentageDatabaseDiskSpaceUsedNormalThreshold<br />
PercentageDatabaseLoggingDiskSpaceUsedHighThreshold<br />
PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold<br />
PercentageDatabaseLoggingDiskSpaceUsedNormalThreshold<br />
PercentagePrivateBytesUsedHighThreshold<br />
PercentagePrivateBytesUsedMediumThreshold<br />
PercentagePrivateBytesUsedNormalThreshold</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;All these key&#8217;s have defaults of 0 and they define the percentage threshold for whether resource utilisation is considered Normal, Medium or High. The valid range is between 0, 3 &#8211; 100. The caveat is that the value must be lower than the severity above it.</p>
<p><strong>TemporaryStoragePath</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This seems to be some form of swap space, its not where messages get dumped for pickup and its not where queued messages live either. Moving it to a faster disk can&#8217;t hurt.</p>
<h2>QueueDatabase<em>X</em></h2>
<p>One of the reasons why you may run out of disk space is either the transaction logs or the Queue&#8217;s. (<em>By default everything lives on C:\</em>) All queue related settings start with <em>QueueDatabase</em>.</p>
<p><strong>QueueDatabaseBatchSize</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This parameter specifies the number of database I/O operations that can be grouped together before they are executed. Microsoft makes it very clear that you shouldn&#8217;t change this as the default (40) has been chosen carefully to ensure that if the I/O cost of a message exceeds the value specified in the QueueDatabaseBatchSize parameter, that message is committed to the queue database immediately. Otherwise, it will be combined with other messages received, and they will be committed to the queue database together.</p>
<p><strong>QueueDatabaseBatchTimeout</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Waiting for the QueueDatabaseBatchSize buffer to fill could take some time so if the BatchTimeout is reached before the BatchSize limit is reached then the database I/O operations are performed.</p>
<p><strong>QueueDatabaseMaxConnections</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Dictates the number of ESE (<em><a href="http://technet.microsoft.com/en-us/library/aa998171(EXCHG.65).aspx">Extensible Storage Engine</a></em>) database connections that can be open.</p>
<p><strong>QueueDatabaseLoggingFileSize</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Dictates the maximum size of a transaction log file. When the maximum log file size is reached a new log file is opened. (<em>As you can imagine this is what chews through disk space</em>)</p>
<p><strong>QueueDatabaseLoggingBufferSize</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Dictates the size of the memory buffer allocated for the Queue logging.</p>
<p><strong>QueueDatabaseMaxBackgroundCleanupTasks</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Unfortunatly I can&#8217;t find much information about what these cleanup tasks actually are but this key limits how many of them can run concurrently.</p>
<p><strong>QueueDatabaseOnlineDefragEnabled</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Allows the Queue database to be defrag&#8217;d whilst online. Microsoft doesn&#8217;t offer any reasons as to why you would want to disable this.</p>
<p><strong>QueueDatabaseOnlineDefragSchedule</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Specifies the interval between defrag&#8217;s, uses the same HH:MM:SS format as other interval keys.</p>
<p><strong>QueueDatabaseOnlineDefragTimeToRun</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Limits how long the Defrag process can run for, uses the same HH:MM:SS format as other interval keys.</p>
<p><strong>QueueDatabasePath &#038; QueueDatabaseLoggingPath</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;If you can afford to have a completely seperate disk for the Queue DB and Queue logs then this allows you to dictate where they are. After restarting the Transport it will move / recreate the files. </p>
<p><strong>PercentagePhysicalMemoryUsedLimit</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This dicates the maximum percentage of Physical memory that all Exchange (well Transport related) processes can take up. When it hits this limit Message Dehydration starts</p>
<p><strong>DehydrateMessagesUnderMemoryPressure</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;If the limit delcared by PercentagePhysicalMemoryUsedLimit is reached and this key is set to true then in Memory Message content will be flushed based on criticality (i.e it&#8217;ll start removing mime content etc)</p>
<p><strong>versionBucketsHighThreshold<br />
versionBucketsMediumThreshold<br />
versionBucketsNormalThreshold</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;A list of changes that are made to the message queue database is kept in memory until those changes can be committed to a transaction log. Then the list is committed to the message queue database itself. These outstanding message queue database transactions are kept in memory and are known as version buckets. The number of version buckets may increase to unacceptably high levels because of virus issues, problems with the message queue database integrity, or hard disk drive performance. As with other Threshold keys the value of a key can not be larger than a more severe key.</p>
<p><strong>versionBucketsHistoryDepth</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; I can not find any information about this key (<em>which would suggest we should leave it well alone!</em>) but with a default value of only 3 I can only imagine it might refer to the last 3 transactions logs that it has written the versionBuckets to. </p>
<h2><strong>Useful Tweaks</strong></h2>
<h2>PFReplicaAgeThresholdhours</h2>
<p>This key dictates the baseline age for public folder replicas. The public folder database that has the best age rating is selected as the preferred public folder database. </p>
<h2>MaxIdleTimeBeforeResubmit</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;This dictates the amount of time a mailbox or remote delivery queue that can be in a state of retry and messages will still be automatically resubmitted (<em>if the messages are not in a suspended state</em>).</p>
<h2>MailboxDeliveryQueueRetryInterval</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;This key dictates how frequently the mailbox delivery queues on a Hub Transport server try to connect to a Mailbox server destination that can&#8217;t be successfully reached.</p>
<h2>IPFilter<em>X</em>Path</h2>
<p><strong>IPFilterDatabasePath</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This appears to dictate the path for the Content filter database (the Content Filter Agent). This probably isn&#8217;t too read/write intensive so probably doesn&#8217;t need to be moved.</p>
<p><strong>IPFilterDatabaseLoggingPath</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This dictates the log location for Content Filter Agent. As with the Database itself I doubt this is very read/write intentsive so probably doesn&#8217;t need to be moved.</p>
<h2>Shared Transport Database Cache</h2>
<p><strong>DatabaseMaxCacheSize</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This parameter specifies the maximum size of the database cache in memory.</p>
<p><strong>DatabaseCheckPointDepthMax</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This parameter controls the total allowed size of all uncommitted transaction logs that exist on the hard disk drive. Setting the value of the DatabaseCheckPointDepthMax parameter too low can cause significant performance issues because uncommitted transactions are forcibly committed to the database instead of being written to transaction logs.</p>
<p><strong>DatabaseCacheFlushStart<br />
DatabaseCacheFlushStop</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;These parameters enable or disable the removal of cached database transactions from memory when the cache is overused. The values of these parameters represent the percentage of the cache that is unused. When the free database cache resources drop under the specified percentage, a background process writes the cached database transactions to the transaction log.</p>
<h2><em>X</em>PriorityMessageExpirationTimeout</h2>
<p><strong>HighPriorityMessageExpirationTimeout<br />
NormalPriorityMessageExpirationTimeout<br />
LowPriorityMessageExpirationTimeout</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;The message expiration time-out specifies the maximum length of time that a Hub Transport server tries to deliver a failed message. After this time an NDR is generated. The values for these have a slightly different time format as it is d.HH.MM.SS this allows you to specify days without having to count all the hours in 8 days!</p>
<h2><em>X</em>PriorityDelayNotificationTimeout</h2>
<p><strong>HighPriorityDelayNotificationTimeout<br />
NormalPriorityDelayNotificationTimeout<br />
LowPriorityDelayNotificationTimeout</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;After each message delivery failure, the Hub Transport server generates a delay delivery status notification (DSN) message and queues it for delivery to the sender of the undeliverable message. This delay DSN message is sent only after a specified delay notification time-out interval, and only if the failed message wasn&#8217;t successfully delivered during that time. This uses the same d.HH.MM.SS format as the <em>X</em>PriorityMessageExpiration keys.</p>
<h2>MaxPerDomain<em>X</em>PriorityConnections</h2>
<p><strong>MaxPerDomainHighPriorityConnections<br />
MaxPerDomainNormalPriorityConnections<br />
MaxPerDomainLowPriorityConnections</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of connections per domain specifies the maximum number of connections that a Hub Transport server can have open to any single remote domain. I&#8217;m not sure about you but my first impression was that this read as <em>Max Connections Per XPriority Domain</em> and that this allowed you to designate a &#8216;High Priority &#8216; delivery domain. In fact it seems (<em>let me know if I&#8217;m wrong</em>) its the amount of connections available for differing message priorities irrespective of the destination domain. One caveat to remember is that the sum of these values must not exceed MaxPerDomainOutboundConnections. You can check what this value is with the following PowerShell command:</p>
<p><code>Get-TransportServer SERVERNAME | Format-List | findstr /B MaxPerDomainOutboundConnections</code><br />
<a href='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/maxperdomainoutboundconnections.png' title='Power Shell output for command involving MaxPerDomainOutboundConnections'><img src='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/maxperdomainoutboundconnections.thumbnail.png' alt='Power Shell output for command involving MaxPerDomainOutboundConnections' /></a><br />
Obviously you could omit the findstr arguement and view all the settings for this particular server.<br />
&nbsp;</p>
<p><strong>PriorityQueuingEnabled</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;In order to make use of the settings above you will need to ensure that this is set to true</p>
<h2>MaxHighPriorityMessageSize</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp; This allows you to dictate the maximum size of a High priority message coupled with this PowerShell command:<br />
<code>set-mailbox test -DowngradeHighPriorityMessagesEnabled 1</code><br />
You can allow certain users to send quite large High Priority messages. Unfortunatly setting the variable doesn&#8217;t result in any feedback so best to check with the following PowerShell command:<br />
<code>get-mailbox test | fomat-list | findstr /B Downgrade</code><br />
<a href='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/downgradehighpriority_set.png' title='PowerShell output for setting a users DownGradeHighPriority Boolean'><img src='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/downgradehighpriority_set.thumbnail.png' alt='PowerShell output for setting a users DownGradeHighPriority Boolean' /></a> <a href='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/downgradehighpriority_get.png' title='PowerShell output for getting a users DownGradeHighPriority Boolean'><img src='http://blog.networksaremadeofstring.co.uk/wp-content/uploads/2008/08/downgradehighpriority_get.thumbnail.png' alt='PowerShell output for getting a users DownGradeHighPriority Boolean' /></a><br />
<br />&nbsp;<br />&nbsp;</p>
<h2>Queue Glitch</h2>
<p>Queue glitches are when a Hub or Edge transport server cannot connect to the next hop this puts the queue into a state of retry.</p>
<p><strong>QueueGlitchRetryCount</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;This dictates the number of connection attempts that are immediately tried when a transport server has trouble connecting with the destination server. If you need more than the default then you probably need better network infrastructure!</p>
<p><strong>QueueGlitchRetryInterval</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;The queue glitch retry interval specifies the interval between each connection attempt that is specified by the QueueGlitchRetryCount parameter. </p>
<h2><strong>Intriguing Entries</strong></h2>
<h2><a href="http://technet.microsoft.com/en-us/library/bb430743(EXCHG.80).aspx">Recipient Resolver</a></h2>
<p><strong>ResolverLogLevel</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Reporting and diagnostic information for <a href="http://technet.microsoft.com/en-us/library/bb430743(EXCHG.80).aspx">recipient resolution</a> is provided by performance counters, message tracking log entries, and recipient resolution logging. These sources can help you identify and diagnose problems with recipient resolution. The valid values for this parameter are Disabled, Enabled, and FullContent. The default value is Disabled. When the ResolverLogLevel parameter is set to Enabled, only message envelope data is logged. When the ResolverLogLevel parameter is set to FullContent, message envelope data and message header data is logged.</p>
<p><strong>ResolverRetryInterval</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Recipient resolution requires an Active Directory query and if the Active Directory query encounters any transient errors, the message is returned to the Submission queue and deferred for the time that is specified by the ResolverRetryInterval parameter.</p>
<p><strong>ExpansionSizeLimit</strong><br />
This dictates the maximum number of envelope recipients in a message, this is the limit of the Recipient expansion not an actual upper limit for the amount of recipients a message can be sent too. </p>
<h2>The Transport Dumpster</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Transport Dumpster is a new feature of Exchange Server 2007 Hub Transport servers through which the transport can defer the deletion of certain emails in their queues. The condition for an email to be retained in the transport dumpster is that at least one of the recipient’s mailboxes must resides on a CCR mailbox server. This retained email can later be re-delivered if necessary. The amount of mail retained in the queues is a Organization wide setting on the Transport Settings container.</p>
<p>The idea is if an Active CCR mailbox server &#8216;fails over&#8217; then messages that have not yet replicated can be &#8216;redelivered&#8217; to the newly Active mailbox server.</p>
<p><strong>DumpsterAllMail</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;By default this is set to false, I can only assume that this means there is some algorithm or threshold that dictates what mail is retained in the dumpster if this is set to false. I dread to think what the overheads would be if setting this to be true allows you to store ALL email in the dumpster.</p>
<p><strong>DumpsterAllowDuplicateDelivery</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;Also set to false by default, I&#8217;m assuming that by allowing Duplicate delivery it will attempt a delivery even if its sure its already done it once <em>just in case</em>.</p>
<p><strong>DumpsterDeletionDelayAfterStartup</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;I guess this means that a Hub transport server will flush whatever is in the dumpster upon startup.</p>
<h2>DnsFaultTolerance</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;The default for this is &#8216;Lenient&#8217; which I expect would allow a certain amount of DNS lookup failures for before triggering a DSN. The other option is &#8216;Normal&#8217;</p>
<li><strong>Lenient</strong>When the DNS query encounters a combination of valid MX records and invalid MX records, the DNS query continues until the DNS query time-out value of one minute is reached. The invalid MX records are discarded. And the valid MX record that has the lowest preference value is used to deliver the message to the destination messaging server.</li>
<li><strong>Normal</strong>When the DNS query first encounters an invalid MX record, any resolved MX records that have a preference value that is greater than or equal to the invalid MX records are immediately discarded. The remaining MX record that has the lowest preference value is used to deliver the message to the destination messaging server without waiting for the whole DNS query to time out. Although this behavior may result in faster message delivery, the potential drawback of this behavior is the DNS query may have no valid MX records if the following conditions are true:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The invalid MX record is the first MX record for the destination domain.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The valid MX records have the same precedence value as the invalid one</li>
<p>&nbsp;</p>
<h2>AgentLogEnabled</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;By default, Microsoft Exchange Server 2007 logs all anti-spam agent activity in the %programfiles%\Microsoft\Exchange Server\TransportRoles\Logs\AgentLog directory. To disable this logging change this to false. </p>
<p>The following items can be added and control the Spam Agent logs:<br />
<code>&lt;add key="AgentLogMaxDirectorySize" value="system.int32" /><br />
&lt;add key="AgentLogMaxFileSize" value="system.int32" /><br />
&lt;add key="AgentLogMaxAge" value="system.timespan" /></code></p>
<h2>MaxQueueViewerQueryResultCount</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;This is another unlisted key that would appear to dictate the maximum number of items returned when listing the contents of a queue.</p>
<h2>RoutingConfigReloadInterval</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;The routing table is recalculated and logged after a routing configuration change, or if no changes have been detected within the interval specified in this key. However, a regular routing configuration change occurs on every Hub Transport server and Edge Transport server when the server renews its Kerberos token with an Active Directory directory service domain controller. With this renewal, the routing table is recalculated and a new routing table log is created. The Kerberos token is renewed every six hours.</p>
<h2>ByteEncoderTypeFor7BitCharsets</h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;In Microsoft Exchange Server 2007, the 7-bit transfer encoding method for MIME format is fixed to Quoted-Printable (QP) encoding. This key is only present in Exchange 2007 SP1. The value of this key can be one of the following:<br />
<strong>0</strong>	Always use default 7-bit transfer encoding for HTML and for plain text.<br />
<strong>1</strong>	Always use QP encoding for HTML and for plain text.<br />
<strong>2</strong>	Always use Base64 encoding for HTML and for plain text.<br />
<strong>5</strong>	Use QP encoding for HTML and for plain text unless line wrapping is enabled in plain text. If line wrapping is enabled, use 7-bit encoding for plain text.<br />
<strong>6</strong>	Use Base64 encoding for HTML and for plain text, unless line wrapping is enabled in plain text. If line wrapping is enabled in plain text, use Base64 encoding for HTML and 7-bit encoding for plain text.<br />
<strong>13</strong>	Always use QP encoding for HTML. Always use 7-bit encoding for plain text.<br />
<strong>14</strong>	Always use Base64 encoding for HTML. Always use 7-bit encoding for plain text.</p>
<h2><strong>Unknowns</strong></h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Despite going through technet, the Microsoft print pocket consultant and Exchange 2007 unleashed I&#8217;ve yet to find out what these keys do;</p>
<p><strong>DeferredReloadTimeoutSeconds</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; The timeout between retrying all deferred mail?</p>
<p><strong>MaxDeferredNotifications</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; An attempt to prevent back scatter from clogging the deferred queue?</p>
<p><strong>PrivateBytesHistoryDepth</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; I can&#8217;t even begin to guess</p>
<p><strong>CrashOnStopTimeout</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; Appears to be something that responds to either a component crash or an OS STOP error.</p>
<p><strong>DeliverMoveMailboxRetryInterval</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; The interval between attempts to deliver to a mailbox that is being moved?</p>
<h2>References</h2>
<p><a href="http://technet.microsoft.com/en-us/library/bb124558(EXCHG.80).aspx">Microsoft Technet</a><br />
<a href="http://msexchangeteam.com/">Exchange Team Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.networksaremadeofstring.co.uk/2008/08/02/researching-exchange-2007s-edgetransportexeconfig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
