<?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>Computer Support &#187; Windows</title>
	<atom:link href="http://www.xiitec.com/blog/category/system-administration/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xiitec.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 30 Dec 2009 08:40:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Checking Whether a Windows 2000 Domain Controller Can Be Upgraded to Windows Server 2003</title>
		<link>http://www.xiitec.com/blog/2009/01/02/checking-whether-a-windows-2000-domain-controller-can-be-upgraded-to-windows-server-2003/</link>
		<comments>http://www.xiitec.com/blog/2009/01/02/checking-whether-a-windows-2000-domain-controller-can-be-upgraded-to-windows-server-2003/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 00:51:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Active directory]]></category>
		<category><![CDATA[domain controller]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=233</guid>
		<description><![CDATA[Using a graphical user  interface
Insert a Windows Server 2003 CD into the Windows 2000 domain  controller or map a drive to the files contained on the CD. Run the following  command from the \i386 directory:
	&#62; winnt32 /checkupgradeonly
Using a command-line interface
To produce a compatibility report from the command line, first  you need [...]]]></description>
			<content:encoded><![CDATA[<h4>Using a graphical user  interface</h4>
<p>Insert a Windows Server 2003 CD into the Windows 2000 domain  controller or map a drive to the files contained on the CD. Run the following  command from the \<span class="docEmphasis">i386</span> directory:</p>
<pre>	&gt; winnt32 /checkupgradeonly</pre>
<h4>Using a command-line interface</h4>
<p>To produce a compatibility report from the command line, first  you need to create a text file containing the following <a title="idx-CHP-2-0262" name="idx-CHP-2-0262"></a>information:</p>
<pre>[Unattended]</pre>
<pre>Win9xUpgrade = Yes</pre>
<pre></pre>
<pre>[Win9xUpg]ReportOnly = Yes

SaveReportTo = "\\server1\upgradereports\"</pre>
<p>Save this file as <em>unattend.txt</em>, and then run the  following from the command-line:</p>
<pre>	&gt; winnt32 /checkupgradeonly /unattend:c:\unattend.txt</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2009/01/02/checking-whether-a-windows-2000-domain-controller-can-be-upgraded-to-windows-server-2003/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling Auditing</title>
		<link>http://www.xiitec.com/blog/2008/11/13/enabling-auditing/</link>
		<comments>http://www.xiitec.com/blog/2008/11/13/enabling-auditing/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 01:32:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[audit]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=230</guid>
		<description><![CDATA[Windows supports auditing of various account- and system-related events, which can be invaluable when troubleshooting a security incident. You can enable auditing of nine different types of access on a local server. You can also configure these settings via an Active Directory group policy, which overrides any local settings that you&#8217;ve defined. After auditing has [...]]]></description>
			<content:encoded><![CDATA[<p>Windows supports auditing of various account- and system-related events, which can be invaluable when troubleshooting a security incident. You can enable auditing of nine different types of access on a local server. You can also configure these settings via an Active Directory group policy, which overrides any local settings that you&#8217;ve defined. After auditing has been configured, audit messages are created in the Security event log.</p>
<p><span id="more-230"></span><br />
The big question is: which audit settings should you enable? If you turned on everything, your server would start flooding your Security event log and ultimately it wouldn&#8217;t be very useful. In fact, there are no hard and fast rules for which settings you should enable.</p>
<p>All audit settings have three possible configurations: not configured, Success, and Failure. Not configured means auditing isn&#8217;t enabled for the setting, Success means log any applicable event that was successful, and Failure means log any applicable event that failed. Often, it is more useful to log Failure events since you want to discover someone who is attempting to perform an activity surreptitiously, which may mean doing it several times until successful.</p>
<p>With some settings, simply enabling Success or Failure won&#8217;t actually cause any events to be logged. You also have to enable auditing on specific objects, such as a particular file, before events will be audited. This is useful because in some cases, such as files and folders, you may only want to audit certain ones. If auditing were enabled for all files, the amount of events would render auditing unfeasible.</p>
<h3>Using a graphical user interface</h3>
<ol class="docList" type="1">
<li>
<p class="docList">Open the Local  Security Policy snap-in.</p>
</li>
<li>
<p class="docList"> In the left pane, expand <span class="docEmphBold">Local  Policies</span> -&gt; <span class="docEmphBold">Audit Policy</span>.</p>
</li>
<li>
<p class="docList"> In the right pane, double-click the setting you want to enable,  and check the box beside <span class="docEmphBold">Success</span> and/or <span class="docEmphBold">Failure</span> depending on the types of events you want to  audit.</p>
</li>
</ol>
<p>You can force new auditing settings to be applied by running  the <em>secedit</em> command on Windows 2000 or the <em>gpupdate</em> command on  Windows Server 2003.</p>
<p>Run the following command on Windows 2000:</p>
<pre>&gt; secedit /refreshpolicy machine_policy</pre>
<p>And run this command on Windows Server 2003:</p>
<pre>&gt; gpupdate /target:computer</pre>
<h4 class="docSection2Title"></h4>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/13/enabling-auditing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analyzing Your Security Configuration</title>
		<link>http://www.xiitec.com/blog/2008/11/12/analyzing-your-security-configuration/</link>
		<comments>http://www.xiitec.com/blog/2008/11/12/analyzing-your-security-configuration/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 22:31:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=229</guid>
		<description><![CDATA[The Microsoft Baseline Security Analyzer  (MBSA) is a freely available tool from Microsoft that let&#8217;s you scan computers  for the latest security problems with Windows along with numerous Microsoft  products. Some of these include Office, Exchange Server 2003, Microsoft Virtual  Machine, and BizTalk. It can also check the configuration of Internet [...]]]></description>
			<content:encoded><![CDATA[<p>The Microsoft Baseline Security Analyzer  (MBSA) is a freely available tool from Microsoft that let&#8217;s you scan computers  for the latest security problems with Windows along with numerous Microsoft  products. Some of these include Office, Exchange Server 2003, Microsoft Virtual  Machine, and BizTalk. It can also check the configuration of Internet  Configuration Firewall, Automatic Updates, and password settings.</p>
<p><span id="more-229"></span><br />
MBSA has both a graphical and command-line interface. The MBSA  graphical interface allows you to scan a single or multiple computers at one  time (up to 10,000).</p>
<p>The MBSA command-line interface, <em>mbsacli.exe</em>, has the  same functionality as the graphical interface. With it, you can easily automate  periodic scans of your servers.</p>
<p>For more information on MBSA, including download instructions,  see <a href="http://www.microsoft.com/technet/security/tools/mbsahome.mspx" target="_blank">http://www.microsoft.com/technet/security/tools/mbsahome.mspx</a>.</p>
<p>MBSA keeps itself up to date with the latest vulnerabilities  and security updates by automatically polling Microsoft when you start the  program. As of Version 1.2, you can alternately point MBSA at a SUS server to  download the update catalog. This lets you determine what servers in your  network are up to date according to your internal SUS server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/12/analyzing-your-security-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mounting and Dismounting Mailbox Stores</title>
		<link>http://www.xiitec.com/blog/2008/11/10/mounting-and-dismounting-mailbox-stores/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/mounting-and-dismounting-mailbox-stores/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:21:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[dismount]]></category>
		<category><![CDATA[mailbox stores]]></category>
		<category><![CDATA[mount]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=228</guid>
		<description><![CDATA[There will be times that you need to dismount a mailbox store on the fly. This could be for integrity checking, mailbox restorations, or to make email unavailable to some users for some reason. When you dismount a mailbox store, users with mailboxes in that store will be unable to retrieve their mail; users with [...]]]></description>
			<content:encoded><![CDATA[<p>There will be times that you need to dismount a mailbox store on the fly. This could be for integrity checking, mailbox restorations, or to make email unavailable to some users for some reason. When you dismount a mailbox store, users with mailboxes in that store will be unable to retrieve their mail; users with mailboxes in other mailbox stores will be unaffected.</p>
<p><span id="more-228"></span><br />
Using a graphical user interface</p>
<ol type="1">
<li>Open the Exchange System Manager (ESM) snap-in.</li>
<li> In the left pane, browse to the server and storage group that  contains the mailbox store you want to manipulate.</li>
<li> Right-click on the mailbox store and select <span class="docEmphBold">Dismount Store</span>.</li>
<li> Click <span class="docEmphBold">Yes</span> when prompted to  continue.</li>
</ol>
<h3>Using VBScript</h3>
<pre>' This code mounts/dismounts a Mailbox Store.</pre>
<pre>' ------ SCRIPT CONFIGURATION ------</pre>
<pre>strServer  = "<tt><em>&lt;Exchange Server&gt;</em></tt>"     ' e.g., ExchServer2

strSGName  = "<tt><em>&lt;Storage Group Name&gt;</em></tt>"  ' e.g., SG1

strMailStoreName = "<tt><em>&lt;Database Name&gt;</em></tt>" ' e.g., DB1

' ------ END CONFIGURATION ---------' Find Storage Group URL

strSearch = "CN=" &amp; strSGName  &amp; ","

set objSrv = CreateObject("CDOEXM.ExchangeServer")

objSrv.DataSource.Open strServer

for each sg in oSrv.StorageGroups

if (instr(1,sg,strSearch,1)&gt;0) then strSGUrl = sg

next

' Generate Mailbox Store URL

strMBUrl = "LDAP://CN=" &amp; strMailStoreName &amp; "," &amp; strSGUrl

' Open Mailbox Store

set objMb = CreateObject("CDOEXM.MailBoxStoreDB")

objMb.DataSource.Open strMBUrl

if (objMb.Status = 0) then

Wscript.Echo "Mailbox store is mounted, dismounting..."

objMb.Dismount

else

Wscript.Echo "Mailbox store is dismounted, mounting..."

objMb.Mount

end if

Wscript.Echo "Script completed successfully."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/mounting-and-dismounting-mailbox-stores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listing Domain Controllers and Global Catalog Servers Used by an Exchange Server</title>
		<link>http://www.xiitec.com/blog/2008/11/10/listing-domain-controllers-and-global-catalog-servers-used-by-an-exchange-server/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/listing-domain-controllers-and-global-catalog-servers-used-by-an-exchange-server/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:18:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[domain controller]]></category>
		<category><![CDATA[exchange server]]></category>
		<category><![CDATA[global catalog]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=227</guid>
		<description><![CDATA[Exchange is very dependent upon Active Directory domain controllers. The list of domain controllers currently being used by a server is usually one of the first pieces of information you should gather when you encounter an Exchange issue. While this can be done through the GUI, it is much easier to get the data through [...]]]></description>
			<content:encoded><![CDATA[<p>Exchange is very dependent upon Active Directory domain controllers. The list of domain controllers currently being used by a server is usually one of the first pieces of information you should gather when you encounter an Exchange issue. While this can be done through the GUI, it is much easier to get the data through a script.</p>
<p><span id="more-227"></span><br />
While the GUI provides only a listing of the domain controllers and global catalog servers in use, the WMI provider offers considerably more information. This additional information can be extremely important during troubleshooting, so you should have this script or something similar available to your Exchange Admins for troubleshooting purposes.</p>
<h3> Using a graphical user interface</h3>
<ol >
<li> Open the Exchange System Manager (ESM)  snap-in.</li>
<li> In the left pane, browse to the <span class="docEmphBold">Servers</span> container.</li>
<li> Right-click on the target server and select <span class="docEmphBold">Properties</span>.</li>
<li> Click on the <span class="docEmphBold">Directory</span> <span class="docEmphBold">Access</span> tab and view the domain controllers being  used.</li>
</ol>
<h3>Using VBScript</h3>
<pre>' This code enumerates domain controllers being used.' ------ SCRIPT CONFIGURATION ------

strComputer = "<tt><em>&lt;Exchange Server&gt;</em></tt>" 'e.g., ExchServer2

' ------ END CONFIGURATION ---------set objWMI = GetObject("winmgmts:\\" &amp; strComputer &amp; _

"\root\MicrosoftExchangeV2")

set objDCList = objWMI.ExecQuery("Select * from Exchange_DSAccessDC",,48)

for each objDc in objDCList

Wscript.Echo "DCName: objDc.name"

strTemp = "Automatic"

if (dc.ConfigurationType=0) then strTemp="Manual"

Wscript.Echo "  Selection: " &amp; strTemp

Wscript.Echo "  Is Fast  : " &amp; objDc.IsFast

Wscript.Echo "  In Sync  : " &amp; objDc.IsInSync

Wscript.Echo "  Is Up    : " &amp; objDc.IsUp

Wscript.Echo "  Ldap Port: " &amp; objDc.LDAPPort

strTemp = "Global Catalog"

if (objDc.type=0) then strTemp = "Config"

if (objDc.type=1) then strTemp = "Local Domain"

Wscript.Echo "  Role     : " &amp; strTemp

Wscript.Echo "-----------"

Next

Wscript.Echo "Script completed successfully.</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/listing-domain-controllers-and-global-catalog-servers-used-by-an-exchange-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Mailbox Store</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-a-mailbox-store/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-a-mailbox-store/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:13:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[mailbox store]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=226</guid>
		<description><![CDATA[Mailbox stores, which are also called mailbox databases, are where mailboxes are located. There are quite a few configuration settings for mailbox stores which are beyond the scope of this chapter, but going through the ESM GUI when manually creating a mailbox store should give you an idea of what can be configured.
Depending on the [...]]]></description>
			<content:encoded><![CDATA[<p>Mailbox stores, which are also called mailbox databases, are where mailboxes are located. There are quite a few configuration settings for mailbox stores which are beyond the scope of this chapter, but going through the ESM GUI when manually creating a mailbox store should give you an idea of what can be configured.</p>
<p><span id="more-226"></span>Depending on the version (Standard or Enterprise) of Exchange, you can have up to four storage groups per server and up to five mailbox stores per storage group. ESM enforces these limits, but it is possible to directly modify Active Directory to exceed these limits. If you create more databases or storage groups than allowed, the additional databases will not mount.</p>
<p>Mailbox stores are represented in Active Directory by the  <tt>msExchPrivateMDB</tt> class. This class is not as simple as some of the other classes used by Exchange. In addition, several of the attributes hold binary data, so working directly with these Active Directory objects can be difficult via VBScript or command-line methods. One of the more notable attributes of the mailbox store objects is a back-link attribute called <tt>homeMDBBL</tt>. This multivalued attribute links back to all of the  <tt>user</tt> objects that have mailboxes in this mailbox store.</p>
<h3> Using a grap<u></u>hical user interface</h3>
<ol type="1">
<li>Open the Exchange System Manager (ESM) snap-in.</li>
<li> In the left pane, browse to the server and storage group where  you want to create a new mailbox store.</li>
<li> Right-click on the storage group and select <span class="docEmphBold">New</span> -&gt; <span class="docEmphBold">Mailbox Store</span>.</li>
<li> Enter a name for the store, configure the settings on each tab,  and click <span class="docEmphBold">OK</span>.</li>
<li> When prompted to mount the store, click <span class="docEmphBold">Yes</span>.</li>
</ol>
<h3>Using VBScript</h3>
<pre>' This code creates a Mailbox Store.' ------ SCRIPT CONFIGURATION ------

strServer  = "<tt><em>&lt;Exchange Server&gt;</em></tt>"          ' e.g., ExchServer2

strSGName  = "<tt><em>&lt;Storage Group Name&gt;</em></tt>"       ' e.g., SG1

strMailStoreName = "<tt><em>&lt;MailBox Store Name&gt;</em></tt>"  ' e.g., DB1

' ------ END CONFIGURATION ---------' Find Storage Group URL

strSearch = "CN=" &amp; strSGName  &amp; ","

set objSrv = CreateObject("CDOEXM.ExchangeServer")

objSrv.DataSource.Open strServer

for each strSg in objSrv.StorageGroups

if (instr(1,strSg,strSearch,1)&gt;0) then strSGUrl = strSg

next

' Generate Mailbox Store URL

strMBUrl = "LDAP://CN=" &amp; strMailStoreName &amp; "," &amp; strSGUrl

' Create/configure Mailbox Store and save it

set objMb = CreateObject("CDOEXM.MailBoxStoreDB")

objMb.DataSource.SaveTo strMBUrl

' Mount DataBase

objMB.Mount

Wscript.Echo "Successfully created mailbox store."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-a-mailbox-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Storage Group</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-a-storage-group/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-a-storage-group/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 23:09:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[storage group]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=225</guid>
		<description><![CDATA[Storage groups are used for physically breaking your databases  up into smaller management groups. This is done for several reasons. Chief among  them are so you have more numerous but smaller databases, a logical organization  of mailboxes, or faster Exchange backups and restores. The Exchange Server can  run one simultaneous backup [...]]]></description>
			<content:encoded><![CDATA[<p>Storage groups are used for physically breaking your databases  up into smaller management groups. This is done for several reasons. Chief among  them are so you have more numerous but smaller databases, a logical organization  of mailboxes, or faster Exchange backups and restores. The Exchange Server can  run one simultaneous backup for each storage group. So if you have 10 databases  spread across two storage groups, you can have two backups running in parallel;  if you have 10 databases spread across five storage groups, you can have five  backups running in parallel.</p>
<p><span id="more-225"></span>Depending on the version (Standard versus Enterprise) of  Exchange, you can have up to four storage groups per server and up to five  mailbox stores per storage group. ESM enforces these limits, but it is possible  to directly modify Active Directory to exceed them. If you create more databases  or storage groups than allowed by your version, the additional databases will  not mount.</p>
<p>Storage groups are represented in Active Directory by the  <tt>msExchStorageGroup</tt> class. This class has several attributes that have  fairly intuitive string values and names and can be matched up to the options in  ESM. Unfortunately, the raw Active Directory objects and attributes and their  valid values for Exchange are not well documented. You can experiment with their  settings, but do so only in a lab environment.</p>
<h3>Using a command-line interface</h3>
<p>A bad aspect of creating storage groups by direct Active  Directory object manipulation is that you will not get warnings concerning the  maximum number of storage groups allowed.</p>
<h3>Using VBScript</h3>
<p>The process of calling the CDOEXM interfaces to create storage  groups is rather straightforward once you have the URL for the object&#8217;s location  in Active Directory. In this solution, to get the storage group container&#8217;s  distinguished name for the server, the script loops through all storage groups  on the sever and sets <tt>strTemp</tt> to the URL value of the last storage  group. This value is then parsed to get the parent container for the storage  groups to build the new storage group URL.</p>
<h5 class="docSection3Title"></h5>
<h3>Using a graphical user interface</h3>
<ol type="1">
<li> Open the Exchange System Manager (ESM) snap-in.</li>
<li> In the left pane, browse to the server that you want to create  a new storage group for.</li>
<li> Right-click on the server and select <span class="docEmphBold">New</span> -&gt; <span class="docEmphBold">Storage Group</span>.</li>
<li> Enter a name, transaction log location, system path location  for storage of temporary and recovered files, and click <span class="docEmphBold">OK</span>.</li>
</ol>
<h3>Using a command-line interface</h3>
<p>First, create an LDIF file called <em>add_sg.ldf</em> with the  following contents:</p>
<pre>dn: CN=<tt><em>&lt;Storage Group Name&gt;</em></tt>,<tt><em>&lt;ParentDN&gt;</em></tt>changetype: add

objectClass: msExchStorageGroup

cn: <tt><em>&lt;Storage Group Name&gt;</em></tt>

showInAdvancedViewOnly: TRUE

systemFlags: 1610612736

msExchESEParamEnableIndexChecking: TRUE

msExchESEParamEnableOnlineDefrag: TRUE

msExchESEParamSystemPath: <tt><em>&lt;Path to store system files&gt;</em></tt>

msExchESEParamPageFragment: 8

msExchESEParamPageTempDBMin: 0

msExchRecovery: TRUE

msExchESEParamZeroDatabaseDuringBackup: 0

msExchESEParamBaseName: E01

msExchESEParamCircularLog: 0

msExchESEParamEventSource: MsExchangeIS

msExchESEParamCheckpointDepthMax: 20971520

msExchESEParamCommitDefault: 0

msExchESEParamLogFilePath: <tt><em>&lt;Path to log files&gt;</em></tt>

msExchESEParamDbExtensionSize: 256

msExchESEParamLogFileSize: 5120</pre>
<p>Replace <tt><em>&lt;Storage</em></tt> <tt><em>Group</em></tt>  <tt><em>Name&gt;</em></tt> with the name of the storage group,  <tt><em>&lt;ParentDN&gt;</em></tt> with the distinguished names of the storage  groups container for the appropriate server,<tt><em> &lt;Path</em></tt>  <tt><em>to</em></tt> <tt><em>store</em></tt> <tt><em>system</em></tt>  <tt><em>files&gt;</em></tt> with the filesystem path where you want system files  (temporary and recovered files), and <tt><em>&lt;Path</em></tt> <tt><em>to</em></tt>  <tt><em>log</em></tt> <tt><em>files&gt;</em></tt> with the filesystem path where you  want exchange log files. Then run the following command:</p>
<pre>&gt;ldifde -i -f add-sg.ldf</pre>
<h3>Using VBScript</h3>
<pre>' This code creates a Storage Group.' ------ SCRIPT CONFIGURATION ------

strServer = "<tt><em>&lt;Exchange Server&gt;</em></tt>"      ' e.g., ExchServer2

strName   = "<tt><em>&lt;Storage Group Name&gt;</em></tt>"   ' e.g., SG1

strPath   = "<tt><em>&lt;File Path&gt;</em></tt>" &amp; strName  ' e.g., D:\Program Files\ExchSrvr

' ------ END CONFIGURATION ---------' Create URL to Storage Group

Set objSrv = CreateObject("CDOEXM.ExchangeServer")

objSrv.DataSource.Open strServer

' This for loop is a bit of a hack to retrieve the first Storage Group

' in the collection. VBScript doesn't let you access specific elements

' of a collection the way Jscript can.

for each strSg in objSrv.StorageGroups

strTemp = strSg

exit for

next

strTemp = mid(strTemp,instr(2,strTemp,"cn",1))

strSGUrl = "LDAP://cn=" &amp; strName &amp; "," &amp; strTemp

' Create/configure Storage Group and save it

set objSG = CreateObject("CDOEXM.StorageGroup")

objSG.MoveSystemFiles(strPath)

objSG.MoveLogFiles(strPath)

objSG.DataSource.SaveTo strSGUrl

Wscript.Echo "Successfully created storage group."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-a-storage-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Recipient Policy</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-a-recipient-policy/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-a-recipient-policy/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:43:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[recipient policy]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=224</guid>
		<description><![CDATA[Recipient policies are used for controlling how the  RUS stamps mail-enabled objects. It is in charge of stamping objects  with the correct email addresses as well as Mailbox Manager settings,  such as automatically deleting and reporting on messages that exceed  certain ages and sizes. Companies that have multiple divisions and want [...]]]></description>
			<content:encoded><![CDATA[<p>Recipient policies are used for controlling how the  RUS stamps mail-enabled objects. It is in charge of stamping objects  with the correct email addresses as well as Mailbox Manager settings,  such as automatically deleting and reporting on messages that exceed  certain ages and sizes. Companies that have multiple divisions and want  different email addresses for users in the different divisions use  multiple recipient policies for configuring the email addresses. Each  recipient policy has a filter that specifies the mailboxes it should  configure with its rules.</p>
<p><span id="more-224"></span></p>
<p>Recipient policy is too involved to do simply from  the command line or through VBScript. Several of the values in the  Active Directory msExchRecipientPolicy class are binary  types, which are not trivial to manipulate with LDIF or VBScript. If  you wish to programmatically create recipient policies, you can do it,  but you will need to use something a bit more involved, such as Visual  Basic or C++.</p>
<p>One note of warning: do not test the manipulation of recipient  policies in your production environment. Changes to recipient policies  get stamped on many or possibly all mail-enabled objects in the  directory, and you could unintentionally bring down entire sections of  your mail delivery system. Due to its widespread effect, you could have  great difficulty getting it all back up and running quickly. One  company that shall remain unnamed had gone through a merger process and  was trying to standardize some of their mail systems. Unfortunately,  they unintentionally changed the primary email address of more than  100,000 employees with one small incorrect recipient policy change. Due  to the type of mistake, this wasn&#8217;t noticed internally. It took a  couple of days for people outside of the company to notice and report  the issue to the company before it was corrected. In the meanwhile,  most email going into the company from the outside was not properly  delivered.</p>
<h3>Using a graphical user interface</h3>
<ol type="1">
<li> Open the Exchange System Manager (ESM) snap-in.</li>
<li> In the left pane, browse to the Recipients -&gt;  Recipient Policies container.</li>
<li> Right-click on Recipient  Policies and select New -&gt; Recipient  Policy.</li>
<li> Select the property pages you want on the recipient policy form  and click OK.</li>
<li> Enter the recipient policy name.</li>
<li> Click on Filter Rules, click  Modify, select the search criteria, click OK.</li>
<li> Read the warning message that is displayed and click OK.</li>
<li> Set the desired policies on the E-Mail  Addresses (Policy) and Mailbox Manager Settings  (Policy) tabs.</li>
<li> When you are done, click OK.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-a-recipient-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating an Address List</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-an-address-list/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-an-address-list/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:39:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[address list]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=223</guid>
		<description><![CDATA[Address lists are special groupings of email accounts that allow users to quickly find specific email users that are part of some logical grouping in the GAL. The RUS is responsible for creating and maintaining the address list links to the mail-enabled objects. The RUS links an address list to mail-enabled objects by adding the [...]]]></description>
			<content:encoded><![CDATA[<p>Address lists are special groupings of email accounts that allow users to quickly find specific email users that are part of some logical grouping in the GAL. The RUS is responsible for creating and maintaining the address list links to the mail-enabled objects. The RUS links an address list to mail-enabled objects by adding the address list&#8217;s distinguished name to the object&#8217;s <tt>showInAddressBook</tt> multivalue attribute. Once an address list has been created, it can take hours or days for the RUS to fully populate the list by stamping all related objects&#8217; <tt>showInAddressBook</tt> attributes,  depending on the size of your organization.</p>
<p><span id="more-223"></span></p>
<p>A curious point about address lists is that even though an LDAP filter is used to specify who should and shouldn&#8217;t be in the list, Exchange doesn&#8217;t actually use the filter to do an LDAP lookup against Active Directory. Instead, the RUS does its own compare on objects one by one. This is why you can&#8217;t specify a search base where the address list should start; it encompasses the entire forest including the configuration container. This means you need to be very careful with the filter so that it is limited to the objects you truly want displayed. A positive aspect of this implementation is that it doesn&#8217;t matter if you select indexed attributes for the filter. Since the RUS isn&#8217;t using LDAP to resolve the objects from the filter, performance is not affected by any indexes on the attributes. One final note: be careful if you use the preview button in the Exchange System Manager to verify the list&#8217;s validity. That method will use an LDAP query against Active Directory to display the values, and has no bearing on whether the list is built yet or even what will end up on it. It is possible in certain cases that the preview will not match with what you actually get in the address list.</p>
<p>Address lists are represented in Active Directory by the  <tt>addressBookContainer</tt> class. This is a simple class. The main value, the  address list filter, is stored in the <tt>purportedSearch</tt> attribute.</p>
<h3>Using a graphical user interface</h3>
<p>Using the GUI for this process is straight forward and is the most likely way you&#8217;ll want to create address lists unless you need to create a lot of them on the fly or you are importing them from a test lab.</p>
<h3>Using a command-line interface</h3>
<p>As mentioned previously, you need to be very careful with the  filter you specify for the <tt>purportedSearch</tt> attribute. The slightest mistake can cause the filter to not produce any results or produce an incorrect or incomplete result set. A filter such as <tt>(!attrib=value)</tt> instead of  <tt>(!(attrib=value))</tt>, while acceptable to Active Directory&#8217;s LDAP parser, will cause undefined results when interpreted by the RUS. The only way to verify that the list has been properly built is to manually compare what the query should generate with what has been generated.</p>
<p>To do this comparison, first generate a list of distinguished names that are members of the address list. This is done by using LDAP to query for all mail-enabled objects that have the address list distinguished name listed in the <tt>showInAddressBook</tt> attribute (e.g.,  <em>(&amp;(mailNickname=*)( showinaddressbook=cn=All Users,cn=All Address Lists,cn=Address Lists Container,cn=RALLENCORP,cn=Microsoft Ex-change,cn=Services, cn=Configuration,dc=rallencorp,dc=com))</em> ). Next, generate a list of distinguished names that are matched by the query you used for the address list. Finally, compare these lists.</p>
<h3>Using a graphical user interface</h3>
<ol type="1">
<li>Open the Exchange  System Manager (ESM) snap-in.</li>
<li>In the left pane, browse to the <span class="docEmphBold">Recipients</span> -&gt;  <span class="docEmphBold">All Address Lists</span> container.</li>
<li>Right-click on the <span class="docEmphBold">All Address  Lists</span> container and select <span class="docEmphBold">New</span> -&gt; <span class="docEmphBold">Address  List</span>.</li>
<li>Enter the address list name.</li>
<li>Click on <span class="docEmphBold">Filter Rules</span>, configure  the filter settings, and click <span class="docEmphBold">OK</span>.</li>
<li>Click Finish.</li>
</ol>
<h3>Using a command-line interface</h3>
<p>First, create an LDIF file called <em>add_al.ldf</em> with the following  contents:</p>
<pre>dn: CN=<tt><em>&lt;Address List Name&gt;</em></tt>,<tt><em>&lt;ParentDN&gt;</em></tt>changetype: addcn: <tt><em>&lt;Address List Name&gt;</em></tt>

displayName: <tt><em>&lt;Address List Name&gt;</em></tt>

objectClass: addressBookContainer

purportedSearch: <tt><em>&lt;LDAP Filter&gt;</em></tt>

systemFlags: 1610612736</pre>
<p>Replace <tt><em>&lt;Address</em></tt> <tt><em>list</em></tt>  <tt><em>Name&gt;</em></tt> with the name of the address list and  <tt><em>&lt;ParentDN&gt;</em></tt> with the distinguished name of the Address  Lists container in Active Directory (e.g., <em>cn=All Address Lists, cn=Address  Lists Container, cn=RALLENCORPMAIL, cn=Microsoft Exchange, cn=Services,  cn=Configuration, dc=rallencorp, dc=com</em>). Then, run the following  command:</p>
<pre>&gt;ldifde -i -f add-al.ldf</pre>
<h3>Using VBScript</h3>
<pre>' This code creates an Address List.' ------ SCRIPT CONFIGURATION ------

strParentDN  = "<tt><em>&lt;DN to All Address Lists Container&gt;</em></tt>"

' e.g., CN=All Address Lists,CN=Address Lists Container,

' CN=RALLENCORPMAIL,CN=Microsoft Exchange,

' CN=Services,CN=Configuration,DC=rallencorp,DC=comstrObjClass = "addressBookContainer"

strALName = "<tt><em>&lt;Address List Name&gt;</em></tt>"   ' e.g., Sales Dept

strFilterAttrib = "purportedSearch"

strFilter = "<tt><em>&lt;LDAP Filter&gt;</em></tt>"   ' e.g., (&amp;(department=sales)(homemdb=*))

' ------ END CONFIGURATION ---------

' Set Dynamic values

set objOU = GetObject("LDAP://" &amp; strParentDN)

set objNewObj = objOU.Create(strObjClass,"cn=" &amp; strALName)

objNewObj.Put "displayName",strALName

objNewObj.Put strFilterAttrib,strFilter

' Set static values

objNewObj.Put "systemFlags",1610612736

' Save object

objNewObj.SetInfo

Wscript.Echo "Successfully created address list."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-an-address-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Query-Based Distribution List</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-a-query-based-distribution-list/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-a-query-based-distribution-list/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:23:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[distribution list]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=222</guid>
		<description><![CDATA[Exchange Server 2003 has introduced a new type of distribution  list: the query-based DL. These are, as implied by name, distribution lists that  are built on the fly based on a query; specifically an LDAP query against Active  Directory.
This is an extremely powerful addition for Exchange, but you  have to be [...]]]></description>
			<content:encoded><![CDATA[<p>Exchange Server 2003 has introduced a new type of distribution  list: the query-based DL. These are, as implied by name, distribution lists that  are built on the fly based on a query; specifically an LDAP query against Active  Directory.</p>
<p><span id="more-222"></span>This is an extremely powerful addition for Exchange, but you  have to be careful because you can get into trouble with it. Unlike address  lists, the query-based DL is resolved each time it is used with an actual LDAP  query against Active Directory. This means that the query needs to be efficient.  Used enough, a poorly designed query for the DL could severely impact Exchange  and Active Directory performance. You will want to use indexed attributes and  avoid bitwise operators, the NOT operator, and medial search strings as per  normal Active Directory efficient programming guidelines. A medial search string  is a search string that has a wildcard somewhere other than at the end of the  string (e.g., *llen or j*e). See MSDN for more details (search for &#8220;Creating  Efficient Active Directory Queries&#8221;).</p>
<p>Unlike every other object you can mail-enable, when you create  a query-based DL you are <em>not</em> using the CDOEXM interface. However, when  you create this object with ADUC, the Exchange Management tools must be loaded  or the distribution list object will not be properly populated and will not  function properly. When creating the object from script or command line, you  directly set all of the Active Directory attributes of the  <tt>msExchDynamicDistributionList</tt> object. The specific changes that need to  be made are to the following attributes:</p>
<ul>
<li><tt>displayName</tt></li>
<li><tt>mailNickname</tt></li>
<li><tt>reportToOriginator</tt></li>
<li><tt>legacyExchangeDN</tt></li>
<li><tt>systemFlags</tt></li>
<li><tt>msExchDynamicDLBaseDN</tt></li>
<li><tt>msExchDynamicDLBaseFilter</tt></li>
</ul>
<p><strong>Using a graphical user interface</strong></p>
<p style="font-weight: bold">&nbsp;</p>
<ol type="1">
<li> Open the ADUC snap-in.</li>
<li> If you need to change domains, right-click on <span class="docEmphBold">Active Directory Users and Computers</span> in the left pane,  select <span class="docEmphBold">Connect to Domain</span>, enter the domain name,  and click <span class="docEmphBold">OK</span>.</li>
<li> In the left pane, browse to the parent container of the new  object, right-click on it and select <span class="docEmphBold">New</span> -&gt; <span class="docEmphBold">Query-based  Distribution Group</span>.</li>
<li> Enter the group name and mail alias and click <span class="docEmphBold">Next</span>.</li>
<li> Select the search base, enter the specifics of the filter, and  then click <span class="docEmphBold">Next</span>.</li>
<li> Verify the summary and click  Finish.</li>
</ol>
<p><strong>Using a command-line interface</strong></p>
<p>First, you need to create an LDIF file called  <em>add_qbdl.ldf</em> with the following contents:</p>
<pre>dn: CN=<tt><em>&lt;QB DL Name&gt;</em></tt>,<tt><em>&lt;ParentDN&gt; </em></tt>changetype: addcn: <tt><em>&lt;QB DL Name&gt;</em></tt>displayName: <tt><em>&lt;QB DL Name&gt;</em></tt>

objectClass: msExchDynamicDistributionList

mailNickname: <tt><em>&lt;mail nickname&gt;</em></tt>

legacyExchangeDN: <tt><em>&lt;legacy Exchange DN&gt;</em></tt>

msExchDynamicDLFilter: <tt><em>&lt;LDAP Filter&gt;</em></tt>

msExchDynamicDLBaseDN: <tt><em>&lt;BaseDN&gt;</em></tt>

reportToOriginator: TRUE

systemFlags: 1610612736</pre>
<p>Replace <tt><em>&lt;QB</em></tt> <tt><em>DL</em></tt>  <tt><em>Name&gt;</em></tt> with the name of the address list,  <tt><em>&lt;mail</em></tt> <tt><em>nickname&gt;</em></tt> with the mail nickname,  <tt><em>&lt;legacy</em></tt> <tt><em>Exchange</em></tt> <tt><em>DN&gt;</em></tt> with  the appropriate legacy Exchange DN value, <tt><em>&lt;LDAP Filter&gt;</em></tt>  with the specific LDAP filter you want to be used to determine group membership,  <tt><em>&lt;BaseDN&gt;</em></tt> with the base distinguished name you want used in  combination with the filter, and <tt><em>&lt;ParentDN&gt;</em></tt> with the  distinguished name of the container you want the group created in. Then run the  following command:</p>
<pre>&gt; ldifde -i -f add-qbdl.ldf</pre>
<p><strong>Using VBScript</strong></p>
<pre>' This code creates and mail enables a Query-Based Distribution List.</pre>
<pre>' ------ SCRIPT CONFIGURATION ------strParentDN  = "<tt><em>&lt;Parent DN&gt;</em></tt>"</pre>
<pre>' e.g., ou=groups,dc=rallencorp,dc=comstrGroupName ="<tt><em>&lt;DL Name&gt;</em></tt>"</pre>
<pre>' e.g., Sales Dept

strBaseDN = "<tt><em>&lt;Base DN&gt;</em></tt>"        ' e.g., ou=mail,dc=rallencorp,dc=com

strFilter = "<tt><em>&lt;Filter&gt;</em></tt>"         ' e.g., (&amp;( department=sales)(homemdb=*))

strLegacyDN = "<tt><em>&lt;Legacy DN of Recipients&gt;</em></tt>" &amp; "/cn=" &amp; strGroupName

' e.g. /o=RALLENCORPMAIL/ou=First Administrative Group/cn=Recipients</pre>
<pre>' ------ END CONFIGURATION ---------

' Set Dynamic values

set objOU = GetObject("LDAP://" &amp; strParentDN)

set objGroup = objOU.Create("msExchDynamicDistributionList","cn=" &amp; _

strGroupName)

objGroup.Put "msExchDynamicDLBaseDN", strBaseDN

objGroup.Put "msExchDynamicDLFilter", strFilter

objGroup.Put "displayName", strGroupName

objGroup.Put "mailNickname", strGroupName

objGroup.Put "legacyExchangeDN",strLegacyDN

' Set static values

objGroup.Put "systemFlags",1610612736

objGroup.Put "reportToOriginator",TRUE

objGroup.SetInfo

Wscript.Echo "Successfully created query-based DL."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-a-query-based-distribution-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
