<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Eric Norberg @ Microsoft</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ericnor/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ericnor/feed.xml</link>
    <description>Strange Issues seen within Exchange Escalations Support.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:44:33 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>E2K7: Creating Custom SMTP E-mail Address Policies Utilizing Various Replacement String Combinations</title>
      <link>https://docs.microsoft.com/archive/blogs/ericnor/e2k7-creating-custom-smtp-e-mail-address-policies-utilizing-various-replacement-string-combinations</link>
      <pubDate>Thu, 30 Apr 2009 17:56:00 GMT</pubDate>
      <dc:creator><![CDATA[ericnor]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/ericnor/2009/04/30/e2k7-creating-custom-smtp-e-mail-address-policies-utilizing-various-replacement-string-combinations/</guid>
      <description><![CDATA[&nbsp;
I have recently received a number of questions surrounding the generation of e-mail...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>I have recently received a number of questions surrounding the generation of e-mail addresses in Exchange 2007.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Particularly, whether or not custom email addresses can be generated via “legacy” replacement strings to meet specific organizational naming conventions.</FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>This post will present a brief overview of the process as well as offer numerous examples which should assist you when tasked with creating your own custom proxy address templates in Exchange 2007.</FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri></FONT>&nbsp;</P><FONT face=Calibri>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><FONT size=3>Legacy Behavior:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3>In previous versions of Exchange, administrators would commonly use variables and replacement strings within SMTP Recipient Policies to generate specific email addresses for their mail enabled users.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Specifically they would use these strings and variables to generate the local part of a user’s SMTP address.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Once the Recipient Policies were created and applied, the Recipient Update Service would “stamp” the proper email addresses on the objects based upon an LDAP Recipient Filter.</FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3>The most common variables and replacement strings are documented in MSKB 822447 (</FONT><A href="https://support.microsoft.com/kb/822447"><FONT color=#800080 size=3>https://support.microsoft.com/kb/822447</FONT></A><FONT size=3>). </FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3>Exchange System Manager (ESM) itself did not provide a GUI to assist with the creation of the various combinations which could potentially be generated.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>As such, the Administrator(s) had to have detailed knowledge of the replacement strings as well as their possible uses in order to successfully generate the SMTP addresses for mail enabled objects. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Once the replacement strings were added to the policy, the Recipient Update Service was then responsible for “stamping” the objects with the custom addresses based upon an LDAP filtering syntax (stored on the purportedSearch attribute of the Recipient Policy).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><SPAN style="mso-spacerun: yes"></SPAN></FONT>&nbsp;</P></FONT><FONT size=3 face=Calibri>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal">Exchange 2007 Behavior:<o:p></o:p></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Today, Exchange 2007 offers a Graphical Interface within the Exchange Management Console (EMC) to help an administrator generate email addresses based upon the most common variable combinations. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>To create an E-Mail Address Policy via the EMC an Administrator performs the following:</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Opens the EMC.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Navigates to the Organization Configuration, Hub Transport Node.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Switches to the E-Mail Address Policy Tab.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Provides a Name for the Policy and selects what type of Recipient Objects the policy will be responsible for as well as the conditions for how the policy will be applied. </P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpMiddle><o:p>&nbsp;</o:p></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Once these basic pieces of information have been provided, the Administrator eventually arrives at the E-Mail Addresses option page.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>On this page, an Administrator needs to define how the local part of the address will appear.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>As noted above, there are a number of pre-canned options to use for the alias.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>These options are provided in the following screen shot:</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG style="WIDTH: 444px; HEIGHT: 366px" src="https://i42.photobucket.com/albums/e326/enorberg/EMCAliasGeneration.jpg" width=444 height=366 mce_src="https://i42.photobucket.com/albums/e326/enorberg/EMCAliasGeneration.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>What should immediately stand out as a primary difference with that of legacy Exchange Recipient Policies is that there is no way to actually edit the alias generation portion of the address in the GUI.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In short you can only select one of the pre-canned options and lack the ability to further modify the local part of the address.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>In the example above, I have elected to generate based upon first initial of First Name (Given Name) and the full Last Name or Surname (e.g. for a user named “Test User” the user portion of the address would be “tuser”).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Once I specify the FQDN for the address (or select a valid Accepted Domain) and select OK, the replacement variables become visible on the E-Mail Addresses portion of the policy (although I can’t further edit them, if you select “Edit” you will simply be returned to the pre-canned options page):</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/defaultaddressvariablesinEMC.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/defaultaddressvariablesinEMC.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>This presents a problem if as an Administrator I had been tasked with generating the user portion of the addresses in the form of:</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 37.5pt; mso-add-space: auto; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>First 3 letters of the First Name (e.g. the Given Name)</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 37.5pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 37.5pt; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Full Last Name (e.g. the Surname)@en164420.lab. </P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>In this instance, I would want a replacement string in the form of:</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><B style="mso-bidi-font-weight: normal">%3g.%s.@en164420.lab<o:p></o:p></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>This string once successfully applied would render a mail enabled object named Test User with an SMTP address in the form of:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><B style="mso-bidi-font-weight: normal">Tes.User@en164420.lab </B>(which would accomplish precisely what I had been tasked with). </P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>However as evident from above, there is no pre-canned option for the generation of this type of address nor do I have any ability to directly modify it within the Exchange Management Console (e.g. via a Custom Address, etc.).</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>To accomplish the goal I essentially have 2 options:</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 37.5pt; mso-add-space: auto; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Keep an Exchange 2003 Server around so that custom Recipient Policies can be created, modified and applied by the Recipient Update Service (not a very attractive option).</P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpMiddle><o:p>&nbsp;</o:p></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Build or modify my policies via the Exchange Management Shell.</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal">Using SMTP Replacement Strings in Exchange Management Shell:<o:p></o:p></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The Exchange Management Shell can be utilized to define more sophisticated address templates.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Once created the syntax is fully visible in the Management Console (it’s just not editable).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Administrators new to Exchange 2007 also need to understand that E-mail Address Policies natively created in Exchange 2007 (or legacy polices that have had their filter syntax upgraded) utilize the new OPATH filtering syntax as opposed to LDAP.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Although there is a bit of a learning curve the primary benefit is that the filters themselves are far easier to create and interpret than those created with LDAP.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Legacy Recipient Filters that were created in previous versions of Exchange still function it is just not possible to edit those policies from within the EMC until they have been upgraded to OPATH.</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>To create a new E-mail Address Policy the <B style="mso-bidi-font-weight: normal"><U>New-EmailAddressPolicy</U></B> cmdlet is utilized within the shell:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><A href="https://technet.microsoft.com/en-us/library/aa996800.aspx"><FONT color=#800080>https://technet.microsoft.com/en-us/library/aa996800.aspx</FONT></A></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>To modify an existing E-mail Address Policy the <B style="mso-bidi-font-weight: normal"><U>Set-EmailAddressPolicy</U></B> is utilized within the shell: <A href="https://technet.microsoft.com/en-us/library/bb124517.aspx"><FONT color=#800080>https://technet.microsoft.com/en-us/library/bb124517.aspx</FONT></A></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>In my previous example, I wanted to generate the user portion of the SMTP utilizing the following naming convention :</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>First 3 Letters of First name.Full Last Name@domain.com (the name of my lab domain is en164420.lab)</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Example: Tes.User@en164420.lab</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>To create a new policy with this alias convention involves the following steps:</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpFirst><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Deciding on a Name for the new E-mail Address Policy.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Deciding on the Recipient Types I want the policy to apply to (e.g. Users with Exchange Mailboxes, Resource Mailboxes, etc.).</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">3.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Filtering Syntax (e.g. who do I want the policy to apply to)?</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">4.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>The format of the alias (e.g. what SMTP Replacement Strings to utilize).</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpMiddle><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">5.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Whether the address will apply to an Accepted Domain or an FQDN.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l0 level1 lfo1" class=MsoListParagraphCxSpLast><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore">6.<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Actually creating the E-mail Addressing Policy via Exchange Management Shell.</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>For the purpose of this example, I’m going to create a new policy named “Test” that applies to all Recipient Types via an OPATH filter utilizing the <B style="mso-bidi-font-weight: normal">%g </B>and <B style="mso-bidi-font-weight: normal">%s</B> replacement variables.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Open Exchange Management Shell.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpMiddle><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>Issue following command:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoListParagraphCxSpMiddle><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt">New-EmailAddressPolicy<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>-Name “Test” –IncludeRecipients AllRecipients –EnabledPrimarySMTPAddressTemplate “SMTP: %3g.%s.@en164420.lab”<o:p></o:p></SPAN></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.5in; mso-list: l1 level1 lfo2" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore">·<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN>ENTER</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal">Note:</B><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In this specific example, I used the “-IncludeRecipients” parameter as opposed to creating a conditional filter via the –RecipientFilter parameter.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The –RecipientFilter parameter is very useful for creating Policies that filter on specific properties such as Company, Country Code, a Custom Attribute, a Database, Department, etc).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I will provide some examples at the end of the post using conditional clauses with the –RecipientFilter parameter.</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>If your command completed successfully, you can now verify it by running Get-EmailAddressPolicy “Test” in Shell or going into the EMC and verifying that exists within the Organizational Configuration Node for Hub Transport.</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><U>Shell:<o:p></o:p></U></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_PolicyCreated.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_PolicyCreated.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Exchange Management Console:</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_PolicyCreated.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_PolicyCreated.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>The actual replacement string is now available in both the EMC and EMS:</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Exchange Management Console:</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_ReplacementString.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_ReplacementString.jpg"></U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Exchange Management Shell:</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_ReplacementString.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_ReplacementString.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Now to actually test that the policy applies an SMTP address in the proper format we are going to create a user called Test User and then Mailbox-Enable the object.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>In Active Directory Users and Computers (ADUC), I created a user account with a First Name of “Test” and a last name of “User” (the user object itself has no mailbox):</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/ADUC_NewUser_NoMailbox.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/ADUC_NewUser_NoMailbox.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>I then Mailbox Enable “Test User”:</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt">Enable-Mailbox –Identity “Test User” -Alias “tuser” -Database “MyServer\First Storage Group\Mailbox Database”<o:p></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>Next verify that the user portion of the address is accurate:<U><o:p></o:p></U></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><U><STRONG>Exchange Management Console:<o:p></o:p></STRONG></U></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_UserHaveMailboxEnabled.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/EMC_UserHaveMailboxEnabled.jpg"></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Exchange Management Shell:</U></STRONG></P>
<P><U><STRONG><IMG src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_ProperSMTPAddress.jpg" mce_src="https://i42.photobucket.com/albums/e326/enorberg/SMTP/Shell_ProperSMTPAddress.jpg"></STRONG></U></P>
<P><U><STRONG>Conclusion:</STRONG></U></P><o:p>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>SMTP Replacement Strings can be utilized in Exchange 2007 just as in previous versions of Exchange.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>However, there is no editable GUI interface for them in Exchange 2007.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Thus, to successfully generate aliases based upon replacement strings an administrator needs to utilize the Exchange Management Shell.</P></o:p>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><o:p>&nbsp;</o:p></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><U>Additional Examples:</U></B></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Example 1:</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">This example will create an email-address policy where the user portion of the SMTP address is in the form of FirstName.LastName(e.g.<SPAN style="mso-spacerun: yes">&nbsp;</SPAN>Eric.Norberg) where the domain is en164420.lab.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>It will also only apply the address to users who are on an Exchange server named “Executives” that have a title of “Executive”:</SPAN></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><EM>New-EmailAddressPolicy -Name "Executives" -RecipientFilter { ServerName -eq "Executives" -and Title -eq "Executive" } -EnabledPrimarySMTPAddressTemplate "SMTP:%g.%s.@en164420.lab"</EM></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><EM></EM>&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Example 2:</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>This example will create an E-mail Address policy where the user portion of the SMTP Address is in the form of first 3 letters of First Name.Last Name (e.g. <A href="mailto:eri.norberg@en164420">eri.norberg@en164420</A>).&nbsp;&nbsp; It will also force that all characters in the user portion of the address be in lower case (Example:&nbsp; If you had a user named “John Doe”, the address would not be Joh.Doe but <A href="mailto:joh.doe@en16442.lab">joh.doe@en16442.lab</A>).&nbsp; The policy would also only apply to objects that had an associated mailbox and had the Company value set to “Microsoft”:</P><o:p>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><EM>New-EmailAddressPolicy -Name "Global" -EnabledEmailAddressTemplate `SMTP: %rAa%rBb%rCc%rDd%rEe%rFf%rGg%rHh%rIi%rJj%rKk%rLl%rMm%rNn%rOo%rPp%rQq%rRr%rSs%rTt%rUu%rVv%rWw%rXx%rYy%rZz%3g.%s.@en164420.lab' -RecipientFilter {((RecipientType -eq 'UserMailbox') -and (Company -eq 'Microsoft'))}</EM></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><EM></EM>&nbsp;</P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><STRONG><U>Example 3</U></STRONG></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal>This example modifies the SMTP Template on a policy named "Test".&nbsp; It simply adjusts the SMTP user portion of the address template to display name by utilizing the %d replacment string:</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><EM>Set-EmailAddressPolicy -Name "Test" -EnabledPrimarySMTPTemplate 'SMTP: </EM><A href="mailto:%d.@en164420.lab'"><EM>%d.@en164420.lab'</EM></A></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph mce_keep="true">&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><STRONG><U>Example 4:</U></STRONG></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph>This example creates a new policy titled "Redmond Users".&nbsp; The policy applies to user objects with mailboxes that exist in the state of Washington "WA" who additionally have the otherTelephone attribute set to an area code beginning with 425.&nbsp; The user portion of the address is simply being stamped as alias.</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><EM>New-EmailAddressPolicy -Name "Redmond Users" -EnabledPrimarySMTPAddressTemplate 'SMTP: @en164420.lab' -RecipientFilter { RecipientType -eq 'UserMailbox' -and StateorProvince -eq "WA" -and OtherTelephone -like '425*' }</EM></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><EM></EM>&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><STRONG><U>Additional Reading:</U></STRONG></P>
<UL>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph>Understanding E-Mail Address Policies:&nbsp; <A href="https://technet.microsoft.com/en-us/library/bb232171.aspx">https://technet.microsoft.com/en-us/library/bb232171.aspx</A></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph></o:p>New-Email Address Policy Wizard / Custom Address:&nbsp; <A href="https://technet.microsoft.com/en-us/library/aa996030.aspx">https://technet.microsoft.com/en-us/library/aa996030.aspx</A></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph>Managing E-Mail Address Policies: <A href="https://technet.microsoft.com/en-us/library/aa998940.aspx">https://technet.microsoft.com/en-us/library/aa998940.aspx</A></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph>Filterable Properties for the -RecipientFilter Parameter:&nbsp; <SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><FONT color=#800080><A href="https://technet.microsoft.com/en-us/library/bb430771.aspx">https://technet.microsoft.com/en-us/library/bb430771.aspx</A></FONT></SPAN><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore"><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;</SPAN></SPAN></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore"><SPAN style="FONT: 7pt 'Times New Roman'"></SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol"><SPAN style="mso-list: Ignore"><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;</SPAN></SPAN></SPAN>New-EmailAddressPolicy:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN><A href="https://technet.microsoft.com/en-us/library/aa996800.aspx"><FONT color=#800080>https://technet.microsoft.com/en-us/library/aa996800.aspx</FONT></A></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Set-EmailAddressPolicy: <SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><A href="https://technet.microsoft.com/en-us/library/bb124517.aspx"><FONT color=#800080>https://technet.microsoft.com/en-us/library/bb124517.aspx</FONT></A></SPAN></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Update-EmailAddressPolicy: <A href="https://technet.microsoft.com/en-us/library/aa996869.aspx">https://technet.microsoft.com/en-us/library/aa996869.aspx</A></SPAN></SPAN></DIV></LI>
<LI>
<DIV style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 10pt 0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1" class=MsoListParagraph><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Upgrading Custom LDAP Filters to OPATH:&nbsp; <SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><A href="https://technet.microsoft.com/en-us/library/cc164375.aspx"><FONT color=#800080>https://technet.microsoft.com/en-us/library/cc164375.aspx</FONT></A></SPAN></SPAN></SPAN></DIV></LI></UL></FONT>]]></content:encoded>
    </item>
    <item>
      <title>How to Remove an Invisible or Corrupted "Out of Facility" message with MFCMAPI</title>
      <link>https://docs.microsoft.com/archive/blogs/ericnor/how-to-remove-an-invisible-or-corrupted-out-of-facility-message-with-mfcmapi</link>
      <pubDate>Sat, 07 Feb 2009 17:35:00 GMT</pubDate>
      <dc:creator><![CDATA[ericnor]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/ericnor/2009/02/07/how-to-remove-an-invisible-or-corrupted-out-of-facility-message-with-mfcmapi/</guid>
      <description><![CDATA[This article is going to address how to deal with 1-off issues surrounding "Out of Facility"...]]></description>
      <content:encoded><![CDATA[<P>This article is going to address how to deal with 1-off issues surrounding "Out of Facility" responses in Outlook.&nbsp; Over the years I have seen many strange cases surrounding OOF responses.&nbsp; However, generally speaking they fell into one of the following categories:</P>
<UL>
<LI>A user compains that although he/she has composed and activated an OOF response within Outlook no OOF message is being sent.</LI>
<LI>The wrong or duplicate OOF messages are being sent.</LI>
<LI>An extremely old OOF response (invisible to the end user in Outlook) is being sent.</LI></UL>
<P>In my experience there have been lots of these sorts of issues and typically the "root cause" turns out to be minor corruption of the OOF message within the Outlook Inbox.&nbsp;&nbsp; "Usually", these issues boil down to how and when the original OOF message was created (e.g. the Inbox Assistant, Rules Wizard, OWA, etc.), versions of Exchange Server that have or "may have" been in existance at a company (and hence how many times the mailbox itself has been moved between different versions of Exchange). </P>
<P>It is not the intention of this article to provide a "slash and burn" approach to dealing with these sorts of issues.&nbsp; I would not recommend you begin your troubleshooting here.&nbsp; In short, it is my expectation that you have done your dillegence and have arrived here as a "last resort" or sorts.&nbsp;<U> I would like to emphasize that if you do not feel comfortable with any of the steps I have listed here or if you have further questions/concerns that you open an issue with Microsoft Product Support</U>.&nbsp; The engineer who assists you will be able to provide you with a detailed analysis, action items, and summary for your specific issue. Perhaps you might even reach me.</P>
<P>&nbsp;<STRONG><U>MFCMAPI</U></STRONG></P>
<P>A thorough discussion of MFCMAPI is well outside the scope of this entry.&nbsp; There is a tremendous amount of public information about MFCMAPI for consumption.&nbsp; However the short story is that MFCMAPI is a graphical MAPI editior (much like Outlook) that allows a user (with sufficent permissions) the ability to access and modify items within a mailbox or public folder.&nbsp; It is commonly used within Microsoft Product Support to facilitate investigations of "strange" issues between Exchange and Outlook.&nbsp; It does have a wide range of applications but most commonly it is used to perform one of the following operations:</P>
<UL>
<LI>Delete Corrupted Mail or Public/System Folder Items that cannot be removed via conventional means (Outlook, OWA, etc.).</LI>
<LI>To clear (or "cleanse", as I like to say), the Exhcange Temp Tables on a given server.</LI>
<LI>Inspection of Hidden Folders present within a mailbox or public folder.</LI>
<LI>Troubleshooting Replication of Individaul Free Busy messages (this will be the subject of a future blog entry).</LI>
<LI>Removal of a corrupt rule.</LI></UL>
<P>Today we will focus on removing a corrupt Inbox OOF rule, although the steps presented here would be just as applicable to other rules with minor exceptions with respect to the Message Class of the rule, where it might be located, et cetera.</P>
<P><STRONG><U>Hypothetical Issue:</U></STRONG></P>
<P>A user contacts you (the administrator), because they are experiencing problems where an old OOF response if being sent out once the "Send Out of Office auto-replies" has been enabled within the Out of Office Assistant.</P>
<P>As an administrator you have done your dilligence and cannot locate this OOF response anywhere (in Rules and Alerts, within the OOF Assistant, et cetera).&nbsp; As such, you decide to further investigate with MFCMAPI.</P>
<P><STRONG><U>Steps:</U></STRONG></P>
<P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>1.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'">Prior to performing any editing you will want to take a valid export of all rules configured within the user's profile (Tools, Rules and Alerts, Options, Export Rules, give the export a name (file extension should be .rwz), and click OK.&nbsp; Verify the file has been created and that it is valid -- to really test, you could important the rules into a dummy mailbox and verify they are valid.</SPAN></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>2.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>It would also be helpful to have a copy of the incorrect OOF message being sent (with the OOF Assistant enabled for the impacted user, send a test message and verify that you receive the invalid response).</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>3.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Turn off the OOF Assistant if it currently enabled then close Outlook.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>4.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>You will need to have a valid MAPI profile to use MFCMAPI.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So you can download MFCMAPI to the user’s desktop (where Outlook is installed), or create a new MAPI profile for the user.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>5.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Start MFCMAPI and from the “Session Menu” select “Logon and Display Stores”, and choose the proper Outlook profile.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>6.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Open the Mailbox of the profile that you want to inspect or “delete” the OOF rule for (this&nbsp;can be done either&nbsp;via a double-click on the mailbox or a right-click with a selection of “Open Store”.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;<IMG style="WIDTH: 690px; HEIGHT: 211px" height=211 src="https://i680.photobucket.com/albums/vv169/ericnor/1.jpg" width=690 mce_src="https://i680.photobucket.com/albums/vv169/ericnor/1.jpg"></FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>7.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>This will bring you to the root of the user’s mailbox.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>At this point you will want to navigate down to the Inbox Folder (path PRE-Exchange 2007:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Root-Mailbox – IPM-Subtree – Inbox, Exchange 2007 Path:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Root Container – Top of Information Store –Inbox).</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;<IMG style="WIDTH: 846px; HEIGHT: 259px" height=259 src="https://i680.photobucket.com/albums/vv169/ericnor/2.jpg" width=846 mce_src="https://i680.photobucket.com/albums/vv169/ericnor/2.jpg"></FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>8.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Right-Click the Inbox folder and select “Open Associated Contents Table”.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>9.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Once you are in the associated Contents Table, you will want to sort on the “Message Class” column.<SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>The valid classes for OOF messages are:</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l1 level1 lfo2"><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>IPM.Note.Rules.OofTemplate.Microsoft</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l1 level1 lfo2"><SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>IPM.Note.Rules.ReplyTemplate.Microsoft</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l1 level1 lfo2"><FONT face=Calibri size=3></FONT>&nbsp;</P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 74.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l1 level1 lfo2"><IMG style="WIDTH: 931px; HEIGHT: 250px" height=250 src="https://i680.photobucket.com/albums/vv169/ericnor/3.jpg" width=931 mce_src="https://i680.photobucket.com/albums/vv169/ericnor/3.jpg"></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>10.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri>If you are performing these operations on a workstation that has Outlook installed, you can actually open the item by right-clicking and selecting “Open Message” or simply double-clicking.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>11.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Open all items of type IPM.Note.Rules.OofTemplate until you locate the OOF template that matches the invalid one (verified in Step-2).</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; mso-add-space: auto"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>12.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Initially, try just deleting the matching OofTemplate and moving on.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>You can always come back and delete all messages at a later point if need be.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>13.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>To delete, simply select the OofTemplate , right click the instance, and select “Delete Message”.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>14.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Close MFCMAPI properly by selecting Exit to each screen that has been presented.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>On the Final dialog, where the actual tree is located, select the Session menu then select “Logoff” (this will clear the windows).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Then from the file Menu, select Exit.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>15.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Start Outlook with the proper user profile.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>16.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Synchronize the mailbox with Exchange (if the user were in cached mode for example) by pressing F9 or the Send/Receive button.</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>17.</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri size=3>Create a new OOF message and turn on the Automatic Replies for the OOF Assistant (note:<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>at this point you could actually close Outlook, then double check that the new OOF message was created properly by using MFCMAPI to verify there is a new OOF template).</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><FONT face=Calibri size=3></FONT>&nbsp;</P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><FONT face=Calibri size=3>18.&nbsp; Test sending mail to the user and verify that the new OOF response is delivered successfully</FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 38.25pt; TEXT-INDENT: -0.25in; mso-add-space: auto; mso-list: l0 level1 lfo1"><o:p><FONT face=Calibri size=3>&nbsp;</P></FONT></o:p>
<P><SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Hope you find this useful.</SPAN></P>
<P><SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Happy Trails.</SPAN></P>
<P><SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Eric</SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Move-Mailbox Operations in Exchange 2007 Fail Due to An Attribute "Being Too Long"</title>
      <link>https://docs.microsoft.com/archive/blogs/ericnor/move-mailbox-operations-in-exchange-2007-fail-due-to-an-attribute-being-too-long</link>
      <pubDate>Sat, 24 Jan 2009 06:38:00 GMT</pubDate>
      <dc:creator><![CDATA[ericnor]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/ericnor/2009/01/24/move-mailbox-operations-in-exchange-2007-fail-due-to-an-attribute-being-too-long/</guid>
      <description><![CDATA[Move-Mailbox in Exchange 2007 Fails Due to An Attribute "Being Too Long"
The original scope or...]]></description>
      <content:encoded><![CDATA[<P><STRONG><U>Move-Mailbox in Exchange 2007 Fails Due to An Attribute "Being Too Long"</U></STRONG></P>
<P><BR>The original scope or reason for this call was that Mailbox-Moves from Exchange 2003 to Exchange 2007 <BR>were failing. In this specific case (although it was never performed), mailbox moves would have also <BR>failed if the source mailbox had resided on an Exchange 2007 server and the destination was either <BR>Exchange 2007 or 2003.&nbsp; This is because the Exchange 2007 tools would have to be used to perform the <BR>move.</P>
<P>So, if you are experiencing Move-Mailbox failures when using Exchange 2007 tools (such as the Exchange <BR>Management console or the Exchange Powershell) and the reason being provided is that an "attribute is <BR>too long", I'd like to personally welcome you.&nbsp; </P>
<P>This is definitely your article.</P>
<P><STRONG><U>Primary Issue &amp; Symptoms:</U></STRONG></P>
<P><BR>The individual I was working with was experiencing problems attempting to migrate Exchange 2003 <BR>mailboxes to Exchange 2007. He was receiving sporadic failures during the Move-Mailbox operations.&nbsp; <BR>When the mailboxes failed to move he would receive the following error in Exchange Management Console <BR>and Shell:</P>
<P>_______________________________________________________________________________________________________</P>
<P>(Note:&nbsp; In every example throughout the course of this post, I'm going to focus on Exchange <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extensionAttribute2.&nbsp; However, the failure could occur on any attribute that exceeds the <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; predefined upper limit which will be explained later).<BR>_______________________________________________________________________________________________________</P>
<P><BR><U>Error:</U>&nbsp; <BR>Custom Attribute2 is too long: maximum length is 1024 and the actual length is "x" (where "x" is <BR>something greater than 1024 characters)</P>
<P>Additionally, running Get-Mailbox in shell "&lt;user name&gt;" for the failed user would result in an error <BR>about the object being corrupted:</P>
<P><U>Warning:</U>&nbsp; Object domain.com/Users/TestUser has been corrupted and it is in an inconsistent state.&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The following validation errors have occurred:</P>
<P><U>Warning:</U>&nbsp; CustomAttribute2 is too long: maximum length is 1024 and the actual length is 1358 (the <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; character count on extension attribute2 for my example user).</P>
<P><BR><STRONG><U>Troubleshooting:</U></STRONG></P>
<P><BR>Prior to calling in the customer had tested whether or not one of these impacted users could be moved to <BR>another Exchange 2003 database and server. The result of that test was that it could be moved successfully.&nbsp; <BR>The issue only manifested itself when moving the mailbox to an Exchange 2007 mail store.&nbsp; </P>
<P>Obviously mailbox moves in Exchange 2007, use an entirely different tool set (EMC, and EMS) than that of <BR>2003/2000.&nbsp; </P>
<P>The first thing I had this fellow do was take an LDP dump of an impacted user and send this to me for review.<BR>A simple review of the LDP dump showed that extensionAttribute2 had a whole lot of characters present on the <BR>user object. To get an exact count, I simply copied the character string in this attribute to Notepad <BR>(disabled Word Wrap) then enabled the Status bar. A single Line in Notepad (with Word Wrap Disabled) can <BR>only hold 1024 characters.&nbsp; So, I simply went to the end of line 2, to get the character count of line 2 and <BR>added that value to 1024 (the character count of line 1).</P>
<P>I did this simply to verify that the Exchange Shell and Management Console were calculating this value <BR>accurately (which they were):</P>
<P>1024 + 334 (character count of line 2) = 1358</P>
<P><BR><U>Verifying the Limits of Extension Attribute 2 in the Windows Schema</U></P>
<P><BR>In the Windows Schema there is an object of the attributeSchemaClass for Exchange Extension Attribute 2.&nbsp; <BR>The actual adminDisplayName of this object is:&nbsp; ms-Exch-Extension-Attribute-2.</P>
<P>This object (as well as all other default Exchange related objects and classes) are created during Exchange <BR>2007 /PrepareSchema (or in previousversions of Exchange /ForestPrep).</P>
<P>The minimum and maximum character values for objects of this type are defined by two attributes:&nbsp; </P>
<P>rangeLower (being the minimum) <BR>rangeUpper (being the maximum).</P>
<P>I had this individual provide me with an LDP dump of the ms-Exch-Extension-Attribute-2 object from his <BR>environment for me to review. </P>
<P>This looked like the following (keep in mind this is taken from my own personal lab environment):</P>
<P><BR>Expanding base 'CN=ms-Exch-Extension-Attribute-2,CN=Schema,CN=Configuration,DC=&lt;DOMAIN&gt;,DC=com'...<BR>Result &lt;0&gt;: (null)<BR>Matched DNs: <BR>Getting 1 entries:<BR>&gt;&gt; Dn: CN=ms-Exch-Extension-Attribute-2,CN=Schema,CN=Configuration,DC=&lt;DOMAIN&lt;,DC=com<BR>&nbsp;2&gt; objectClass: top; attributeSchema; <BR>&nbsp;1&gt; cn: ms-Exch-Extension-Attribute-2; <BR>&nbsp;1&gt; distinguishedName: CN=ms-Exch-Extension-Attribute-2,CN=Schema,CN=Configuration,DC=&lt;DOMAIN&gt;,DC=com; <BR>&nbsp;1&gt; instanceType: 0x4 = ( IT_WRITE ); <BR>&nbsp;1&gt; whenCreated: 04/03/2002 15:15:43 Pacific Standard Time Pacific Daylight Time; <BR>&nbsp;1&gt; whenChanged: 09/03/2008 17:20:51 Pacific Standard Time Pacific Daylight Time; <BR>&nbsp;1&gt; uSNCreated: 6732; <BR>&nbsp;1&gt; attributeID: 1.2.840.113556.1.2.424; <BR>&nbsp;1&gt; attributeSyntax: 2.5.5.12; <BR>&nbsp;1&gt; isSingleValued: TRUE; <BR>&nbsp;1&gt; rangeLower: 1; <BR>&nbsp;1&gt; rangeUpper: 10240; <BR>&nbsp;1&gt; mAPIID: 32814; <BR>&nbsp;1&gt; uSNChanged: 46036019; <BR>&nbsp;1&gt; showInAdvancedViewOnly: TRUE; <BR>&nbsp;1&gt; adminDisplayName: ms-Exch-Extension-Attribute-2; <BR>&nbsp;1&gt; adminDescription: ms-Exch-Extension-Attribute-2; <BR>&nbsp;1&gt; oMSyntax: 64; <BR>&nbsp;1&gt; searchFlags: 17; <BR>&nbsp;1&gt; lDAPDisplayName: extensionAttribute2; <BR>&nbsp;1&gt; name: ms-Exch-Extension-Attribute-2; <BR>&nbsp;1&gt; objectGUID: bc303dd3-f496-4c60-a5fa-8647a42dd063; <BR>&nbsp;1&gt; schemaIDGUID: bf967969-0de6-11d0-a285-00aa003049e2; <BR>&nbsp;1&gt; attributeSecurityGUID: 1f298a89-de98-47b8-b5cd-572ad53d267e; <BR>&nbsp;1&gt; isMemberOfPartialAttributeSet: TRUE; <BR>&nbsp;1&gt; objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=&lt;DOMAIN&gt;,DC=com; <BR>-----------</P>
<P>So here we see that the rangerLower value is set to 1 (which would be expected as the attribute itself can <BR>only be NOT SET or something &gt; 1), and the rangeUpper value is set to 10240. This rangeUpper value explains <BR>why I can have a character string stored in the AD larger than 1024 (in this case for extensionAttribute2 <BR>on a user object) but doesn't explain why the Mailbox Move operation would expect the value to be something <BR>less than or equal to 1024 characters (e.g. 90% less than what is currently defined as the upper bounds on <BR>the schemaClass for the attribute here).</P>
<P>At first glance this looks like a really big bug. <BR>&nbsp;<BR>Why would we allow you to store something as large as 10240 characters in the AD and then fail the mailbox <BR>move because we expect this value to be less than 1024 characters?</P>
<P>Time to look at the LDF file responsible for setting this value.</P>
<P>When Exchange setup /prepareschema is run, a series of LDF files are imported to define Classes and valid <BR>attributes for mail enabled objects, etc.&nbsp; Amongst other things it will set valid ranges on some of the <BR>attributes being added or modifed in the Schema. In Exchange 2007 there are 100 of these files within the <BR>installation media named sequentially schema0.ldf - schema 99.ldf (in Exchange 2000/2003 there were 10, <BR>although the file sizes were significantly larger).</P>
<P>That's a lot of files to look through to find the right object.&nbsp; Fortunately I got lucky and <BR>ms-Exch-Extension-Attribute-2 is defined in the first file:&nbsp; schema0.ldf.</P>
<P>If you crack open that file in notepad, and search on the adminDisplayName for the object (in this case: <BR>ms-Exch-Extension-Attribute-2) you find the default values that /PrepareSchema sets for this object:</P>
<P><BR>dn: CN=ms-Exch-Extension-Attribute-2,&lt;SchemaContainerDN&gt;<BR>changetype: add<BR>adminDescription: ms-Exch-Extension-Attribute-2<BR>adminDisplayName: ms-Exch-Extension-Attribute-2<BR>attributeID: 1.2.840.113556.1.2.424<BR>attributeSyntax: 2.5.5.12<BR>isMemberOfPartialAttributeSet: FALSE<BR>isSingleValued: TRUE<BR>lDAPDisplayName: extensionAttribute2<BR>mapiId: 32814<BR>name: ms-Exch-Extension-Attribute-2<BR>oMSyntax: 64<BR>objectCategory: CN=Attribute-Schema,&lt;SchemaContainerDN&gt;<BR>objectClass: attributeSchema<BR>rangeLower: 1<BR>rangeUpper: 1024<BR>schemaIdGuid:: aXmWv+YN0BGihQCqADBJ4g==<BR>searchFlags: 0</P>
<P><STRONG><U>Conclusion 1:</U></STRONG></P>
<P><BR>Clearly an edit has occured to this object since the time /PrepareSchema was run.&nbsp; The rangeUpper value <BR>/PrepareSchema set was 1024 not 10240.</P>
<P>Customer's rangeUpper Value from LDP Dump: 10240<BR>Schema definition for rangeUpper:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024</P>
<P>So, somebody or something performed a Schema Edit of this object by appending a 0 to its default value.</P>
<P>____________________________________________________________________________________________________________</P>
<P>Note: </P>
<P>For the record, the only person with permissions to make such a change would be an account with Schema <BR>Admin permissions.&nbsp; So, if you are in a situaton where you need/"have to" figure out who made this change/edit, <BR>you "should have" a relatively short list of people to discuss your concens with.&nbsp;&nbsp;&nbsp; ____________________________________________________________________________________________________________</P>
<P>At this point I was informed by the individual I was working with that there is a certain 3rd Party Password <BR>History/Reset Tool, that uses extensionAttribute2 (although its apparently configurable) to write whatever <BR>values it needs to provide for its additional functionality.&nbsp; Apparently an upper boundary of 1024 characters <BR>was determined to be insufficent. Thus, he had been advised to perform the edit and increase its boundary <BR>to 10240.</P>
<P><BR>To be very, very clear here, Schema Edits/Modifications to the default Exchange and Windows objects have <BR>never been supported. The Reason:&nbsp; It is entirely possible that functionality could be added/removed that <BR>is dependent up the values we set/expect to be present (as in this case). </P>
<P>If you choose to go down this path, your risks include (but aren't necessairly limited to):</P>
<P>1.&nbsp; Your Exchange/Windows implementation not working as expected.<BR>2.&nbsp; Being unsupported.</P>
<P><U>So at this point I think a summary is in order:</U></P>
<P><BR>1.&nbsp; Mailbox Moves for specific users destined for Exchange 2007 fail when a value larger than 1024 on <BR>&nbsp;&nbsp;&nbsp; &nbsp;extensionAttribute2 is encountered.</P>
<P>2.&nbsp; These failures only occur when Exchange 2007 Management tools are used.</P>
<P>3.&nbsp; An unsupported Schema Edit has occurred against the SchemaClass object (in this case:&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ms-Exch-Extension-Attribute-2).</P>
<P>4.&nbsp; Similar problems are encountered when running Get-Mailbox for a user.&nbsp; The response is that the object <BR>&nbsp;&nbsp;&nbsp;&nbsp; is actually corrupted.</P>
<P><BR><U><STRONG>Troubleshooting (Continued):</STRONG></U></P>
<P><BR>At this point, I recommended that we perform a test of removing some characters from extensionAttribute2 (to <BR>get under 1024 charaters) for a single user, then re-trying the move.&nbsp; Prior to doing so, I ensured we had a <BR>current and valid LDP dump saved for our user prior to removing any characters off the user. Once done, I <BR>removed 335 characters off extensionAttribute2 for our guinea pig (e.g. "Test User").&nbsp; This left 1023 characters <BR>remaining on the user object.&nbsp; </P>
<P>It should go without saying that you don't just want to start removing random characters.&nbsp; I personally removed <BR>the first 335 characters (for simplicity), but removing the last 335 would have been just as simple <BR>(so use your creativity here).</P>
<P>I then forced Domain Controller synchronization within the domain where our "Test User" existed. </P>
<P>After verifying the change had replicated (used ADSI Edit and bound to several different DCs within the domain <BR>to verify the change), we retried the move. </P>
<P>The Result:&nbsp; SUCCESS.&nbsp; Guinea Pig moved.</P>
<P><BR><STRONG><U>Conclusion 2:</U></STRONG></P>
<P><BR>We have our first work around.&nbsp; In this case extensionAttribute2 is expected to be &lt; 1024.&nbsp; Reducing the characters <BR>on extensionAttribute2 to something below the expected rangeUpper value (as defined by the Exchange Schema update) <BR>allows the move to complete successfully.</P>
<P>It does add an additional layer of Administrative complexity (e.g. the users have to be defined and located, their <BR>original values saved, characters removed from the production object to get under the limit, the move performed, <BR>and once completed added back).&nbsp; But once done, the move will complete successfully.</P>
<P><BR><STRONG><U>Putting the Pieces Together:&nbsp; New Validation Checks in Exchange 2007 Move-Mailbox:</U></STRONG></P>
<P><BR>There are a host of articles and separate blog posts which specifically address this subject, so I'm not going to <BR>go into considerable detail here.&nbsp; However what I will say is that Exchange 2007 Move-Mailbox has added a number <BR>of new pre-move validation checks (these really didn't exist in Exchange 2003/2000/5.5).&nbsp; This was done in effort to <BR>try and reduce situations where partially provisioned accounts/mailboxes would exist as the result of a partial move.&nbsp; <BR>That is where to say from the "Exchange side" a mailbox move might have actually completed (e.g. the items were <BR>copied out of the source mailbox, a new mailbox was created on the target, and said items placed into the target) <BR>but some sort of other failure occurred during the update of the user's attributes (usually near the end of the move).&nbsp; <BR>So, the net result of the failure might be the user having msExchHomeServer set to the original source server, but <BR>homeMDB might be pointed to a database on the target server. The net result is that it is invalid, and now the user <BR>can no longer logon.&nbsp; Anyone that has had to deal with these sorts of problems knows how tedious they can be to <BR>resolve (in my line of work, I've worked way to many of these issues to ever want to have to do it again).</P>
<P>What's important with respect to the scope of this issue is to first know that these checks exist.</P>
<P>The "technical stuff" is that within Move-Mailbox code there is a hard-coded validation lookup table.&nbsp; A full <BR>discussion of this is well outside the scope of this post, but let's just say that there is a global variable <BR>defined for extensionAttribute2 and its rangeUpper value is defined as 1024 characters.&nbsp; Obvisously <BR>extensionAttribute2 is one of many different checks that are performed against the user pre-move, so if you make <BR>a modification to any other object to allow for a larger upper boundary, you run the distinct possibility that <BR>the pre-validation check will fail and the mailbox move cancelled.</P>
<P>The important distinction and thing to remember here is that rangeUpper is hard coded within the validation lookup <BR>table.&nbsp; Move-Mailbox will not make an LDAP call into the Active Directory Schema to determine what current rangeUpper <BR>value has been defined for the attribute class.&nbsp; So even though the Edit in and of itself is technically sound, <BR>the mailbox move will fail if it has more than 1024 characters. </P>
<P><STRONG><U>Conclusion 3:</U></STRONG></P>
<P><BR>Unfortunately at this point the individual I was assisting was in an unsupported state.&nbsp; Which essentially left 3 <BR>hypothetical options (If the first work around was not acceptable):</P>
<P>1.&nbsp; Find a way to circumvent or disable the Move-Mailbox validation check.<BR>2.&nbsp; Request a Development Change Request (DCR), to search the Schema as opposed to hard coding the rangeUpper <BR>&nbsp;&nbsp;&nbsp; value in code.</P>
<P>3.&nbsp; Locate another attribute with sufficent size to store the values currently residing on extensionAttribute2.</P>
<P>Option 1: Not possible.&nbsp; There is no way to disable the validation lookup check.</P>
<P>Option 2: Has been requested before and has been denied by the Product Team because we do not support edits to the&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Default Exchange Schema.</P>
<P>Which essentially leaves Option 3.</P>
<P>Exchange Extension Attributes have existed for a long time (I believe they were even present back in the Exchange <BR>4.0 days, but don't quote me on that -- I know they were present in 5.5).&nbsp; They were added to provide for some <BR>general flexibiliy for storing customer specific data (a good example of this might be a repository to store an <BR>IP Phone Number, because no specific IP Phone attribute existed back at that time.). They have also been used <BR>by Microsoft for very specific purposes such as migration tools (anybody remember NTDSNoMatch/NTDSAttrib? -- I <BR>really miss the ADC it kept me busy for years). </P>
<P>Under closer inspection you will find that extension attributes 1-10 have an upper boundary set to 1024 characters.&nbsp; <BR>However, 11-15 are double in size (2048 characters).&nbsp; </P>
<P>Here is a complete list with their corresponding values (taken from the SCHEMA*.LDF files):</P>
<P><BR>ms-Exch-Extension-Attribute-1&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-2&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-3&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-4&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-5&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-6&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-7&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-8&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-9&nbsp; --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-10 --&nbsp; rangeUpper:&nbsp; 1024<BR>ms-Exch-Extension-Attribute-11 --&nbsp; rangeUpper:&nbsp; 2048<BR>ms-Exch-Extension-Attribute-12 --&nbsp; rangeUpper:&nbsp; 2048<BR>ms-Exch-Extension-Attribute-13 --&nbsp; rangeUpper:&nbsp; 2048<BR>ms-Exch-Extension-Attribute-14 --&nbsp; rangeUpper:&nbsp; 2048<BR>ms-Exch-Extension-Attribute-15 --&nbsp; rangeUpper:&nbsp; 2048</P>
<P><BR>In the example I have been using througout this post, the current character size for "Test User' on <BR>extensionAttribute2 has been 1358.&nbsp; That value is considerably less than 2048, so if its value were stored to say <BR>extensionAttribute11, there would be no issue and the mailbox move would complete successfully. This is <BR>potentially valid work-around 2.</P>
<P>However, if you cannot guarantee that values will always be less than 2048 (if using extension11-15) then the use <BR>of an Exchange Extension Attribute is not a wise choice (to be clear you will be able to store them in the AD after <BR>the edit (if done correctly) -- but anytime you need to perform a Mailbox-Move or Get-Mailbox procedure against the <BR>user it will fail validation.&nbsp; This of course means you need to go with work-around 1.</P>
<P><BR><STRONG><U>In Summary:</U></STRONG></P>
<P><BR>As previously discussed Schema Edits of Default Exchange and Windows objects/attributes have never been supported <BR>and this issue is a perfect example of why. These checks were put into place in an effort to help prevent partially <BR>moved/provisioned mailboxes as well as a host of other scenarios to lengthy to discuss here. At the end of the day <BR>the best overall solution to this problem would be for these 3rd party vendors to create their own unique schema <BR>classes that "extend" (extend being the operative word here) the default User object class provided by Windows.&nbsp; <BR>This is fully supported. Once done they could write whatever values and sizes they want to an "intentional" attribute <BR>for whatever purpose they want.&nbsp; Because these attributes would be unique to their applications, they would never, <BR>(will never say never) be checked in some sort of validation code (in this case move-mailbox).</P>
<P><BR>A general outline for how this might be done:</P>
<P>1.&nbsp; Extend the Schema:&nbsp; <BR>&nbsp; &nbsp;&nbsp; <A href="https://technet.microsoft.com/en-us/magazine/2008.05.schema.aspx?pr=blog" mce_href="https://technet.microsoft.com/en-us/magazine/2008.05.schema.aspx?pr=blog">https://technet.microsoft.com/en-us/magazine/2008.05.schema.aspx?pr=blog</A></P>
<P>2.&nbsp; Extend the User Class in the AD Schema:&nbsp; <BR>&nbsp; &nbsp;&nbsp; <A href="https://www.windowsitpro.com/Web/Article/ArticleID/9738/9738.html" mce_href="https://www.windowsitpro.com/Web/Article/ArticleID/9738/9738.html">https://www.windowsitpro.com/Web/Article/ArticleID/9738/9738.html</A></P>
<P>3.&nbsp; Contact the IANA to acquire valid OIDs:&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp; <A href="https://msdn.microsoft.com/en-us/library/ms677621.aspx" mce_href="https://msdn.microsoft.com/en-us/library/ms677621.aspx">https://msdn.microsoft.com/en-us/library/ms677621.aspx</A><BR>&nbsp;&nbsp;&nbsp; <A href="https://pen.iana.org/pen/PenApplication.page" mce_href="https://pen.iana.org/pen/PenApplication.page">https://pen.iana.org/pen/PenApplication.page</A></P>
<P><BR>I hope you find this interesting/useful.</P>
<P>Happy Trails.</P>
<P>Eric</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Restore to Recovery Storage Group Fails with 0xa0008488 in Backup Executive</title>
      <link>https://docs.microsoft.com/archive/blogs/ericnor/restore-to-recovery-storage-group-fails-with-0xa0008488-in-backup-executive</link>
      <pubDate>Thu, 22 Jan 2009 22:05:00 GMT</pubDate>
      <dc:creator><![CDATA[ericnor]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/ericnor/2009/01/22/restore-to-recovery-storage-group-fails-with-0xa0008488-in-backup-executive/</guid>
      <description><![CDATA[This issue dealt specifically with a customer attempting to restore a 120GB mail store to a Recovery...]]></description>
      <content:encoded><![CDATA[<P>This issue dealt specifically with a customer attempting to restore a 120GB mail store to a Recovery Storage Group. </P>
<P>The customer was using Exchange 2003 SP2 and Backup Executive 9.1.</P>
<P><STRONG><U>Primary Issue &amp; Symptoms:</U></STRONG></P>
<P>Customer was attempting to restore an Exchange 2003 Mailbox Database to a Recovery Storage Group.&nbsp; Backup Executive would initalize the job successfully but the customer was noticing that the byte count never increased above 238 bytes.&nbsp; After 3 hours the restore would eventually timeout and the following error and status code would be documented in the restore log:</P>
<P>Job Competion Status<BR>Job Ended: &lt;time stamp&gt;<BR>Completed Status:&nbsp; Failed<BR>Final Error:&nbsp; 0xa0008488 -- Access is Denied</P>
<P><STRONG><U>Troubleshooting Steps:</U></STRONG></P>
<P>Clearly the "Access Is Denied" error suggests a permissions related issue.&nbsp; Reviewing the configuration of the Recovery Storage Group showed that the Database Path for the linked store was being written to the f:\.</P>
<P>The first thing I did was review the NTFS permissions across the drives and did not notice any issues.</P>
<P>I then had the customer create a folder share on the root of the f:\, and verified that users could access the share remotely.</P>
<P>I&nbsp; then had the customer create a Test mail store (within the Production Storage Group where the database he was attempting to restore resided) and then had them add a single Test Mailbox to the store.&nbsp; We sent the Test User a single message and then backed up Test Store with NTBackup as well as Backup Executive.&nbsp; We added the Test Store as a "linked database" with the RSG, and ensured that the linked database and log file path was also confgured for the f:\.&nbsp; We then attempted a restore of Test via NTBackup.</P>
<P>This restore operation also failed, however NTBackup returned a different error stating that it was "Unable to Create the Log Path".&nbsp; A review of the application log showed the following additional error: </P>
<P>Event Type:&nbsp; Error<BR>Event Source: ESE Backup<BR>Event ID: 950<BR>Description:&nbsp; Unexpected file system error 53 encountered while opening the restore environment file."</P>
<P><BR>What is interesting about this event and error is:</P>
<P>1.&nbsp; It suggests that the natue of the error was during the creation of the Exchange restore environment file (e.g. restore.env).<BR>2.&nbsp; The System Error Code of 53.&nbsp; This equates to ERROR_BAD_NETPATH</P>
<P>At this point, I wanted to verify that Test could be restored to a drive outside of the f:\.&nbsp; So, we removed the linked stores, and rebuilt the RSG linking Test then configuring the Log and Database paths to the e:\.</P>
<P>We then attempted a restore of Test with NTBackup which completed successfully.&nbsp; <BR>Removed the stores and retested a restore with Backup Executive which also restored successfully.</P>
<P><STRONG><U>Conclusion 1:</U></STRONG>&nbsp; </P>
<P>Again, clearly the f:\ is suspect here as evident by the fact that both NTBackup and Backup Executive can both restore to a location outside of f:\.&nbsp; This would also suggest no issue with Backup Executive or NTBackup as well as no&nbsp;issue with the configuration of the RSG itself (as restores can be completed regardless of Agent).</P>
<P>The obvious question here is what is unique about the f:\?&nbsp; At this point I was informed that the f:\ was in fact an External USB Drive that had "temporarily" been added for these specific recovery operations because&nbsp;there was not enough free space locally on any drive to support the size of the file being restored.&nbsp; In short, the customer had never tested this before.&nbsp; </P>
<P><STRONG><U>Troubleshooting (Continued):</U></STRONG></P>
<P>When any valid Backup/Restore agent&nbsp;(e.g. one that subscribes to the rules and methods of the APIs responsible for Exchange aware backup/restore) restores an Exchange Database (regardless of whether or not it resides in an RSG or production directory),&nbsp;ESE (the Extensible Storage Engine) needs to be able to physically map the path specified for the Temporary Location for the restore (e.g. the path specified for logs coming off tape as well as for the creation of the restore environment file).&nbsp; It does this via a UNC path that includes within the path the Admin Share for the target drive.</P>
<P>&nbsp;"\\ Server Name\&lt;AdminShare of Drive&gt;\Temp Directory Specified for Log Files"</P>
<P>&nbsp;Example:&nbsp; \\ My Server\f$\MyRestore</P>
<P>So to verify that the shares were setup properly, I had the customer open CMD and enter:&nbsp; NET SHARE<BR>NET SHARE will list all configured Shares on a System.<BR>Reviewing the Output of NET SHARE, clearly showed that Default Admin share was <U>not</U> created for the f:\, but was present for all other drives.&nbsp; Which explained why a restore to the e:\ in the previous example worked successfully and also provided a logically sound reason for System Error 53 in the 950 Event.</P>
<P><STRONG><U>Conclusion 2:</U></STRONG></P>
<P>The fact that the Default Admin share for the f:\ was not present suggested the following:</P>
<P>1.&nbsp; An Administrator had manually removed the Admin Share (which seemed unlikely).<BR>2.&nbsp; There was a problem with Disk Manager creating the share for External Storage (more likely).&nbsp; </P>
<P>Admin Shares (drive$) are created during startup when the SERVER service fully initalizes.&nbsp; My suspicion was that most likely the issue with the Admin Share not being created on the External Storage was occuring because the External Storage Device wasn't fully initalized by the Disk Manager System when the SERVER service has completed startup.&nbsp; As such, the SERVER service assigned no share to the drive because it wasn't technically valid at the time of assignment.</P>
<P>I tested this hypothesis internally with a personal USB Hard-Drive and witnessed the identical behavior (there was no "Default Share" for my USB Hard-Drive).</P>
<P><STRONG><U>Troubleshooting (cont.):</U></STRONG></P>
<P>On my own system (one without Exchange installed), I restarted the SERVER service and re-ran NET SHARE.&nbsp; The result was that my own personal External USB Drive now showed a proper ADMIN Share.&nbsp; This seemed to back up my conclusions about how the SERVER service creates shares for the External USB Drive.</P>
<P>The next logical step in this case was to restart the SERVER service on the Exchange Server where the RSG had been configured.</P>
<P>There are two primary Exchange Services that have a dependency of the SERVER service.&nbsp; Namely the Information Store (MSExchangeIS), and the System Attendant (MSExchangeSA).</P>
<P>Prior to restarting the SERVER service, I had the customer manually dismount all production stores (to force all pending writes into the store and bring the databases into a CONSISTENT or "Clean Shutdown" State), then proceeded to manually stop the Information Store and System Attendant (as well as the Computer Browser service which is dependent on the SERVER service) .&nbsp; With these sevices offline, I restarted the Server service from the command line:</P>
<P>net stop srv<BR>net start srv</P>
<P><BR>With the SERVER service back online, I proceeded to bring the Computer Browser, Exchange Information Store, and Exchange System Attendant Services back online.&nbsp; </P>
<P>At this point ran NET SHARE.</P>
<P>Result:&nbsp; The f:\ was now showing as have a valid Default Admin Share.&nbsp; From the cmd line you would see something like this:</P>
<P>NET SHARE</P>
<P>Share name&nbsp;&nbsp; Resource&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Remark<BR>-------------------------------------------------------------------------------<BR>F$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F:\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default share</P>
<P>We then rebuilt our Recovery Storage Group, linked the original database back to the RSG, specificed our Database, Log and TEMP paths onto the f:\ and successfully restored the mail database via Backup Executive.</P>
<P><STRONG><U>Conclusion:</U></STRONG></P>
<P>It would appear that when External USB Storage is used, Windows does not automatically create the Admin Shares for the USB drive.&nbsp; As previously discussed, Admin Shares are created during server startup when the SERVER service fully initializes.&nbsp; My "professional opinion" (I am after all an Exchange Specialist not a Windows specialist), is that most likely this occurs because the External Storage isn't fully initialized by the Disk Manager System when the SERVER service has completed startup.&nbsp; This is why a "reboot" of the server wouldn't correct the issue (it would simply recreate the issue).&nbsp; By restarting the SERVER service with the USB Drive fully initalized, you effectively force the shares to be re-evaluated and recreated. </P>
<P>So what is important to remember here is that if you ever have to perform a similar operation (restoring an Exchange Database to an External Drive), you need to ensure that the Admin Share for the Drive is configured properly prior to attempting the restore (as Exchange needs to directly map to the the UNC path specified&nbsp;via the Admin Share). The Admin Share itself is not needed for a backup, but it should go without saying that no production Exchange Database should ever by physically located on a USB drive.&nbsp; Otherwise, you and I will probably be working&nbsp;on an Exchange&nbsp;Performance related issue in the near to distant future (hello RPC pop-up).</P>
<P>Hope you find this interesting. </P>
<P>Happy Trails.</P>
<P>Eric</P>]]></content:encoded>
    </item>
  </channel>
</rss>