<?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>totalnetsolutions.net &#187; Windows</title>
	<atom:link href="http://www.totalnetsolutions.net/category/tech/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.totalnetsolutions.net</link>
	<description>totalnetsolutions.net - Complete Networking Solutions for business</description>
	<lastBuildDate>Thu, 26 Jan 2012 04:05:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How To: Test SMTP by hand</title>
		<link>http://www.totalnetsolutions.net/2011/06/21/howto-test-smtp-by-hand/</link>
		<comments>http://www.totalnetsolutions.net/2011/06/21/howto-test-smtp-by-hand/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 02:10:27 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/?p=79</guid>
		<description><![CDATA[I recently had a co-worker trying to figure out a &#8220;lost email&#8221; problem we were possibly experiencing. He was blind to everything after hitting &#8220;send&#8221; because the intermediate servers weren&#8217;t sending delivery recipets, even though they were requested in the MIME header (Does any mail admin allow those to be sent out of the organization [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had a co-worker trying to figure out a &#8220;lost email&#8221; problem we were possibly experiencing.  He was blind to everything after hitting &#8220;send&#8221; because the intermediate servers weren&#8217;t sending delivery recipets, even though they were requested in the MIME header (Does any mail admin allow those to be sent out of the organization these days?)  So, to help him out, I wrote up the following &#8220;how to test SMTP by hand&#8221; HOWTO.</p>
<p>First step is to determine which servers are responsible for mail delivery inbound for the domain you&#8217;re sending to.  You do this by looking in DNS for the &#8220;MX&#8221; type records.  These are provided in the format &#8220;priority servername.domain.&#8221;  Priority is reverse-ordered.  The easiest way to remember priority order is that it&#8217;s the order in which servers are attempted.<br />
<code><br />
rob@rob-kubuntu3:~$ dig MX totalnetsolutions.net +short<br />
10 docsmooth.isa-geek.net.<br />
rob@rob-kubuntu3:~$ dig MX likewise.com +short<br />
10 server1.inboundmx.com.<br />
20 server2.inboundmx.com.<br />
</code><br />
This tells you the servers, in order, that *all* mail will be sent to for the domain listed.  So, anything to my likewise.com address will go to server1.inboundmx.com.  The higher priorities are only used if the lower priorities fail to answer.  If no server answers, the mail is held by the sender and retried, generally every 1 or 4 hours for up to 4 days, but this retry is configured on the *sending* server.  That means, your own email admin (or you, if you&#8217;re the mail admin).</p>
<p>Next thing to check is: does the server work, and is it your sender, or their receiver?  Check with telnet!<br />
Stuff I type is in red:<br />
<code><br />
rob@rob-kubuntu3:~$ <span style="color:red;">telnet docsmooth.isa-geek.net 25</span><br />
Trying 99.29.179.119...<br />
Connected to docsmooth.isa-geek.net.<br />
Escape character is '^]'.<br />
220 totalnetsolutions.net Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at  Tue, 31 May 2011 08:43:08 -0500<br />
<span style="color:red;">HELO</span><br />
250 totalnetsolutions.net Hello [12.130.116.175]<br />
<span style="color:red;">MAIL FROM: me@me.com</span><br />
250 2.1.0 me@me.com....Sender OK<br />
<span style="color:red;">RCPT TO:you@you.net</span><br />
250 2.1.5 you@you.net<br />
<span style="color:red;">DATA</span><br />
354 Start mail input; end with <crlf>.</crlf><crlf><br />
<span style="color:red;">from:me@me.com<br />
to:you@you.net<br />
subject:test manually<br />
test<br />
test<br />
.</span><br />
250 2.6.0 <tns03suzbbd2j9jsmmx00000039 @totalnetsolutions.net> Queued mail for delivery<br />
<span style="color:red;">quit</span><br />
221 2.0.0 totalnetsolutions.net Service closing transmission channel<br />
Connection closed by foreign host.<br />
</tns03suzbbd2j9jsmmx00000039></crlf></code><br />
The last &#8220;.&#8221; is SUPER important &#8211; it tells the mail server when you&#8217;re done sending that email.  You could use that channel to send other messages, rather than sending &#8220;QUIT&#8221; if you&#8217;d like.  You might notice that I entered the &#8220;From&#8221; and &#8220;To&#8221; lines twice.  The first entries are for the SMTP header (analogy would be the message envelope), and the second entries are for the MIME headings (analogy would be the return address header in a formal postal letter, if anyone sends those).  The MIME headings are what most mail programs display, and actually don&#8217;t technically need to match the SMTP header (but if MIME and SMTP don&#8217;t match many anti-spam programs will throw out the message).</p>
<p>The MIME header is pretty complex, but not order-dependant, although I prefer to enter it in order, so that I can be sure I don&#8217;t miss anything.<br />
If you want to add an attachment, just base64 encode it first with:<br />
<code>perl -e 'use MIME::Base64; qw(encode_base64); print encode_base64("@ARGV");' cat attachment-to-send.zip</code><br />
Then you can just paste it into the email.  In the MIME heading (right after the subject), just add (with the appropriate mime coding, probably application/octet-string:<br />
<code><br />
------=_NextPart_000_000D_01CC1C41.21F38080<br />
Content-Type: application/zip;<br />
	name="attachment-to-send.zip"<br />
Content-Transfer-Encoding: base64<br />
Content-Disposition: attachment;<br />
	filename="attachment-to-send.zip"<br />
&lt;paste your base64 encoded attachment/ &gt;<br />
Content-Type: multipart/mixed;<br />
	boundary="----=_NextPart_000_000D_01CC1C41.21F38080"<br />
------=_NextPart_000_000D_01CC1C41.21F38080<br />
Content-Type: text/plain;<br />
	charset="us-ascii"<br />
Content-Transfer-Encoding: 7bit</p>
<p>Type your message here, ending with a “.” Standalone on a line.<br />
.</p>
<p></code></p>
<p>Now that you know *how* to send an email message by hand, you can use the returned error codes to troubleshoot where the message may be disappearing.  Remember, that this just gives you transport troubleshooting between yourself and the initial destination mail server.  Many large (and even medium-sized) organizations will have a perimeter mail server which then forwards the message to one or more internal servers.  If the mail is being dropped at that point, you&#8217;ll have to contact the reciever with the proof that their server is accepting your messages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2011/06/21/howto-test-smtp-by-hand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>netlogon error 5602 in Windows 2008</title>
		<link>http://www.totalnetsolutions.net/2011/05/16/netlogon-error-5602-in-windows-2008/</link>
		<comments>http://www.totalnetsolutions.net/2011/05/16/netlogon-error-5602-in-windows-2008/#comments</comments>
		<pubDate>Tue, 17 May 2011 02:54:11 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Domain Controllers]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/?p=75</guid>
		<description><![CDATA[I upgraded the TNS lab this past week from Windows 2008 to Windows 2008 R2, including replacing the 4 Domain Controllers (rather than upgrading). It gave me a chance to review the procedure for moving a Certificate Server to a new system, which I hadn&#8217;t done since 2005. For those who haven&#8217;t tried, the procedure [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded the TNS lab this past week from Windows 2008 to Windows 2008 R2, including replacing the 4 Domain Controllers (rather than upgrading).  It gave me a chance to review the procedure for moving a Certificate Server to a new system, which I hadn&#8217;t done since 2005.  For those who haven&#8217;t tried, the procedure for moving a Certificate Server is reasonably well documented at the Microsoft Support site here: <a HREF="http://support.microsoft.com/kb/555012" target="_blank">http://support.microsoft.com/kb/555012</a>.  The part of this that&#8217;s especially tricky, especially in our lab, is the renaming of the DC.</p>
<p>In our lab we have an empty forest root, as per the old (Windows 2000-era) Microsoft recommendations, to match several large customer environments.  Because it&#8217;s a lab, and no clients connect to it, we only have a single DC. I snapshotted it as a backup, and went through the procedure to rename a domain controller, also well documented by Microsoft, this time at <a href="http://technet.microsoft.com/en-us/library/cc782761%28WS.10%29.aspx" target="_blank">TechNet</a>.</p>
<p>For review, the procedure we planned to run was:<br />
<code>netdom computername <strong>dc04</strong> /add:<strong>dc01.lwtest.corp</strong><br />
netdom computername <strong>dc04</strong> /makeprimary:<strong>dc01.lwtest.corp</strong><br />
shutdown -r -t 0<br />
netdom computername <strong>dc01</strong> /enum<br />
netdom computername <strong>dc01</strong> /verify<br />
netdom computername <strong>dc01</strong> /rem:<strong>dc04.lwtest.corp</strong></code></p>
<p>I&#8217;m still not sure what caused it, but in this case, this command failed:<br />
<code>netdom computername <strong>dc04</strong> /makeprimary:<strong>dc01.tns.lab</strong></code><br />
At this point, I couldn&#8217;t make the old name primary again (I would get an &#8220;Access Denied&#8221; error), so I rebooted to see which name had taken.  And that&#8217;s where things went bad.</p>
<p>When the DC came up, we were getting this error: <a href="http://www.totalnetsolutions.net/wp-content/uploads/2011/05/netlogon-event-5602.png"><img src="http://www.totalnetsolutions.net/wp-content/uploads/2011/05/netlogon-event-5602.png" alt="Netlogon EventID 5602" title="netlogon-event-5602" width="628" height="438" class="aligncenter size-full wp-image-77" /></a>. Source: NETLOGON, EventID: 5602, Data: &#8220;An internal error occurred while accessing the computer&#8217;s local or network security database.&#8221;</p>
<p>Because the DC rename hadn&#8217;t completed successfully, the computer couldn&#8217;t actually log into itself to load AD.  Very bad for the root of the forest.  I wasn&#8217;t able to find anything helpful in my searches, so thought I&#8217;d let you know the fix:</p>
<p>Name it back to the old name and try again:<br />
Reboot into Safe Mode.<br />
<code>netdom computername <strong>localhost</strong> /makeprimary:<strong>dc04.lwtest.corp</strong><br />
shutdown -r -t 0</code><br />
Boot normally<br />
<code>netdom computername <strong>localhost</strong> /makeprimary:<strong>dc04.lwtest.corp</strong><br />
netdom computername <strong>dc01</strong> /enum<br />
netdom computername <strong>dc01</strong> /verify<br />
shutdown -r -t 0</code><br />
After *that* reboot, make sure, with the verify command, that the old name took, and that you can log in, and just try the rename again.</p>
<p>I couldn&#8217;t get the &#8220;rename back&#8221; to take untill after the attempt in safe mode. Strange, but it&#8217;s working great now!  Hopefully this will help someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2011/05/16/netlogon-error-5602-in-windows-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>K9Mail Hosted Exchange ActiveSync Errors Solved</title>
		<link>http://www.totalnetsolutions.net/2010/07/10/k9mail-hosted-exchange-activesync-errors-solved/</link>
		<comments>http://www.totalnetsolutions.net/2010/07/10/k9mail-hosted-exchange-activesync-errors-solved/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 18:43:36 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Phones]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/?p=49</guid>
		<description><![CDATA[I’ve been fighting K9Mail for weeks now, trying to get it to sync with MailStreet who hosts “exchange.ms”) hosted Exchange. If you’ve already followed the instructions at the K9Mail Wiki with no success, read on. Thanks to the k9mail wiki on debugging connection issues and the fact that I already had the Android SDK installed, [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been fighting K9Mail for weeks now, trying to get it to sync with <a href="http://www.mailstreet.com">MailStreet</a> who hosts “exchange.ms”) hosted Exchange. If you’ve already followed the instructions at the <a href="https://code.google.com/p/k9mail/wiki/K9MailAndExchange">K9Mail Wiki</a> with no success, read on.</p>
<p>Thanks to the k9mail wiki on <a href="https://code.google.com/p/k9mail/wiki/LoggingErrors">debugging connection issues</a> and the fact that I already had the Android SDK installed, I was able to solve the 2 related errors I was getting. I would either get an “HTTP 404 not found” or an “HTTP 501 Not Implemented” depending on the settings I chose. With no additional settings other than suggested in the Wiki, I’d get a “501 not implemented”. If I tried to set a mailbox path, or a WebDAV path, I’d get the HTTP 404 Not Found.</p>
<p>In the debugging log, I saw that the system was calling “http://mail.$domain.exchange.ms/”$webDAVpath/Inbox – if I set it to a full URL, the full URL was getting appended. When I attempted to hit those same paths in a full browser, I’d always get an HTTP 404. So, digging in my history in Firefox, I found the following (cleaned) path:</p>
<p>http://mail.$domain.exchange.ms/exchange/$emailaddress/</p>
<p>In this case $emailaddress was my Exchange mail address with the “@” stripped out. Appending “Inbox” to the end of this path resulted in a valid load of my OWA inbox.</p>
<p>Plugging then: /exchange/$emailaddress/ into the WebDAV box in K9Mail, and my email immediately loaded up.</p>
<p>Now I have Android syncing my calendars and contacts, and k9mail is handling my massive inbox!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2010/07/10/k9mail-hosted-exchange-activesync-errors-solved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Samba on Likewise Open – errors with machine accounts</title>
		<link>http://www.totalnetsolutions.net/2009/03/05/samba-on-likewise-open-errors-with-machine-accounts/</link>
		<comments>http://www.totalnetsolutions.net/2009/03/05/samba-on-likewise-open-errors-with-machine-accounts/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 18:56:48 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/?p=55</guid>
		<description><![CDATA[We’ve had a few customers and Open users posting about problems with machine accounts trying to access Samba shares and getting denied with: smbd/sesssetup.c:reply_spnego_kerberos(439) Username DOM\COMPUTER1$ is invalid on this system The “$” at the end of the account name means it’s a computer account, not a user. We’re seeing this for Citrix MetaFrame application [...]]]></description>
			<content:encoded><![CDATA[<p>We’ve had a few customers and Open users posting about problems with  machine accounts trying to access Samba shares and getting denied with:<br />
<code>smbd/sesssetup.c:reply_spnego_kerberos(439) Username DOM\COMPUTER1$ is invalid on this system</code><br />
The “$” at the end of the account name means it’s a computer account,  not a user.  We’re seeing this for Citrix MetaFrame application servers  on shared storage, startup scripts not stored on a DC, and several other  cases.</p>
<p>On a Samba server joined to AD with winbind, this is easy to deal  with because Samba’s winbind can treat the computer accounts just like  user accounts, and assign them access to the unix filesystem with  whatever backend has been configured.  When a Samba server is joined  with Likewise, however, the machine accounts are not visible, and the  “username is invalid” message comes up.</p>
<p>Fortunately, Samba gives us a method to handle this, in form of the  “username map” directive in /etc/samba/smb.conf.  There are two ways to  use this, the first is with the username map file.<br />
In smb.conf, to simply add:<br />
<code> [global ]<br />
username map = /etc/samba/smbusers</code><br />
then create a file named <code>/etc/samba/smbusers</code> and populate it with localuser=aduser pairs, like:<br />
<code>COMPUTER1$ = compacct<br />
COMPUTER2$ = compacct<br />
CITRIXFARM1$ = citrxact</code><br />
and so on.  Lastly, you’ll have to add the local accounts from the pairs above:<br />
<code>useradd -c "Account for AD Computers to use Samba" compacct -G users -u 998<br />
useradd -c "Account for AD Citrix Servers to use Samba" citrxact -G users -u 999</code><br />
Then, whenever one of the AD computers in the list attempts to access the Samba share, it’ll be mapped to the local account.</p>
<p>The problem with this is when you have a lot of servers, like a  Citrix MetaFrame farm, or a Windows Server 2008 R2 Remote Desktop  Services farm, that may be changing frequently, because managing that  file could get hard. In this case there is the <code>username map script</code> directive, which is added to smb.conf as:<br />
<code> [global ]<br />
username map script = /usr/lib/samba/auth/machine-acct-map.pl</code><br />
Then download <a href='http://www.totalnetsolutions.net/wp-content/uploads/2011/05/machine-acct-map.txt'>this script</a> and save it in <code>/usr/lib/samba/auth/</code> and make it executable (<code>chmod +x /usr/lib/samba/auth/machine-acct-map.pl</code>).  Then run:<br />
<code>useradd -c "Account for AD Computers to use Samba" compacct -G users -u 998</code><br />
Now, all computers which access the share will be remapped to the  “compacct” user, and you won’t have to manage a file for every time the  server farm changes.</p>
<p><a href='http://www.totalnetsolutions.net/wp-content/uploads/2011/05/machine-acct-map.txt'>Get the file here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2009/03/05/samba-on-likewise-open-errors-with-machine-accounts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DEC 2008 &#8211; Chicago</title>
		<link>http://www.totalnetsolutions.net/2008/01/28/dec-2008-chicago/</link>
		<comments>http://www.totalnetsolutions.net/2008/01/28/dec-2008-chicago/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 02:21:02 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Domain Controllers]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2008/01/28/dec-2008-chicago/</guid>
		<description><![CDATA[I have been invited to present at the Directory Experts Conference in Chicago in March, hosted by NetPro Computing, Inc.. I&#8217;ll be discussing how we recently integrated dozens of Linux servers into our 300+ server Windows 2000 Native Mode forest. I&#8217;m excited, but it&#8217;s taking away from the time to update a few things here [...]]]></description>
			<content:encoded><![CDATA[<p>I have been invited to present at the <a href="http://www.directoryexpertsconference.com" target="_blank">Directory Experts Conference</a> in Chicago in March, hosted by <a href="http://www.netpro.com" target="_blank">NetPro Computing, Inc.</a>.  I&#8217;ll be discussing how we recently integrated dozens of Linux servers into our 300+ server Windows 2000 Native Mode forest.  I&#8217;m excited, but it&#8217;s taking away from the time to update a few things here I have in &#8220;unpublished&#8221; state.</p>
<p>Of note is a response for T. Colin Dodd regaring his short and sweet post regarding <a href="http://truthhappens.redhatmagazine.com/2008/01/16/red-hat-flaws/trackback/" target="_blank">Red Hat Flaws</a> according to Secunia.  In short, Mr. Dodd (please correct me if the address is wrong), yes, Red Hat should be proud of what they&#8217;ve accomplished, but&#8230;</p>
<p>Well, that&#8217;s 2 pages of text that&#8217;s not yet finished.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2008/01/28/dec-2008-chicago/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2003 &#8211; EDB vs. STM</title>
		<link>http://www.totalnetsolutions.net/2007/12/20/exchange-2003-edb-vs-stm/</link>
		<comments>http://www.totalnetsolutions.net/2007/12/20/exchange-2003-edb-vs-stm/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 04:26:55 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[file sharing]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2007/12/20/exchange-2003-edb-vs-stm/</guid>
		<description><![CDATA[As I mentioned in my last clustering post, there are some Exchange problems we&#8217;ve been working on over the past few weeks. One of the simpler problems has a complex answer, so I thought I&#8217;d explain a bit. As any good Exchange administrator knows, Exchange stores its data (for a store)in 2 files, the EDB [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in my last clustering post, there are some Exchange problems we&#8217;ve been working on over the past few weeks. One of the simpler problems has a complex answer, so I thought I&#8217;d explain a bit.</p>
<p>As any good Exchange administrator knows, Exchange stores its data (for a store)in 2 files, the EDB file, and the STM file. However, there&#8217;s not a really great explanation of the differences between the two files &#8211; the best I&#8217;ve found so far is at <a target="_blank" href="http://www.messagingtalk.org/what-is-the-difference-between-a-stm-file-and-a-edb-file">MessagingTalk.org</a>, but they only explain that the STM is MIME formatted, and the EDB is MAPI content. Why, though, and how does it affect the end users? This is what we&#8217;ll explore.<span id="more-39"></span></p>
<p>What brought me into this topic was an end-user complaining that an email with a 7MB attachment was getting bounced, and theNDR said that it was over the mail system limit. Normally, nothing worth investigating: zip the attachment, and resend. The problem was, the user had already zipped it down, and the messaging size limit for the Exchange Organization is 10MB. We had the user forward the message to several admins, and it went through ok. About 500KB of HTML-formatted email, and a 7.1MB attachment, for a total size of 7.6MB. When I sent it out to my account backhere, it bounced back &#8211; over size limit, and the emails were being rejected by the Front End Exchange servers, so the emails weren&#8217;t even leaving the organization.</p>
<p>But Why?</p>
<p>Remember how we said earlier that the EDB file contains MAPI-formatted emails? All messages submitted to Exchange via MAPI clients (Outlook) are stored directly as submitted in the EDB file for the user&#8217;s store. All the message information is stored alongside that message in the store, and Exchange is able to serve the messages back to Outlook conversion-free.</p>
<p>In the same way, all messages submitted to the store in MIME format (SMTP, POP3, IMAP4, or HTTP &#8211; OWA, WebDAV, OMA, or Exchange ActiveSync) are stored in the STM file in their original MIME format, and the message properties that Exchange needs to track are stored separately in the EDB file with pointers to the message location in the STM file. This means that the STM file is straight plain text, so any data in it is 100% extractable if the store is dismounted (file unlocked). I do have to say, grepping your STM file for your own email address is pretty interesting, if you&#8217;re into that kind of thing.</p>
<p>The thing about MIME formatted email is that any non-ASCII texthas to be Base64 encoded, which causes a 33% increase to the size of the attachment. (See <a href="http://www.faqs.org/rfcs/rfc1521.html">http://www.faqs.org/rfcs/rfc1521.html</a>section 5.2 for the explanation.) And aren&#8217;t most of your users writing &#8220;Rich Text&#8221; format emails with Word as their default editor? Well, all that extra formatting most likely causes them to have to be base64 encoded when they&#8217;re converted to MIME.</p>
<p>Email sent between Exchange servers within the Organization are sent through the SMTP connector, but are kept in MAPI format by BDAT encoding the contents. However, email sent outside of the organization (especially if the remote SMTP server doesn&#8217;t accept ESMTP) must be converted to MIME encoding before delivery.</p>
<p>So, looking at my particular user&#8217;s case: The 7.1MB attachment grows to 9.5MB, and the 500KB of HTML formatted messaging replies addsup to10MB on the nose. Add SMTP headers, and the whole thing gets stopped by the SMTP connector on the Front-End Exchange server for just breaking the limit.</p>
<p>In this case, we used it as an opportunity to review how the client was sharing data with customers, and find a way to help them not use email as a file share.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2007/12/20/exchange-2003-edb-vs-stm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-forest trusts and new error codes</title>
		<link>http://www.totalnetsolutions.net/2007/12/09/cross-forest-trusts-and-new-error-codes/</link>
		<comments>http://www.totalnetsolutions.net/2007/12/09/cross-forest-trusts-and-new-error-codes/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 05:29:43 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Domain Controllers]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[domain controllers]]></category>
		<category><![CDATA[trusts]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2007/12/09/cross-forest-trusts-and-new-error-codes/</guid>
		<description><![CDATA[If you are setting up a cross-forest trust with selective authentication (which requires a Windows Server 2003 Native mode level forest and domain), don&#8217;t forget to grant the &#8220;Allowed to Authenticate&#8221; right to the users from the trusted domain to the servers they&#8217;ll need access to in your domain. The error messages you&#8217;ll get back [...]]]></description>
			<content:encoded><![CDATA[<p>If you are setting up a cross-forest trust with selective authentication (which requires a Windows Server 2003 Native mode level forest and domain), don&#8217;t forget to grant the &#8220;Allowed to Authenticate&#8221; right to the users from the trusted domain to the servers they&#8217;ll need access to in your domain.  The error messages you&#8217;ll get back (replicated here in my test VM domains) don&#8217;t really say much helpful.</p>
<p>System Error 317 has occurred.  The system cannot find message text for message number 0x*** in the message file for ***.<br />
<br /><img src="http://www.totalnetsolutions.net/wp-content/uploads/2007/12/system317.png" alt="System Error 317" /></p>
<p>Further information about adding the &#8220;Allowed to Authenticate&#8221; right to the trusted users is available <a href=http://technet2.microsoft.com/windowsserver/en/library/b4d96434-0fde-4370-bd29-39e4b3cc7da81033.mspx?mfr=true" target="_blank">at Microsoft TechNet</a>.  If you have the opportunity to raise your forest and domain functional levels to take advantage of this, I highly recommend it.  But I recommend also (even more strongly) documenting precisely what you set.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2007/12/09/cross-forest-trusts-and-new-error-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Clustering oddity</title>
		<link>http://www.totalnetsolutions.net/2007/12/08/windows-clustering-oddity/</link>
		<comments>http://www.totalnetsolutions.net/2007/12/08/windows-clustering-oddity/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 05:42:46 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[clustering]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2007/12/08/windows-clustering-oddity/</guid>
		<description><![CDATA[I&#8217;ve been very busy with clients over the past 2 weeks, troubleshooting Clustering problems, Exchange issues, and planning a new trust relationship, on top of normal maintenance and design. As I solve each issue, I&#8217;ll be posting what I can about them. This week we were able to solve the odd clustering problem&#8230; We&#8217;ve seen [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been very busy with clients over the past 2 weeks, troubleshooting Clustering problems, Exchange issues, and planning a new trust relationship, on top of normal maintenance and design. As I solve each issue, I&#8217;ll be posting what I can about them. This week we were able to solve the odd clustering problem&#8230;</p>
<p>We&#8217;ve seen some issues over the past approximately 2 months, particularly with MS SQL 2000 clusters (1 Exchange 2003 cluster), where the cluster group fails on one node, and the other node (or nodes) fails to pick up the group, leaving the complete cluster group offline. In each of the cases (on both HP and Dell hardware) the first striking piece of evidence in the logs is that all nodes that fail to bring up the cluster report that the Cluster IP Address resource couldn&#8217;t be brought online, because of an IP address conflict on the network</p>
<p>Making this issue particularly fun is that most of the information we used to solve the problem, is a lack of information.  In particular, there is absolutely nothing interesting at all in any nodes&#8217; cluster.log file.You see the disks negotiate from node to node, but nothing that makes the failover look any different than if you had right-clicked the group and chosen &#8220;Move Group&#8221; from Cluster Administrator.</p>
<p>What starts the problem off is Event ID 1228 from source &#8220;ClusNet&#8221;, which says that the &#8220;ClusNet driver couldn&#8217;t communicate with the ClusSvc for 60 seconds, the Cluster service is being terminated.&#8221; Most of the time, you might even miss that this event is there, because it causes so many Event Source Tcpip, ID 4199; Source ftdisk, ID 57; and Source ntfs event ID 50 events, that it&#8217;s easy to look over 1 little error. Especially when monitoring systems like Microsoft Operations Manager (MOM), or Idera SQLDiagnostics Manager (SQLDiag) or HP Systems Insight Manager (SIM) all report the cluster as having issues 30-60 seconds after the CluNet 1228 event is written (timing which corresponds exactly to the Tcpip 4199 events (IP address conflict) or the ftdisk 57 events (failed to flush transaction data). So, here&#8217;s what happens, based on conversations with Microsoft, training with Microsoft and HP, and a LOT of reading.<span id="more-36"></span></p>
<p>First, we have to discuss the layout of Microsoft Clustering.  There is the well-known &#8220;ClusSvc&#8221; &#8211; the &#8220;Cluster&#8221; service that you find in the &#8220;Services&#8221; MMC console. This is what&#8217;s known as a user-mode process (as opposed to kernel-mode), so it runs in the same memory and processor spaces as Exchange and SQL.  There are 2 other &#8220;services&#8221; &#8211; the Cluster Network driver (ClusNet) and the Cluster Disk driver (ClusDisk).  If you were ever an NT4 MCSE, you might remember the old Control panel &#8220;Drivers&#8221; extension.  These services would show up in there, if it still existed, along with a lot of other driver/services &#8211; they haven&#8217;t gone away, just the GUI for editing them.  Anyways, because ClusSvc runs in the same processor context as SQL or Exchange, and because it shares memory with SQL or Exchange, it can be starved of resources by SQL or Exchange, or any other user-mode process running on your server.  To keep track of whether this has happened or not, Microsoft wrote the ClusNet driver to not only keep track of the private and public networks, and the group IP address resources currently owned by the node, they wrote it to also check a heartbeat (default of 60 seconds) back with ClusSvc.  The best explanation I&#8217;ve found is <a title="here" href="http://msdn2.microsoft.com/en-us/library/aa369104.aspx" target="_blank">here</a> on Microsoft&#8217;s site.</p>
<p>So, the ClusNet event 1228 means that the ClusSvc failed to heartbeat within the 60 second timeout window, so ClusNet killed the Cluster.exe process (ClusSvc).  Generally the OS is set to auto-restart the Cluster service if it terminates, so the node will recover&#8230; but what about the cluster as a whole?  Some interesting things happen when cluster.exe is forcibly terminated.</p>
<ol>
<li>Because it&#8217;s terminated, cluster.exe can&#8217;t tell ClusNet to drop registration of the group IP address resources owned by the node, so ClusNet keeps the IP addresses advertised (arp&#8217;d) on the network.</li>
<li>Cluster.exe also can&#8217;t tell ClusDisk to flush ntfs logs to disk in preparation for the disks being grabbed by another node.</li>
<li>Because the Cluster service isn&#8217;t running, the node can&#8217;t heartbeat to the other nodes in the cluster.</li>
<li>Therefore, the other node(s) reach a quorum, decide that the first node is unavailable, and begin the process of a failover.</li>
<li>First, disks are negotiated on the SCSI/FibreChannel bus, eventually forcibly taken from the &#8220;offline&#8221; node (causing the ftdisk 57 and ntfs 50 errors).</li>
<li>Simultaneously (unless you have IP address resources having a requirement on your disks), the preferred failover node (or next in the round-robin process) attempts to advertise that its MAC address is now the IP address of the cluster group.</li>
<li>And things get ugly.</li>
</ol>
<p>Because the original node still hasn&#8217;t restarted its Cluster Service (services are normally restarted after 60 seconds / 1 minute, unless you changed your cluster), the ClusNet driver on the original node is still arping the group IP address.  This causes the tcpip 4199 errors on the node that&#8217;s attempting to bring up the group.  These errors cause the group to fail to come up on the 2nd node, so the cluster group moves to the next node in the round-robin (or preferred owners) list, untill all nodes have failed to bring up the group.  In my experience, 4 nodes all fail to bring up the group in under 60 seconds, so the cluster group stays offline failed, even after the cluster service restarts on the original node.  Also, the disks have been moved to every node in the cluster, so you can probably gather where the disk errors come from.</p>
<p>So how can you fix or avoid this problem?  I am taking the advice written between the lines of the previously mentioned <a title="Microsoft article" href="http://msdn2.microsoft.com/en-us/library/aa369104.aspx" target="_blank">Microsoft article</a>. The default action of a failure of the heartbeat is to restart the cluster service, which causes the issues mentioned above.  However, there are 2 other options available:  Do Nothing (and log or not), and Bugcheck.</p>
<p>If you set the mentioned registry key to &#8220;3&#8243;, the heartbeat failure will cause a bugcheck of the server, dumping out a kernel memory dump (or minidump or full dump, depending on your settings, but the default is a kernel dump) of exactly what was going on when the heartbeat failed.  Then, because the failed node is now Blue Screened while it writes out the memory dump, it will no longer fight the disk arbitration OR advertise the cluster group IP addresses that it had owned.  The next node in the list will pick up the group, restart the resources, and your cluster is once-again highly available.</p>
<p>And you now have more troubleshooting information than you would if you just let the service restart.</p>
<p>Now, we had some discussions with clients about this setting, and they were concerned that bugchecking a server could cause data corruption, especially on a busy SQL server.  <strong>This is true.</strong> However, restarting the cluster service causes a forced unload of running cluster group processes anyways, so bugcheck or cluster service restart causes the <strong>exact same</strong> data corruption issues, but a bugcheck gives the technician looking at the problem more data, to know how to avoid the problem in the future.  Also, if no action is taken, you could have the cluster in a resource starvation situation, in which case the technician has to manually kill processes, if he can even get into the server to kill processes.  The resource starvation may even force someone to physically reset power to the server node.  And while that&#8217;s happening, the cluster may not fail over to the working nodes, causing an actual business outage.  And isn&#8217;t that why you&#8217;re building clusters in the first place?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2007/12/08/windows-clustering-oddity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exchange troubleshooting difficulties</title>
		<link>http://www.totalnetsolutions.net/2007/10/26/exchange-troubleshooting-difficulties/</link>
		<comments>http://www.totalnetsolutions.net/2007/10/26/exchange-troubleshooting-difficulties/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 05:22:41 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Exchange]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2007/10/26/exchange-troubleshooting-difficulties/</guid>
		<description><![CDATA[I have been working with a client and Microsoft on a very difficult issue with their Exchange 2003 system. A few months ago, a particular store started exhibiting Event ID 623 errors from source ESE &#8211; the Extensible (or Exchange) Storage Engine. Since this error was coming up on a server that was in the [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working with a client and Microsoft on a very difficult issue with their Exchange 2003 system. A few months ago, a particular store started exhibiting <a href="http://www.eventid.net/display.asp?eventid=623&amp;source=ESE" onclick="javascript:urchinTracker ('/outgoing/www.eventid.net/display.asp?eventid=623&#038;source=ESE');" target="_blank">Event ID 623 errors from source ESE</a> &#8211; the Extensible (or Exchange) Storage Engine. Since this error was coming up on a server that was in the process of being decommissioned, the suggestion to move the users to a new store was <strong>extremely</strong> feasible.</p>
<p>But the problem came back 22 days later on one of the 2 stores that the users were moved to, so we knew something else must be up. Ill cut to the chase and explain that Microsoft now is very positive of what is happening, just not who is causing it or why its happening.<span id="more-41"></span></p>
<p>Whats frustrating about this is that all the tools that can be used to look deeper into this problem arent available to me as a technician outside of Microsoft. All Ive been able to do for my client is set up triggers to cause Exchange store.exe dumps which are essentially process freezes followed by private memory dumps to disk. The good thing is that the end users dont notice, nor does the Windows 2003 Cluster service. Also, our Microsoft support team has been great at sharing information with us.</p>
<p>But the problem still remains, that there is nothing at all that I can do to fix this problem. I cant run the debug programs (I can run <strong>a</strong> debug against the process, but not to the same level of detail, due to a lack of published information) that Microsoft has available, despite a very deep understanding of how the ESE runs the EDB, STM, and LOG files (for an outside consultant who just reads voraciously). This inability to better service my customers frustrates me to no end, whether Microsofts technicians are fantastic or not (there have been other times).</p>
<p>So, while I wait for them to get back to me on yet another dump that has been generated, looking for a very elusive fSearch() operation against one of my clients many Exchange 2003 stores, I sit on my hands in anticipation, wishing to be able to do more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2007/10/26/exchange-troubleshooting-difficulties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft VS. Red Hat &#8211; Why did they go there?</title>
		<link>http://www.totalnetsolutions.net/2007/10/16/microsoft-vs-red-hat-why-did-they-go-there/</link>
		<comments>http://www.totalnetsolutions.net/2007/10/16/microsoft-vs-red-hat-why-did-they-go-there/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 21:10:52 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.totalnetsolutions.net/2007/10/16/microsoft-vs-red-hat-why-did-they-go-there/</guid>
		<description><![CDATA[I saw this post from Jeff Jones over at Microsoft today. He mentions that Red Hat Enterprise Linux 4 recently patched their 1000th vulnerability, and provides a quote from Truth Happens(direct link to post), which is a Red Hat blog. I suggest you at least read Jeffs post, since he quotes the relevant point of [...]]]></description>
			<content:encoded><![CDATA[<p>I saw <a href="http://blogs.technet.com/security/archive/2007/10/16/red-hat-enterprise-linux-4-passes-1000-vulnerabilities.aspx" onclick="javascript:urchinTracker ('/outgoing/blogs.technet.com/security/archive/2007/10/16/red-hat-enterprise-linux-4-passes-1000-vulnerabilities.aspx');" target="_blank">this post</a> from <a href="http://blogs.technet.com/security/default.aspx" onclick="javascript:urchinTracker ('/outgoing/blogs.technet.com/security/default.aspx');" target="_blank">Jeff Jones</a> over at Microsoft today. He mentions that Red Hat Enterprise Linux 4 recently patched their 1000th vulnerability, and provides a quote from <a href="http://truthhappens.redhatmagazine.com/2007/08/22/bug-fix-scorecard/trackback/" onclick="javascript:urchinTracker ('/outgoing/truthhappens.redhatmagazine.com/2007/08/22/bug-fix-scorecard/trackback/');" target="_blank">Truth Happens</a>(direct link to post), which is a Red Hat blog. I suggest you at least read Jeffs post, since he quotes the relevant point of the Truth article.</p>
<p>I read both of these blogs, and Im frankly disgusted by the way both sides are treating the data. I understand that statistics are often more useful for what they hide, than what they show. In this case, the 2 competing ideas seem to be: We fix more bugs, which means were working harder to protect you, vs. we fix fewer bugs because we have fewer bugs, so were working harder to protect you. I think both of these arguments are invalid, so I hope both sides see this and pay attention.<span id="more-38"></span></p>
<ol>
<li>Jeff Jones: Jeff does a very interesting quarterly (or so) patch report &#8211; what OSs have had the most patches applied in xx time frame (past quarter, past year, etc.). I get a lot of out this report, and he does very good trending. Find them on his blog and read them.To that end, he does a very good job selling Microsoft as a security company. By purely counting number of patches submitted, Microsoft will automatically look better, simply because Windows (XP and 2003 combined) has fewer features than Red Hat Enterprise Linux or SUSE Enterprise Linux or Ubuntu Desktop Edition.Jeff makes a point that Microsoft has only released patches for 649 security vulnerabilities across all Microsoft products in 7 years, butWhat Windows does have that the GNU/Linux variants dont have: .NET Framework, which is a HUGE project, but when its updated, you get a single update, so it counts as 1? in Jeffs analysis. Also, Microsoft doesnt have conflicting software product lines &#8211; they have the Office team which has swallowed the Works team, but there are at least 3 Office suites in any GNU/Linux distro (OOo, koffice for KDE, and the suite including ABIWord for gnome).
<p>Then we can discuss kernels &#8211; when there is a driver update for a 3rd party product (Intel i810/845/945 motherboard, for example), its a module in the kernel, which requires an updated kernel package from the GNU/Linux distributors, but when theres a driver update for a 3rd party application, Microsoft doesnt even have to count it, since its 3rd party. And on the subject of kernels, I dont recall ever seeing an actual kernel update for Windows that wasnt included in a service pack, or a box on a shelf.</li>
<li>Truth Happens writers: Selling look how many bugs we fix to a corporation is a pretty crappy way of doing business, in my opinion. That I can put an appointment in my calendar for 3pm the 2nd Tuesday of each month to review patches, test them that afternoon, and start rolling them out to QA the next morning, is a fantastic way to work. When Red Hat comes out with an update, its at a random time, and I have to review each one individually against what I may have installed on my systems.Now, this isnt a dig against any GNU/Linux distribution out there &#8211; free (Ubuntu) or enterprise (Novell / Red Hat) &#8211; they are forced into this disclosure/fix model by the fact that these packages are not maintained solely by the companies that are pushing the fixes. In fact, in these cases, the patches have to be done on a per-report basis because of how most open-source software vulnerabilities are reported.This is a great time to ask: why is OOo included in a server distro? There *has* to be some GPL or package management reason behind it, but Id be really interested to know.</li>
</ol>
<p>So here we see 2 points of view: MSs (Jeff Jones) were great because we dont have a lot of patches, which means were more secure; and RHs (Truth Happens) were great because weve patched all of the bugs that have been found, no matter how small. In truth, I think the real point should be that they are 2 completely different companies with huge differences in their offerings in the Operating System category. To have both representatives of both companies post what amount to nyah nyah, were better than you are blogs, keeps the entire discourse of security at a childish level that helps nobody.</p>
<p>So, to both Jeff and the writers of Truth Happens: please, out of respect for your readers, look deeper into the numbers and provide some insight, dont just knock your competition.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.totalnetsolutions.net/2007/10/16/microsoft-vs-red-hat-why-did-they-go-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

