Pages

Monday, July 18, 2011

A redirect from Exchange 2010 OWA to 2003 throws the error: “HTTP 500 Internal Server Error”

Before I being, note that this error can be caused by several reasons such as your virtual directories not having the correct permissions (see this KB: http://support.microsoft.com/kb/883380/en-us) which is NOT what I’m going to be writing about.

Problem

You’ve configured your legacy.domain.com and webmail.domain.com public URLs and directed them to the appropriate Exchange 2003 front-end and Exchange 2010 CAS server.

image

However, when you make an attempt to log into a legacy Exchange 2003 mailbox, you are prompted for the your user credentials again:

image

Entering the credentials again throws the following error:

The website cannot display the page
HTTP 500
Most likely causes:
•    The website is under maintenance.
•    The website has a programming error.
What you can try:
     Refresh the page.


     Go back to the previous page.


     More information

This error (HTTP 500 Internal Server Error) means that the website you are visiting had a server problem which prevented the webpage from displaying.
For more information about HTTP errors, see Help.

image

Solution

One of the possible causes is that you did not enable Forms Based Authentication on your front-end server:

image

Go ahead and enable it:

image

… restart IIS:

image

… and now you should be able to log into the legacy Exchange 2003 mailbox without having to re-authenticate again:

image

image

Redirecting via Exchange 2010 OWA of a user with a legacy Exchange 2003 mailbox throws the error: “Your request couldn't be completed because no server with the correct security settings was found to handle the request. If the problem continues, contact your helpdesk.”

It’s been awhile since I’ve done an Exchange Server 2003 to 2010 transition and as I’m in the process of reconfiguring OWA for this client, I realized there were quite a few things I’ve come across in the past and forgot some key items during the migration.  Since I’m bound to forget these again if I don’t do another migration for a few months, I thought I’d write this blog post to serve as a reminder for myself and perhaps help others who may come across the same problem.

Problem

You’ve reconfigured your public DNS records to have legacy.domain.com directed to your legacy Exchange 2003 server and updated your webmail / owa / mail .domain.com record to direct traffic to your new Exchange 2010 CAS server.  With everything seemingly configured, you navigate to the Outlook Web App page of your Exchange 2010 CAS server from the internet and log in with a legacy user’s mailbox only to get the following error:

Your request couldn't be completed because no server with the correct security settings was found to handle the request. If the problem continues, contact your helpdesk.

Request
Url: https://webmail.domain.com:443/owa/auth/error.aspx
User host address: 64.17.14.25
OWA version: 14.1.218.13

image

Solution

The reason why you’re receiving this error is because you haven’t set Exchange 2010’s CAS server for it to know what is the URL for your Exchange 2010 Outlook Web App and what is the URL for your legacy Exchange 2003 Outlook Web Access.

Open up your Exchange Management Shell and execute the following with the appropriate fields:

Get-OwaVirtualDirectory -server internalCASserverName | Set-OwaVirtualDirectory -externalURL https://webmail.yourDomain.com/OWA -Exchange2003URL https://legacy.yourDomain.com/exchange

Executing the command above won’t give you any confirmation (as with most cmdlets) so it will look something like the following:

image

From here on, the redirect for legacy Exchange 2003 users should work as expected.

Problems booting a VMware virtual machine with GParted 0.8.1-3

I’ve been asked to expand the C drive of a Windows Server 2003 virtual machine a few times this month and as some of you may already know, you cannot simply use Diskpart to expand the system volume of a Windows Server 2003 server and in order to expand the drive, you need a helper VM (see this post for more information: http://terenceluk.blogspot.com/2010/12/expanding-system-volume-c-drive-for.html).  So I went ahead and mounted the C drive another virtual machine with the same operating system but when I ran Diskpart, it would seemingly hang during the expanding process.  Cancelling the process and restarting it numerous times did not help so I decided to go with what I used to do in the old days and that was use GParted to expand the disk.

I went ahead and downloaded the latest stable release available: GParted 0.8.1-3 released 2011-05-24 from the Sourceforge website:

image

… but noticed that my virtual machine wouldn’t boot into the Linux OS:

image

I wasn’t sure why but after several attempts, I decided to go with another older build: 0.7.1-5 released 2011-01-07:

image

… which then booted in fine:

image

image

image

I’m not exactly sure why but hope this post will give someone a quick answer if they run into the same problem as I did.  The virtual machine details are shown here:

image

Note that the virtual machine version is: 4.

Wednesday, July 13, 2011

Annoying Microsoft Management Console error when trying to close the Exchange Management Console MMC with Internet Explorer (IE9) installed

As annoying as it is, I do understand that there are literally billions of applications out there that makes it hard for Microsoft to fully test their products with so this point of this post is not to complain but rather hope someone else encountering this problem will quickly find the solution here.

Problem

You’re trying to close the Exchange Management Console MMC but notice that you’re prompted with the following error message:

You must close all dialog boxes before you can close Exchange Management Console

image

You look far and wide beneath the opened windows on your server but can’t find any dialog boxes opened.

Cause

The reason why you’re getting this error is because your server has Internet Explorer 9 (IE9) installed.  As per the following forum post:

http://social.technet.microsoft.com/Forums/en-US/exchangesvradmin/thread/ea4e1ffe-472e-4508-9a14-0735ac6322ca

… and this blog:

http://www.expta.com/2011/04/issue-with-ie9-and-exchange-2010.html

… the problem isn’t so much IE 9 but rather MMC. 

I hope this gets fixed quickly because I can see it being very annoying.

Tuesday, July 12, 2011

Installing the mailbox server role for Exchange 2010 never completes and seemingly stuck near the end

Problem

You’re in the process of migrating over from Exchange 2003 to 2010 but while installing a fresh new mailbox server in the environment, you notice that the process takes a very long time and even after waiting for more than an hour, the process bar is still at the same place:

image

Opening the task manager shoes the store.exe process launches and ends intermittently:

image

Navigating to the Microsoft Exchange Information Store service in the Services Console show that the store has the status of Starting then stops:

image

image

Opening the application logs show the event ID: 5000 is logged with the message:

Unable to initialize the Microsoft Exchange Information Store service. - Error 0x8004010f.

image

Event ID: 1121 is also logged in the application logs:

Error 0x8004010f connecting to Active Directory.

image

Opening the system logs show that event ID 7031 is logged:

The Microsoft Exchange Information Store service terminated unexpectedly. It has done this 1 time(s). The following corrective action will be taken in 5000 milliseconds: Restart the service.

image

Event ID: 7024 is also logged in the system log:

The Microsoft Exchange Information Store service terminated with service-specific error %%-2147221233.

image

The logs mentioned above are constantly repeated.

You’ve checked the security permissions for the Configuration container as per the following KB: http://technet.microsoft.com/en-us/library/bb218368(EXCHG.80).aspx

image

Solution

It took a bit of time for me to find the solution as these error messages led to other problems but after doing a bit of searching, I found someone mentioning that this may be a permissions issue and suggested to run ExBPA again:

http://social.technet.microsoft.com/Forums/en/exchange2010/thread/2af749e3-582a-4183-b881-222f39e271d2

I went ahead and ran ExBPA and found the following error: 

Access control list (ACL) inheritance is blocked for the Exchange Organization object (CN=DOMAIN,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=com). This may cause mail flow problems, store mounting issues and other service outages. Follow Microsoft Knowledge Base article 264733 and use the Exchange System Manager to re-enable inheritance on this object.

image 

From here on, I went ahead and followed the instructions in the following TechNet article:

http://technet.microsoft.com/en-us/library/aa998240(EXCHG.80).aspx

image

Turned on the security tab for ESM:

image

Notice how inheritance was turned off:

image

Turned inheritance on:

image

You will be prompted with what appears to be an error but continue to OK out of the windows:

image

From here on, reboot your Exchange 2003 servers as the article suggests and you’ll notice that your Information Store for your Exchange 2010 mailbox server no longer crashes and therefore the install of the mailbox server role will now complete.

Installing the mailbox server role for Exchange 2010 throws the error: “The database object 'Mailbox Database 1590813985' in Active Directory has been corrupted and is in an inconsistent state. Unable to find any server hosting a copy of this database.”

Problem

You’ve been having problems with installing a mailbox server and after several failed installs, you decide to remove the mailbox server object left by the failed installed from ADSIedit via:

CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Domain,CN=Microsoft,CN=Services,CN=Configuration,DC=domain,DC=com

image

You proceed to installing the mailbox server role only to run into the following error:

image

Summary: 9 item(s). 7 succeeded, 1 failed.

Elapsed time: 04:23:30

Preparing Setup

Completed

Elapsed Time: 00:00:00

Stopping Services

Completed

Elapsed Time: 00:00:01

Copy Exchange Files

Completed

Elapsed Time: 00:00:20

Language Files

Completed

Elapsed Time: 00:01:22

Restoring services

Completed

Elapsed Time: 00:00:00

Languages

Completed

Elapsed Time: 00:00:01

Management Tools

Completed

Elapsed Time: 00:00:10

Mailbox Role

Failed

Error:

The following error was generated when "$error.Clear();

$name = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxUniqueName;

$dispname = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxDisplayName;

$dismbx = get-mailbox -Filter {name -eq $name} -IgnoreDefaultScope -resultSize 1;

if( $dismbx -ne $null)

{

$srvname = $dismbx.ServerName;

if( $dismbx.Database -ne $null -and $RoleFqdnOrName -like "$srvname.*" )

{

Write-ExchangeSetupLog -info "Setup DiscoverySearchMailbox Permission.";

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -eq $null )

{

Write-ExchangeSetupLog -info "Mounting database before stamp DiscoverySearchMailbox Permission...";

mount-database $dismbx.Database;

}

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -ne $null )

{

$dmRoleGroupGuid = [Microsoft.Exchange.Data.Directory.Management.RoleGroup]::DiscoveryManagementWkGuid;

$dmRoleGroup = Get-RoleGroup -Identity $dmRoleGroupGuid -DomainController $RoleDomainController -ErrorAction:SilentlyContinue;

if( $dmRoleGroup -ne $null )

{

Add-MailboxPermission $dismbx -User $dmRoleGroup.Identity -AccessRights FullAccess -DomainController $RoleDomainController -WarningAction SilentlyContinue;

}

}

}

}

" was run: "You must provide a value for this property. Property Name: HostServer".

You must provide a value for this property. Property Name: HostServer

Click here for help... http://technet.microsoft.com/en-US/library/ms.exch.err.default(EXCHG.141).aspx?v=14.1.218.11&e=ms.exch.err.Ex88D115&l=0&cl=cp

Error:

The following error was generated when "$error.Clear();

$name = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxUniqueName;

$dispname = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxDisplayName;

$dismbx = get-mailbox -Filter {name -eq $name} -IgnoreDefaultScope -resultSize 1;

if( $dismbx -ne $null)

{

$srvname = $dismbx.ServerName;

if( $dismbx.Database -ne $null -and $RoleFqdnOrName -like "$srvname.*" )

{

Write-ExchangeSetupLog -info "Setup DiscoverySearchMailbox Permission.";

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -eq $null )

{

Write-ExchangeSetupLog -info "Mounting database before stamp DiscoverySearchMailbox Permission...";

mount-database $dismbx.Database;

}

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -ne $null )

{

$dmRoleGroupGuid = [Microsoft.Exchange.Data.Directory.Management.RoleGroup]::DiscoveryManagementWkGuid;

$dmRoleGroup = Get-RoleGroup -Identity $dmRoleGroupGuid -DomainController $RoleDomainController -ErrorAction:SilentlyContinue;

if( $dmRoleGroup -ne $null )

{

Add-MailboxPermission $dismbx -User $dmRoleGroup.Identity -AccessRights FullAccess -DomainController $RoleDomainController -WarningAction SilentlyContinue;

}

}

}

}

" was run: "The database object 'Mailbox Database 1590813985' in Active Directory has been corrupted and is in an inconsistent state. Unable to find any server hosting a copy of this database.".

The database object 'Mailbox Database 1590813985' in Active Directory has been corrupted and is in an inconsistent state. Unable to find any server hosting a copy of this database.

Click here for help... http://technet.microsoft.com/en-US/library/ms.exch.err.default(EXCHG.141).aspx?v=14.1.218.11&e=ms.exch.err.Ex88D115&l=0&cl=cp

Error:

The following error was generated when "$error.Clear();

$name = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxUniqueName;

$dispname = [Microsoft.Exchange.Management.RecipientTasks.EnableMailbox]::DiscoveryMailboxDisplayName;

$dismbx = get-mailbox -Filter {name -eq $name} -IgnoreDefaultScope -resultSize 1;

if( $dismbx -ne $null)

{

$srvname = $dismbx.ServerName;

if( $dismbx.Database -ne $null -and $RoleFqdnOrName -like "$srvname.*" )

{

Write-ExchangeSetupLog -info "Setup DiscoverySearchMailbox Permission.";

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -eq $null )

{

Write-ExchangeSetupLog -info "Mounting database before stamp DiscoverySearchMailbox Permission...";

mount-database $dismbx.Database;

}

$mountedMdb = get-mailboxdatabase $dismbx.Database -status | where { $_.Mounted -eq $true };

if( $mountedMdb -ne $null )

{

$dmRoleGroupGuid = [Microsoft.Exchange.Data.Directory.Management.RoleGroup]::DiscoveryManagementWkGuid;

$dmRoleGroup = Get-RoleGroup -Identity $dmRoleGroupGuid -DomainController $RoleDomainController -ErrorAction:SilentlyContinue;

if( $dmRoleGroup -ne $null )

{

Add-MailboxPermission $dismbx -User $dmRoleGroup.Identity -AccessRights FullAccess -DomainController $RoleDomainController -WarningAction SilentlyContinue;

}

}

}

}

" was run: "You must provide a value for this property. Property Name: HostServer".

You must provide a value for this property. Property Name: HostServer

Click here for help... http://technet.microsoft.com/en-US/library/ms.exch.err.default(EXCHG.141).aspx?v=14.1.218.11&e=ms.exch.err.Ex88D115&l=0&cl=cp

Elapsed Time: 04:21:32

Finalizing Setup

Cancelled

You will also find the event ID 1002 with the same message logged in your application logs:

image

Solution

What’s important in the error message above is the following:

The database object 'Mailbox Database 1590813985' in Active Directory has been corrupted and is in an inconsistent state. Unable to find any server hosting a copy of this database.

What basically happened is that while the server object was deleted, the mailbox database for the server hasn’t.  To rectify this issue, use ADSIedit and navigate to:

CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Domain,CN=Microsoft,CN=Services,CN=Configuration,DC=domain,DC=com

image

… then delete the mailbox database has now been orphaned.

image

Note: I know that the mailbox database being deleted is empty and have also done my sanity checks to ensure it.

image

Once this orphaned mailbox database object has been deleted, Exchange Server 2010 should now install properly.

Sunday, July 10, 2011

Install and configure VMware Data Recovery 1.2.1

There isn’t going to be anything special about this post as it’s just a pure vanilla install of VMware’s Data Recovery backup solution for SMB sized organizations that need an easy to use backup solution for their VMware infrastructure.  I’ve always liked this application aside from the quiesce/snapshot issues when backing up vCenter because of the Active Directory Lightweight Directory Services role (this was back in the vSphere 4.1 days) but based on the newer release notes, it looks like that probably has been fixed.
So to stop blabbing on, see the following for what the installation and initial configuration of VMware Data Recovery looks like:
Load up the ISO and you’ll see the following installer.  Simply click on the Data Recovery Client Plug-In link and the install will proceed:
image
The installation of the binaries is simply 3 to 4 screens and because I forgot to screenshot those, I’ll be continuing right after the plug-in has installed.  Once the plug-in has been installed, proceed with opening up the Plug-In Manager to double check that it is now listed with the status of Enabled:
image
With the installation and status of the plug-in verified, you should now be see a new node named VMware Data Recovery listed in the Solutions and Applications section in vCenter:
image
Clicking on that node will bring you into the application which will look something like this:
image
Notice how the text filed at the bottom right of the screenshot above is empty.  The reason why it’s empty is because VDR is a plug-in in vCenter that uses an appliance that hasn’t been deployed yet.  What needs to be done now is to deploy the VDR ovf file which can be located in the CD or ISO of the VDR binaries you used to install the plug-in.  Open up the installer splash screen and click on Explore media (for Appliance and Restore Clients):
image
Open up the folder named: VMwareDataRecovery-ovf-i386:
image
Within this folder, you’ll see the file VMwareDataRecovery_OVF10.ovf:
image
With your vSphere Client connected to vCenter, select File –> Deploy OVF Template…:
image
Follow through the wizard while filling in the appropriate fields:
image
image
image
image
The default name for the appliance within vCenter is VMware Data Recovery and while it’s perfectly find to use this name since it’s just a name in vCenter, I always prefer to use the same name as the name the other servers reference it as:
image
image
image
image
It doesn’t really matter whether you chose thick or thin provision but since the estimated disk size for thick provisioning the appliance is only 5.0GB, I prefer to just thick provision it:
image
image
image
Once you select Finish on the next screen, the deployment of the appliance will begin:
image
image
image
Now that the appliance has been deployed, you’ll notice that the Name, IP Address or DNS Name field that wasn’t populated earlier is now automatically filled in with the name of the VDR:
image
With the appliance freshly deployed, prior to connecting it will require some initial configuration of the virtual machine so don’t click on the Connect button but rather go back to the Host and Clusters view to power on the virtual machine:
image
Open up the console of the appliance and you’ll see the operating system boot up:
image
image
Don’t worry about the process Determining IP information for eth0… failing because since this appliance was just deployed, it doesn’t have an IP yet:
image
Once the operating system boots up, you’ll see a screen similar to the following.  Proceed with selecting the Configure Network option:
image
Proceed with configuring the network properties of the appliance:
image
Once the settings have been configured and saved, you’ll see a screen similar to the following:
image
At this point, you can navigate to the IP address listed above to manage the appliance.  Note that managing the appliance through the IP address allows you to modify the settings you’ve just configured so it’s not really necessary to do so but just so I can demonstrate what it looks like, I’ll include the following screenshots:
Note that you can’t use http:// to access the management web interface:
image
It’s important that you use https:// in order to get the login page:
image
The default login credentials to log in is root/vmw@re:
image
You’ll see the following options once you’ve successfully logged in:
image
image
image
image
image
image
I’m not sure if it’s mandatory but since I always like to have all the appliances in my vSphere infrastructure reachable by name, I went ahead to add the appliance’s name to IP in DNS:
image
Now that we have the appliance configured, proceed and navigate back to the VMware Data Recovery section in vCenter:
image
Proceed with clicking on the Connect button:
image
Type in a password that has administrative privileges to vCenter:
image
Once you’ve successfully connected the VDR appliance to vCenter, you’re ready to begin configuring the backup jobs. You’ll also noticed that upon the first time you successfully launch VDR, a wizard will start up to assist you in configuring your backup job.  I won’t go into the details but will provide the screenshots to show what the wizard looks like:
image
image
image
image
image
image
image
image
image
image
image
image
image
image
I find the solution extremely easy to set up and configure and usually recommend it to infrastructures that aren’t too big in size.  Hope this gives anyone who is interested in the product a good idea of what it looks like.