<?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; Exchange server 2003</title>
	<atom:link href="http://www.xiitec.com/blog/category/system-administration/windows/exchange-server-2003/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>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>
		<item>
		<title>Creating a Mail-Enabled Distribution List</title>
		<link>http://www.xiitec.com/blog/2008/11/10/creating-a-mail-enabled-distribution-list/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/creating-a-mail-enabled-distribution-list/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:09:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[distribution list]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=221</guid>
		<description><![CDATA[Anyone who has used a distribution list knows how useful they  can be. It is much easier to send email to a single email address than to tens  or hundreds or even thousands of addresses. Exchange allows you to mail-enable  any group object in Active Directory. Then, when someone sends email to [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has used a distribution list knows how useful they  can be. It is much easier to send email to a single email address than to tens  or hundreds or even thousands of addresses. Exchange allows you to mail-enable  any group object in Active Directory. Then, when someone sends email to that  group, every mail-enabled or mailbox-enabled user in the group will receive a  copy of the email.</p>
<p><span id="more-221"></span></p>
<p>Active Directory groups can have a group type of security or  distribution. While distribution lists are usually of type distribution, you can  mail-enable security groups as well. In fact, if anyone in the Exchange  Organization uses a distribution group to grant permissions to anything in  Exchange, whether it is a calendar or a folder or any other object, Exchange  converts the distribution group to a mail-enabled security group. This is  something to be aware of because more than one administrator has found himself  in a position trying to explain why distribution groups had mysteriously changed  into security groups.</p>
<p>A popular question I&#8217;ve often heard is: What scope should my  distribution groups have? The official response is: whatever scope you need. If  you have a multidomain environment, you should probably use a universal group.  Mail-enabled groups have to be fully expandable on any global catalog that gets  the request to expand the membership. The only group scope that qualifies in a  normal multidomain environment is a universal group. If you have a single-domain  environment, any group scope will work fine.</p>
<p>When you create a mail-enabled group with the GUI or VBScript,  you are using the CDOEXM interface. This interface is the Microsoft-supported  method of managing Exchange attributes on users, groups, and contacts.  <tt>MailEnable</tt> is the specific method called. In the background, the  specific changes made by the <tt>MailEnable</tt> method are on the  <tt>group</tt> object in Active Directory and include changes to the following  attributes:</p>
<ul>
<li><tt>reportToOriginator</tt></li>
<li><tt>mailNickname</tt></li>
<li><tt>legacyExchangeDN</tt></li>
</ul>
<p>Once those attributes have been set, the RUS sets additional  attributes on the group object to make the group usable by Exchange.</p>
<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 DL,  right-click on it, and select <span class="docEmphBold">New</span> -&gt; <span class="docEmphBold">Group</span>.</li>
<li> Enter group name, select group scope, select group type, and  click <span class="docEmphBold">Next</span>.</li>
<li> Verify that <span class="docEmphBold">Create an Exchange e-mail  address</span> is selected and click <span class="docEmphBold">Next</span>.</li>
<li> Click <span class="docEmphBold">Finish</span>.</li>
</ol>
<p><strong>Using a command-line interface</strong></p>
<p>The following command creates a group:</p>
<pre>&gt; dsadd group "<tt><em>&lt;GroupDN&gt;</em></tt>" -scope <tt><em>&lt;Group Scope&gt;</em></tt> -secgrp yes|no</pre>
<p>The following command mail-enables a group:</p>
<pre>&gt; exchmbx -b "<tt><em>&lt;GroupDN&gt;</em></tt>"<tt><em> </em></tt>-me<tt><em> </em></tt></pre>
<p>Replace <tt><em>&lt;GroupDN&gt;</em></tt> with the group&#8217;s  distinguished name, <tt><em>&lt;Group</em></tt> <tt><em>Scope&gt;</em></tt> with  <tt>l</tt>, <tt>g</tt>, or <tt>u</tt> for local group, global group, or  universal group, respectively. <tt>-secgrp</tt> should be set to <tt>yes</tt> if  this is to be a security group, <tt>no</tt> otherwise.</p>
<p>To create and mail-enable a distribution universal group named  UniDL, execute the following commands:</p>
<pre>&gt; dsadd group "<tt><em>cn=UniDL,ou=grps,dc=rallencorp,dc=com</em></tt>"<tt><em> -scope u </em></tt>-secgrp no

&gt; exchmbx -b "<tt><em>cn=UniDL,ou=grps,dc=rallencorp,dc=com</em></tt>"<tt><em> -me</em></tt></pre>
<p>For an alternative method, create an LDIF file called  <em>create_dl.ldf</em> with the following contents:</p>
<pre>dn: CN=<tt><em>&lt;group name&gt;</em></tt>,<tt><em>&lt;Parent DN&gt;</em></tt>

changetype: add

objectClass: group

cn: <tt><em>&lt;group name&gt;</em></tt>

sAMAccountName: <tt><em>&lt;group name&gt;</em></tt>

groupType: <tt><em>&lt;group type&gt;</em></tt>

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

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

reportToOriginator: TRUE</pre>
<p>Replace <tt><em>&lt;ParentDN&gt;</em></tt> with the distinguished  name of the container where you want the group created,<tt><em> &lt;group  name&gt;</em></tt> with the name you want the group to be called,  <tt><em>&lt;group type&gt;</em></tt> with the group&#8217;s scope and type value,<tt><em>  &lt;mail nickname&gt;</em></tt> with the group&#8217;s mail nickname, and  <tt><em>&lt;legacy exchange DN&gt;</em></tt> with the proper legacy exchange  distinguished name value.  You can skip specifying the legacyExchangeDN if you want Exchange to  populate the value for you.</p>
<p>To create a Universal Distribution List group with an Exchange  generated legacyExchangeDN, create the file with the following contents:</p>
<pre>dn: CN=UniMailGroup,CN=groups,DC=rallencorp,DC=com

changetype: add

objectClass: group

cn: UniMailGroup

sAMAccountName: UniMailGroup

groupType: 8

mailNickname: UniMailGroup

reportToOriginator: TRUE</pre>
<p>Then run the following command:</p>
<pre>&gt; ldifde -i -f create_dl.ldf</pre>
<p><a title="windowsvrckbk-CHP-17-SECT-20.2.3" name="windowsvrckbk-CHP-17-SECT-20.2.3"></a></p>
<h5>Using VBScript</h5>
<pre>' This code creates and mail enables a Distribution List

' ------ SCRIPT CONFIGURATION ------

strParentDN  = "<tt><em>&lt;ParentDN&gt;</em></tt>"   ' e.g., ou=groups,dc=rallencorp,dc=com

strGroupName = "<tt><em>&lt;GroupName&gt;</em></tt>"   ' e.g., JoewareUsers

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

' Constants taken from ADS_GROUP_TYPE_ENUM

Const ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP = 1

Const ADS_GROUP_TYPE_GLOBAL_GROUP       = 2

Const ADS_GROUP_TYPE_LOCAL_GROUP        = 4

Const ADS_GROUP_TYPE_SECURITY_ENABLED   = -2147483648

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

set objGroup = objOU.Create("group","cn=" &amp; strGroupName)

objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP

objGroup.Put "sAMAccountName", strGroupName

objGroup.MailEnable

objGroup.SetInfo

Wscript.Echo "Successfully created mail-enabled DL."</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/creating-a-mail-enabled-distribution-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mail-Disabling a Contact</title>
		<link>http://www.xiitec.com/blog/2008/11/10/220/</link>
		<comments>http://www.xiitec.com/blog/2008/11/10/220/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:56:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=220</guid>
		<description><![CDATA[Using a graphical user interface

 Open the ADUC snap-in.
This needs to be run on a workstation or server that has the Exchange Management Tools loaded
If you need to change domains, right-click on Active Directory Users and Computers in the left pane, select Connect to Domain, enter the domain name, and click OK
In the left pane, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Using a graphical user interface</strong></p>
<ol>
<li> Open the ADUC snap-in.</li>
<li>This needs to be run on a workstation or server that has the Exchange Management Tools loaded</li>
<li>If you need to change domains, right-click on Active Directory Users and Computers in the left pane, select Connect to Domain, enter the domain name, and click OK</li>
<li>In the left pane, browse to the parent container of the user, right-click on the user, and select Exchange Tasks.</li>
<li>On the Welcome screen, click Next.</li>
<li>Select Remove Exchange Attributes and click Next.</li>
<li>Read the warning and click Next.</li>
<li>On the Completion screen, click Finish.</li>
</ol>
<p><span id="more-220"></span></p>
<p><strong>Using VBScript</strong></p>
<pre>' This code mail disables a contact.
 ' ------ SCRIPT CONFIGURATION ------
 strContactDN = "<contactdn>"
 '              e.g., cn=jsmith,ou=Contacts,dc=rallencorp,dc=com
 ' ------ END CONFIGURATION ---------
 set objContact = GetObject("LDAP://" &amp; strContactDN)
 objContact.MailDisable
 objContact.SetInfo( )
 Wscript.Echo "Successfully mail-disabled contact."</contactdn></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/11/10/220/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mail-Enabling a Contact</title>
		<link>http://www.xiitec.com/blog/2008/04/23/mail-enabling-a-contact/</link>
		<comments>http://www.xiitec.com/blog/2008/04/23/mail-enabling-a-contact/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 18:35:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Exchange server 2003]]></category>

		<guid isPermaLink="false">http://www.xiitec.com/blog/?p=219</guid>
		<description><![CDATA[A mail-enabled contact is a contact that has at least one email address defined within Exchange. A contact cannot have a mailbox because it is not a security principal, so there is no way to safely authenticate the object. You use a mail-enabled contact when you have an email address external to the forest&#8217;s Exchange [...]]]></description>
			<content:encoded><![CDATA[<p>A mail-enabled contact is a contact that has at least one email address defined within Exchange. A contact cannot have a mailbox because it is not a security principal, so there is no way to safely authenticate the object. You use a mail-enabled contact when you have an email address external to the forest&#8217;s Exchange organization that you want to be listed in your GAL. The email address could be external to the company or it could just be external to that forest&#8217;s Exchange organization. Examples would be people from other companies or users who do not use the Active Directory of the Exchange organization.</p>
<p><span id="more-219"></span></p>
<p><strong>Using a graphical user interface</strong></p>
<ol>
<li> Open the ADUC snap-in.If you need to change domains, right-click on Active Directory Users and Computers in the left pane, select Connect to Domain, enter the domain name, and click OK.</li>
<li>In the left pane, browse to the parent container of the contact, right-click on the contact, and select Exchange Tasks.</li>
<li>On the Welcome screen, click Next.</li>
<li>Select Establish E-mail Address and click Next.</li>
<li>Verify the mail alias.</li>
<li>Click Modify, select external email address type (generally SMTP Address), and click OK. Enter an external email address and click OK.</li>
<li>Select the associated administrative group and click Next.</li>
<li>On the Completion screen, click Finish.</li>
</ol>
<p><strong>Using a command-line interface</strong></p>
<pre>&gt; exchmbx -b "<tt><em>&lt;ContactDN&gt;</em></tt>"<tt><em> </em></tt>-me<tt><em> &lt;smtp email address&gt;</em></tt></pre>
<p><contactdn> <smtp></smtp></contactdn></p>
<p>Replace <tt><em>&lt;ContactDN&gt;</em></tt>  <contactdn> with the contact&#8217;s distinguished name and the </contactdn><tt><em>&lt;smtp</em></tt> <tt><em>email address&gt; </em></tt><contactdn><smtp> with the contact&#8217;s external email address.</smtp></contactdn></p>
<p>For an alternative method, create an LDIF file called mailenable_contact.ldf with the following contents:</p>
<pre>dn: CN=<tt><em>&lt;ContactDN&gt; </em></tt>
changetype: modify
replace: targetAddress
targetaddress: SMTP:<tt><em>&lt;smtp email address&gt;</em></tt>
-
replace: mailNickName
mailNickname:<tt><em> &lt;mail nickname&gt;</em></tt>
-
replace: mAPIRecipient
mAPIRecipient: FALSE
-
replace: legacyExchangeDN
legacyExchangeDN: <tt><em>&lt;legacy exchange DN&gt;</em></tt>
-
replace: internetEncoding
legacyExchangeDN: 1310720
-</pre>
<p>Replace <tt><em>&lt;ContactDN&gt;</em></tt>  <contactdn> with the contact&#8217;s distinguished name, <smtp></smtp></contactdn><tt><em>&lt;smtp email address&gt;</em></tt>  <contactdn><smtp> with the contact&#8217;s external email addresss, and <legacy></legacy></smtp></contactdn><tt><em>&lt;legacy exchange DN&gt; </em></tt><contactdn><smtp><legacy> with the proper legacy exchange distinguished name value. Then run the following command:</legacy></smtp></contactdn></p>
<pre>&gt;ldifde -i -f mailenable_user.ldf</pre>
<p><strong>Using VBScript</strong></p>
<pre>' This code mail enables a contact.
' ------ SCRIPT CONFIGURATION ------
strContactDN = "<tt><em>&lt;ContactDN&gt;</em></tt>" ' e.g., cn=jsmith,ou=Contacts,dc=rallencorp,dc=com
strEmailAddr = "<tt><em>&lt;EmailAddress&gt;</em></tt>" 'e.g., jsmith234@freemail.net
' ------ END CONFIGURATION ---------
set objContact = GetObject("LDAP://" &amp; strContactDN)
objContact.MailEnable strEmailAddr
objContact.Put "internetEncoding",1310720
objContact.SetInfo( )
Wscript.Echo "Successfully mail-enabled contact."</pre>
<p><contactdn><iailaddress></iailaddress></contactdn></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiitec.com/blog/2008/04/23/mail-enabling-a-contact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
