Archive

Posts Tagged ‘Exchange Server 2007’

Script: AutoApplyMRMPolicy.ps1 – Automatically Applying Messaging Records Management Policies to New Users

May 18th, 2009 No comments

Description

I’ve had several client ask me lately how to set retention periods on mailboxes, and, equally important, how to make sure that all newly created mailboxes have the policy applied. Some organizations will have more than one admin who creates mailbox enabled user accounts, and leaving it up to the admins to manually set the account for a retention policy is just prone to mistakes.

I won’t go into a lot of detail talking about what MRM is and what can be done. It’s already been covered many times on other sites, including this short but informative video from the Exchange product group. This article assumes that you have a working policy already in place. What I’ll cover here is how to use PowerShell to be consistent in applying an MRM policy to all users. For the most part, we’ll “set it and forget it”.

We can use PowerShell to apply an MRM policy using the ManagedFolderMailboxPolicy parameter of the Set-Mailbox cmdlet. This script basically looks for all users who are not resource accounts, not disabled, and don’t already have a policy applied (since we don’t generally want to override that). We do that with this line:

$MBXArray = @(Get-Mailbox | Where-Object {($_.RecipientType -eq 'UserMailbox') -and ($_.UserAccountControl -notmatch 'AccountDisabled') -and ($_.ManagedFolderMailboxPolicy -eq $null)})

$MBXArray is thus a list of mailboxes that pass the query. We then cycle through the array with ForEach and apply a policy to each mailbox using Set-Mailbox, like this:

Set-Mailbox -identity $Mailbox.SAMAccountName -ManagedFolderMailboxPolicy $strPolicyName -ManagedFolderMailboxPolicyAllowed

I use the -ManagedFolderMailboxPolicyAllowed parameter to get past confirmation prompts, since we’ll run the PowerShell script has a Windows scheduled task. $strPolicyName is a variable that holds the name of the policy we’d like to apply.

That’s simple enough, really. But it’s generally a good idea to have some sort of record that a policy was applied. PowerShell gives us a couple of ways to record the event, and we’ll use both.

First, when the script first starts, we’ll write an event to the application event log noting that the script is starting. First, set some variables and create a new object with

$strWhoAmI = $MyInvocation.MyCommand.Name
$evt.Source=$strWhoAmI
$evt=new-object System.Diagnostics.EventLog("Application")
$infoevent=[System.Diagnostics.EventLogEntryType]::Information

The first line actually creates a variable, $strWhoAmI, and assigns it the name of the PowerShell script. The second line sets that same info to be the source of the event log entry we’re about to write.

We use the two lines below to set the text for the event log, and write it.

$strEventLogText = "Beginning processing."
$evt.WriteEntry($strEventLogText,$infoevent,70)

When the script is finished, we also write another event log entry to say we’re done, along with a count of how many mailboxes were processed.

Next is where we build some flexibility into the script. At the beginning of the script, we define another variable, $strLogEachUser (and set it to $false) to disable writing an event log entry for EACH user we apply a policy to. In larger environments, it’s not a good idea to have that set to $true when the script runs the first time, as it can result in a LOT of event log entries. But, after that, it might provide some valuable information. The log entry will look something like

Messaging Records Management policy ‘MyManagedFolderPolicy’ applied to Claudia Richard

The next logging option we have is to stamp the actual AD account when we apply the policy to it. We do this by using one of the Custom Attributes available on Active Directory objects. For a user account, there are 15 Custom Attributes, and they can be viewed by opening a recipient in Exchange Management Console, and clicking on the Custom Attributes button near the bottom of the General tab. We’ll use Custom Attribute 13 for this example. This is easily accomplished by using the -CustomAttribute13 parameter of the Set-Mailbox cmdlet.We assign the text we’ll use with the $strMRM variable near the top of the script:

$strMRM = "MRM policy applied by " + $strWhoAmI + " " + $strToday

This allows for the script name, policy name, and a time stamp, and looks like this:

MRM policy applied by AutoApplyMRMPolicy.ps1 05/16/2009 12:16:38

The last feature built in is a status indicator while the script is running. This probably won’t be very valuable unless you plan to only ever manually run the script. The status indicator is disabled by default, but can be enabled by changing

$strShowStatus = $false

to

$strShowStatus = $true

it’s the same status indicator you see when doing many tasks at one time, such as moving or export mailboxes.

Here’s the finished script. Save it as AutoApplyMRMPolicy.ps1 in your \scripts folder on your Exchange server. Edit the three variables under the header block to suit your needs.

###############################################################################
# AutoApplyMRMPolicy.ps1 by Pat Richard, MVP
# https://www.ucunleashed.com/85
#
# Automatically apply a Messaging Records Management policy to
# all users who are:
#        a) not resource accounts
#        b) not disabled
#        c) don't already have a policy applied
#
# This script is designed to be run as a Windows Scheduled task on an Exchange
# server.
#
# UPDATES
# =======
# v1.3 05/22/2009 Updated array per Nick's additional suggestions
# v1.2 05/19/2009 Updated array per Nick's suggestions
# v1.1 05/15/2009 Added status indicator;
#            cleaned up/added event log entries
#            added variables for enabling/disabling each
# v1.0 04/30/2009 Initial version
#
# Simply edit the settings below to fit your needs
###############################################################################

$strPolicyName = 'MyManagedFolderPolicy'
$strLogEachUser = $false
$strShowStatus = $false

############ DO NOT EDIT ANYTHING BELOW THIS LINE ############
$strToday = Get-Date
$strWhoAmI = $MyInvocation.MyCommand.Name
$strMRM = "MRM policy applied by " + $strWhoAmI + " " + $strToday
$evt=new-object System.Diagnostics.EventLog("Application")
$evt.Source=$strWhoAmI
$infoevent=[System.Diagnostics.EventLogEntryType]::Information
$strEventLogText = "Beginning processing."
$evt.WriteEntry($strEventLogText,$infoevent,70)
$MBXArray = @(Get-Mailbox | ? {($_.RecipientType -eq 'UserMailbox') -and ($_.UserAccountControl -notmatch 'AccountDisabled') -and ($_.ManagedFolderMailboxPolicy -eq $null)})

    ForEach ($Mailbox in $MBXArray) {
        $x=$x+1
        if($strShowStatus){
            Write-Progress -id 1 -activity "Applying Messaging Records Management policy '$strPolicyName'" -status $Mailbox.SAMAccountName -percentComplete (100/$MBXArray.count*$x) -CurrentOperation '' -SecondsRemaining ($MBXArray.count-$x)
        }
        Set-Mailbox -identity $Mailbox.SAMAccountName –ManagedFolderMailboxPolicy $strPolicyName -ManagedFolderMailboxPolicyAllowed -CustomAttribute13 $strMRM
        if($strLogEachUser){
            $strEventLogText = "Messaging Records Management policy '$strPolicyName' applied to "+$mailbox.DisplayName
            $evt.WriteEntry($strEventLogText,$infoevent,70)
        }
    }
############ Blank line after next line is intentional for cleaner event log entry ############
$strEventLogText = "Finished processing "+$MBXArray.count+" accounts.

For more information on Messaging Records Management, see http://technet.microsoft.com/en-us/library/bb310756.aspx."
$evt.WriteEntry($strEventLogText,$infoevent,70)

Create a scheduled task

The last piece of this is a scheduled task. This is quite easy. Go to Scheduled Tasks on the server (Control Panel–> Scheduled Tasks). Right click and choose New>Scheduled Task. Call the task what ever you like, such as AutoApplyMRMPolicy. Right click the task and choose Properties. For the RUN field, paste this:

c:\windows\system32\windowspowershell\v1.0\powershell.exe -psconsolefile "c:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -Command "AutoApplyMRMPolicy.ps1"

but change the -psconsole parameter to point to your \bin folder. The default path is shown. For the START IN field, enter the path to your \scripts folder, such as the default:

"c:\program files\microsoft\exchange server\scripts"

Set RUN AS to an administrator account. Click the Schedule tab and configure the task to run at least once a day. Be careful to ensure that it runs outside of your backup and maintenance windows. Click Ok. That’s all there is to it.

Some things to note:

The script will apply a policy to ALL users who are not disabled, resource accounts, or already configured for a policy. If you need it to be more restrictive, alter the line that starts with “$MBXArray =”

There is no error checking in the script. If there is enough call for that, I’ll work that into the script.

Feel free to make suggestions as to how to improve the script.

UPDATED 5/22/09: Cleaned up the array stuff a little per more Nick’s suggestions. Thanks, Nick!

Installation

Execution Policy: Third-party PowerShell scripts may require that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Changelog: Send-NewUserWelcome.ps1

April 30th, 2009 No comments

This is the changelog page for Send-NewUserWelcome.ps1. You will find a complete list of released versions, their dates, and the features and issues addressed in each. Please refer to the script’s main page for more information including download links, installation details, and more.

v1.3 – 09-03-2011

  1. HTML formatted email
  2. PowerShell 2.0 code
  3. Comment Based Help
  4. application event log logging
  5. install function for creating scheduled task

v1.2 – 03-27-2010

  1. use registry for last run info
  2. variable cleanup

v1.1 – 05-01-2009

v1.0 – 04-30-2009

  1. Original version

Update Rollup 7 (UR7) for Exchange 2007 SP1 Released

March 19th, 2009 No comments

Microsoft has released the following update rollup for Exchange Server 2007:

  • Update Rollup 7 for Exchange Server 2007 SP1 (960384)

If you’re running Exchange Server 2007 SP1, you need to apply Update Rollup 7 for Exchange 2007 SP1 to address the security issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP1 and vice versa.

Rollup 7 for Exchange Server 2007 SP1 supersedes the following:

  1. 945684 Update Rollup 1 for Exchange Server 2007 Service Pack 1
  2. 948016 Update Rollup 2 for Exchange Server 2007 Service Pack 1
  3. 949870 Update Rollup 3 for Exchange Server 2007 Service Pack 1
  4. 952580 Update Rollup 4 for Exchange Server 2007 Service Pack 1
  5. 953467 Update Rollup 5 for Exchange Server 2007 Service Pack 1
  6. 959241 Update Rollup 6 for Exchange Server 2007 Service Pack 1

Here is a list of the fixes included in rollup 7:

  1. 946449 A non-read report message is sent after you perform a “Mark All as Read” operation against unread e-mail messages in Exchange Server 2007
  2. 949113 Unexpected modified instances of a recurring meeting may appear when you use Entourage to access a calendar on a computer that is running Exchange Server 2007
  3. 949114 Duplicate calendar items may appear when you use Entourage to access a calendar on an Exchange 2007 server
  4. 949464 The customized properties are removed in the recipients’ calendars when you send a meeting request that includes customized properties
  5. 950115 When a CDO 1.2.1-based application generates a meeting request that includes some European characters in the message body, these characters appear as question marks in Exchange 2007
  6. 951341 Users cannot read calendar items when they connect Exchange Server 2007 by using certain IMAP4 or POP3 clients
  7. 952778 Event ID 9874 is frequently logged on Exchange Server 2007 with Service Pack 1
  8. 953094 The value in the “Messages queued for submission” performance counter on the mailbox role of Exchange Server 2007 increases after a meeting request is delivered
  9. 954213 All Test commands that are related to the Client Access Server fail when you run the commands on an Exchange 2007 server in a disjoint namespace
  10. 954741 The UseRUSServer parameter does not work if an administrator has specified an RUS server on a target mailbox server
  11. 954898 The LegacyExchangeDN attributes for mail-enabled objects are incorrectly set in an environment that contains Exchange 2003 and Exchange 2007
  12. 955027 The Edgetransport.exe process may crash on a hub transport server that is running Exchange Server 2007 Service Pack 1
  13. 955462 You notice high CPU usage when the IMAP service is running on an Exchange 2007 Service Pack 1 server that has the CAS role
  14. 955778 You receive a Non-Delivery Report (NDR) message when you send an e-mail message to a non-SMTP address in an Outlook client that is using Cached mode
  15. 956069 A Non-Delivery Report (NDR) is generated when an Exchange Server 2007 user tries to send a message to a recipient who has a one-off FAX address that includes any characters that are larger than 0xFF in Unicode
  16. 956205 Corrupted characters appear in the Subject field or in the Location field of a recurring calendar item after a user adds DBCS characters to a field in a meeting occurrence by using an Outlook 2002 client
  17. 956275 An Exchange 2007 sender’s address is split into two separate addresses when an external recipient replies to the message
  18. 956455 The display name appears in a received message even though the property of the user mailbox is set to “Hide from Exchange address lists” in Exchange Server 2007
  19. 956687 Messages stay in the submission queue after you enable per-mailbox database journaling in an Exchange Server 2003 and Exchange Server 2007 coexisting environment
  20. 957019 Images cannot be pasted in an Exchange Server 2007 Outlook Web Access message body
  21. 957071 The MSExchange Transport service may crash intermittently on the Exchange 2007 server
  22. 957124 You do not receive an NDR message even though your meeting request cannot be sent successfully to a recipient
  23. 957227 The Exchange Management Console crashes when one or more domain controllers of a top-level domain are not reachable
  24. 957485 The Test-OwaConnectivity command returns a warning message in Exchange Server 2007 when there is a disjoint namespace
  25. 957504 The IMAP4 service crashes intermittently, and Event ID 4999 is logged on Exchange Server 2007
  26. 957683 An IP Gateway can still be used to dial out for a “Play on Phone” request after the IP Gateway is disabled
  27. 957834 Network shares are deleted and created intermittently by the replication service on an Exchange SCC cluster when SCR is enabled on the Exchange server
  28. 957947 The Exchange Information Store service may crash when an Entourage client synchronizes with an Exchange 2007 server
  29. 958091 You cannot update the task complete percentage to any value other than 0 or 100 in Outlook Web Access
  30. 958093 Voice mail messages are not stamped with the disclaimer that is defined in the transport rule in an Exchange Server 2007 environment
  31. 958128 Replication messages stay in a queue in a retry state after a public folder database is dismounted
  32. 958331 The Restore-StorageGroupCopy command may fail in an Exchange Server 2007 SCR environment
  33. 958444 Event 522 is logged when replication is resumed on a suspended Storage Group on an Exchange Server 2007 CCR or SCR environment
  34. 958472 An unexpected text string appears at the top of the message body when an Exchange Server 2007 user sends an HTML message by using Outlook Web Access
  35. 958552 The ByteEncoderTypeFor7BitCharsets setting does not take effect for the US ASCII character set after you install the hotfix that is mentioned in Microsoft Knowledge Base article 946641
  36. 958638 Exchange 2007 Server cannot parse X-Priority headers from clients that submit X-Priority headers that contain additional comments
  37. 958803 The EdgeTransport.exe process may stop responding in Exchange Server 2007 when the priority queuing feature is enabled
  38. 958872 The Map This Address feature in the contact page for an OWA client does not work in Exchange Server 2007
  39. 959100 Exchange Server 2007 cannot route e-mail messages to mail enabled Non-MAPI public folders that are hosted on an Exchange Server 2003 server
  40. 959135 Event 9673 occurs when the Microsoft Exchange Information Store service crashes on a computer that is running Exchange 2007 with Service Pack 1
  41. 959397 An increase in database size is generated unexpectedly when IMAP4 users use a Copy command in Exchange 2007
  42. 959434 The last logon time is not updated to reflect the logon times that have occurred after users log on to their mailboxes by using the Entourage client in an Exchange 2007 environment
  43. 959545 A redirection message in Outlook Web Access 2007 is incorrect when the message is translated to Korean
  44. 959671 The Manage Mobile Devices option is not displayed in Exchange Management Console after a mobile device re-synchronizes with an Exchange 2007 server
  45. 959952 The Set-Mailbox command does not change the AutomateProcessing attribute for an Exchange Server 2007 user when a regular user mailbox is converted from a room mailbox
  46. 960291 Outlook Web Access or an Exchange Web Service application does not correctly display a monthly or yearly recurring appointment or meeting request
  47. 960292 The MSExchangeIMAP4 service may crash intermittently after you apply an update rollup for Exchange Server 2007 Service Pack 1
  48. 960349 The Exchange Information Store service may crash after you enable tracing for the logon actions
  49. 961281 An error is returned when you enable SCR from any source in a child domain after you install Exchange Server 2007 Service Pack 1 Rollup 5
  50. 961395 The Exchange 2007 Unified Messaging server does not update the caller information if an external user makes a call

Download the rollup here. It is available via Windows Update now.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Update Rollup 6 (UR6) for Exchange 2007 SP1 Released

February 10th, 2009 No comments

Microsoft has released the following update rollup for Exchange Server 2007:

  • Update Rollup 6 for Exchange Server 2007 SP1 (959241)

If you’re running Exchange Server 2007 SP1, you need to apply Update Rollup 6 for Exchange 2007 SP1 to address the security issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP1 and vice versa.

Rollup 6 for Exchange Server 2007 SP1 supersedes the following:

  1. 945684 Update Rollup 1 for Exchange Server 2007 Service Pack 1
  2. 948016 Update Rollup 2 for Exchange Server 2007 Service Pack 1
  3. 949870 Update Rollup 3 for Exchange Server 2007 Service Pack 1
  4. 952580 Update Rollup 4 for Exchange Server 2007 Service Pack 1
  5. 953467 Update Rollup 5 for Exchange Server 2007 Service Pack 1

Here is a list of the fixes included in rollup 6:

  1. 959239 MS09-003: Vulnerabilities in Microsoft Exchange could allow remote code execution
  2. 950675 Downloaded .xls file attachments are empty when you open the files by using Outlook Web Access on Exchange Server 2007 Service Pack 1
  3. 955443 Some free/busy messages are not replicated from Exchange 2007 to Exchange 2003 servers after some mailboxes are migrated from Exchange Server 2003 to Exchange Server 2007
  4. 956356 The Microsoft Exchange File Distribution service uses lots of memory and processor time when Exchange Server 2007 processes many OABs
  5. 956624 The Microsoft Exchange Transport service crashes continuously after you enable journal rule or deploy an antivirus application on an Exchange Server 2007 server
  6. 957748 The custom message class of contact object is overwritten by the normal IPM.Contact class when an Exchange 2007 server replicates the contact object to any other public store

Download the rollup here. It is available via Windows Update now.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Getting the Kaspersky Engine to Successfully Update in Forefront Security for Exchange

February 8th, 2009 No comments

For the most part, the AV engines in Forefront Security for Exchange update without issues. But occassionally, I see event ID 6014 in the application event log, which say:

Event Type: Error
Event Source: GetEngineFiles Event
Category: Engine Error
Event ID: 6014
Date: 2/7/2009
Time: 10:53:00 PM
User: N/A
Computer: troy-email2
Description: Microsoft Forefront Server Security encountered an error while performing a scan engine update. Scan Engine: Kaspersky5 Update Path: http://forefrontdl.microsoft.com/server/scanengineupdate/x86/Kaspersky5 Proxy Settings: Disabled Error Code: 0xC0001F58 Description: The operation timed out.

When trying to update the engine manually from within the Forefront console, the same problem happens – the update fails to finish in a timely manner. Eventually, we see event ID 7006, which says:

Event Type: Error
Event Source: Microsoft Forefront Security
Event Category: Health Status
Event ID: 7006
Date: 2/7/2009
Time: 10:51:59 PM
User: N/A
Computer: troy-email2
Description: At least one of the engines enabled for updates has not been updated in the last week. For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

I’ve seen this enough on both Hub Transport and Edge Transport servers to go diving for a solution. Fortunately, we can extend the timeout period so that the engine can be updated. Here’s how:

Open the trusty regedit on the server and navigate to

HKLM\SOFTWARE\Wow6432Node\Microsoft\Forefront Server Security\Exchange Server

Create a new DWORD, “EngineDownloadTimeout“. Give it a decimal value of 600. Close regedit. No service or server restarts are necessay. This increases the timeout from the default of 5 minutes to 10 minutes. My testing has shown that this is long enough for the Kaspersky engine to update successfully. You can force an update in Forefront by opening the Forefront Server Security Administrator console, and going to Settings>Scanner Updates. Highlight the Kaspersky Antivirus Technology engine, and click Update Now. Or, you can just wait for the next update cycle.

Update Rollup 5 (UR5) for Exchange 2007 SP1 Released

November 20th, 2008 No comments

Microsoft has released the following update rollup for Exchange Server 2007:

  • Update Rollup 5 for Exchange Server 2007 SP1 (953467)

If you’re running Exchange Server 2007 SP1, you need to apply Update Rollup 5 for Exchange 2007 SP1 to address the security issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP1 and vice versa.

Rollup 4 for Exchange Server 2007 SP1 supersedes the following:

  1. 945684 Update Rollup 1 for Exchange Server 2007 Service Pack 1
  2. 948016 Update Rollup 2 for Exchange Server 2007 Service Pack 1
  3. 949870 Update Rollup 3 for Exchange Server 2007 Service Pack 1
  4. 952580 Update Rollup 4 for Exchange Server 2007 Service Pack 1

Here is a list of the fixes included in rollup 5:

  1. 925371 Domino users cannot find meeting request attachments that are sent from Exchange 2007 users
  2. 939037 By default, managed content settings apply to the root folder and all subfolders in an Exchange 2007 environment
  3. 949722 Event ID 800 does not include the user name of users who ran the Get-MessageTrackingLog command in an Exchange 2007 environment
  4. 949893 You cannot create a new mailbox or enable a mailbox in an Exchange Server 2007 environment on February 29, 2008
  5. 949895 Exchange Management Shell crashes (stops responding), and Event ID 1000 is logged when you perform a cross-forest migration from Exchange Server 2003 to Exchange Server 2007
  6. 949901 Exchange 2007 users cannot send e-mail messages to a mail-enabled public folder in a mixed Exchange 2003 and Exchange 2007 environment
  7. 949968 Unified Messaging does not handle the diversion header correctly in Exchange Server 2007 Service Pack 1
  8. 950272 The formatting of a plain text message is incorrect when you print the plain text message by using Outlook Web Access in an Exchange Server 2007 environment
  9. 951267 An exception occurs in Exchange Management Console when you preview AddressList in an Exchange Server 2007 environment
  10. 951273 The received date and the received time of IMAP messages are changed to the time of migration after you migrate mailboxes to an Exchange 2007 Service Pack 1-based server
  11. 951505 You may receive an error message when you run the Update-SafeList cmdlet in an Exchange 2003 and Exchange 2007 mixed environment
  12. 951564 Exchange 2007 Update Rollup 5 supports the addition of new items to context menus in Outlook Web Access 2007
  13. 951710 You receive error messages or warnings when you change an Active Directory schema so that the Company property supports more than 64 characters
  14. 952097 Update Rollup 5 for Exchange 2007 Service Pack 1 introduces events 12003 which can be used to clarify ambiguous Event messages
  15. 952583 Japanese DBCS characters are corrupt when you reply to a message or forward a message in an Exchange Server 2007 environment
  16. 953619 A public folder conflict message cannot be delivered, and event error 1016 is logged, when the public folder name contains DBCS characters in an Exchange Server 2007 Service Pack 1 environment
  17. 953787 You receive an error message when you try to move Exchange 2000 mailboxes or Exchange 2003 mailboxes from one forest to an Exchange 2007 server that is located in another forest by using the Move-Mailbox command
  18. 953840 Event ID 5000 occurs, and the IMAP4 service may crash, on a server that is running Exchange Server 2007 with Service Pack 1 when you use a third-party application to migrate POP3 and IMAP4 users
  19. 954036 Hidden folders or files are listed when you view a UNC file server by using OWA in an Exchange 2007 environment
  20. 954195 The task originator is not notified of task changes and task progress in an Exchange Server 2007 environment
  21. 954197 Exchange 2007 CAS cannot copy the OAB from the OAB share on Windows Server 2008-based Exchange 2007 CCR clusters
  22. 954270 Message class changes during conversion when a digitally signed Message Disposition Notification is received by a server that is running Exchange Server 2007 Service Pack 1
  23. 954451 An appointment item cannot be opened by a CDOEX-based application if the item is saved by Exchange Web Service together with the Culture property in Exchange Server 2007
  24. 954684 You cannot use an Outlook 2007 client to display or download an attachment when you access a message that includes an inline attachment from Exchange Server 2007
  25. 954810 An Exchange 2007 room mailbox stops processing requests after the resource booking assistant receives a delegated meeting request from an Exchange 2003 user
  26. 954887 You cannot add a Mail User or a Mail Contact to the Safe Senders list in Exchange 2007 by using OWA Client
  27. 955001 Error message when you use the IMAP protocol to send a SEARCH command that has the CHARSET argument on an Exchange 2007 server: “BAD Command Argument Error”
  28. 955196 Log files are not copied to the target server in a standby continuous replication environment in Exchange Server 2007
  29. 955429 VSS backup application causes the Information Store service to crash repeatedly on an Exchange 2007 Service Pack 1-based server
  30. 955460 The start time and the end time of a meeting request are incorrect when a delegate uses Exchange Web Service to send the request in an Exchange 2007 environment
  31. 955480 Meeting requests from external senders are displayed as Busy instead of Tentative in an Exchange 2007 environment
  32. 955599 Event ID 10 messages fill up the Application log on an Exchange 2007 CAS server if an Exchange Server 2003 mailbox owner makes an Exchange Web Service call
  33. 955619 A user cannot access the mailbox by using a POP client or an IMAP client through Client Access Server in an Exchange 2007 environment
  34. 955741 A message stays in the Outbox, and the message is resent until it is deleted manually on Windows Mobile 6.1-based devices in an Exchange 2007 Service Pack 1 CAS proxying scenario
  35. 955946 If a private message is submitted by a SMTP sender, the sender receives an NDR message from the Exchange 2007 server
  36. 955989 The SPN registration of a cluster fails, and Error event IDs 1119 and 1034 are logged in an Exchange Server 2007 Service Pack 1 environment
  37. 956199 The last character of a user’s Chinese display name is truncated in the Offline Address Book on an Exchange 2007 server
  38. 956319 The W3wp.exe process may crash on an Exchange 2007 CAS server after you use Entourage to send a message that is larger than 48 KB
  39. 956573 Event ID 1032 is not logged in the Application log when users send e-mail messages while they are logged on to Outlook Web Access as another user in Exchange 2007
  40. 956582 Exchange Server 2007 Update Rollup 3 does not update the Outlook Web Access Logon.aspx file after you modify the file
  41. 956613 The W3wp.exe process intermittently stops responding and Event ID 1000 is logged in Exchange Server 2007 Service Pack 1
  42. 956709 Some recurring meetings may be missing when you view the meetings using Outlook Web Access in Exchange Server 2007
  43. 957002 The Edgetransport.exe process may crash intermittently on a server that is running Exchange Server 2007 Service Pack 1
  44. 957137 The reseed process is unsuccessful on the CCR passive node after you restore one full backup and two or more differential backups to the CCR active node
  45. 957813 A Non-Delivery Report is generated when you try to send a high priority message that is larger than 250 KB in an Exchange Server 2007 Service Pack 1 environment
  46. 957978 The OAB generation is unsuccessful and Event IDs 9328 and 9373 are logged in the Application log in a Windows Server 2008-based Exchange 2007 Single-Copy cluster environment
  47. 958855 The Edge Transport service crashes repeatedly, and an event error 1000 is logged repeatedly on a server that is running Exchange Server 2007 Service Pack 1
  48. 958856 Event ID: 7012 occurs when you search message tracking logs on an Exchange Server 2007-based server

Download the rollup here. It is scheduled to be available via Windows Update on December 9th.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Update Rollup 4 (UR4) for Exchange 2007 SP1 Released

October 7th, 2008 No comments

Microsoft has released the following update rollup for Exchange Server 2007:

  • Update Rollup 4 for Exchange Server 2007 SP1 (952580)

If you’re running Exchange Server 2007 SP1, you need to apply Update Rollup 4 for Exchange 2007 SP1 to address the security issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP1 and vice versa.

Rollup 4 for Exchange Server 2007 SP1 supersedes the following:

  1. 945684 Update Rollup 1 for Exchange Server 2007 Service Pack 1
  2. 948016 Update Rollup 2 for Exchange Server 2007 Service Pack 1
  3. 949870 Update Rollup 3 for Exchange Server 2007 Service Pack 1

Here is a list of the fixes included in rollup 4:

  1. 942649 Description of the commands that support the UseRusServer option that is imported in Update Rollup 4 for Exchange Server 2007 Service Pack 1
  2. 944831 You cannot configure Exchange Server 2007 so that the simple display name appears in outgoing messages
  3. 945854 A meeting reminder is still active when you configure Outlook to send no reminders to an Exchange Server 2007 user
  4. 945870 TAB symbols may be converted incorrectly to spaces in Exchange Server 2007
  5. 948896 Certificates that contain wildcard characters may not work correctly on an Exchange 2007 Service Pack 1-based server
  6. 948897 An attachment incorrectly appears as the body of the e-mail message in an Exchange Server 2007 environment
  7. 948923 Users do not receive information in DSN messages in Exchange Server 2007 with Service Pack 1
  8. 949512 An embedded message is removed from the attachment list on Exchange Server 2007 if the embedded message subject ends with .com, .exe, or any other blocked extension
  9. 949782 An In-Policy request that is forwarded to delegate appears as an Out-Of-Policy request if a user submits an In-Policy meeting request against a room mailbox of Exchange Server 2007
  10. 949858 The provisioning process is unsuccessful when you use Identity Lifecycle Manager (ILM) 2007 to provision user objects to an Exchange Server 2007 resource forest
  11. 949926 Error when you use an IMAP4 client or a POP3 client to log on to a delegate mailbox of Exchange Server 2007: “800cccd1”
  12. 950076 After you move a mailbox from Exchange Server 2003 to Exchange Server 2007 Service Pack 1, you cannot edit rules in Outlook Web Access
  13. 950081 Error message when users use an SMTP client to send e-mail messages in Exchange Server 2007 Service Pack 1: “454 4.7.0 Temporary authentication failure”
  14. 950138 You are prompted for your credentials three times and you receive an error message when you use the Outlook Anywhere feature to connect to an Exchange Server 2007 Service Pack 1-based server that is running Windows Server 2008
  15. 950198 You can enable AfterConversion snapshot for all messages if pipeline tracing and Content Conversion Tracing are enabled
  16. 950235 The IMAP4 or POP3 worker process may stop responding on an Exchange 2007 CAS role when you use an IMAP4 client or a POP3 client to connect the Exchange 2007 CAS role to your mailbox
  17. 950409 The reminder is triggered earlier than expected when an Exchange Server 2007 server receives an iCalendar meeting request message over an SMTP server
  18. 950622 Messages are converted to a very small font size in Outlook Web Access and in Outlook 2003 when you use Exchange Server 2007
  19. 950976 Event ID 115 may be logged intermittently on a computer that is running Exchange Server 2007 with Service Pack 1
  20. 951067 Event ID 7034 may be logged in the Application log in Exchange Server 2007 when an MAPI application tries to access a mailbox in a certain way
  21. 951156 The message body of appointments is garbled after you use a mobile device to synchronize appointments that were created in Outlook Web Access on Exchange 2007
  22. 951251 A MAPI application does not work correctly if Exchange 2007 is installed on a Windows Server 2008 server
  23. 951594 The W3svc log reports the incorrect number of attachments on an Exchange Server 2007 server that has deployed Exchange ActiveSync Service (EAS)
  24. 951747 An error occurs when you use the Export-mailbox or Restore-mailbox command to migrate certain mailboxes on Exchange Server 2007: “error code -1056749164”
  25. 951864 Some users must enter their credentials when they access rights-protected messages even though you have deployed the Rights Management Services (RMS) prelicensing agent on an Exchange Server 2007 Service Pack 1-based server
  26. 952152 The Autodiscover service for ActiveSync in an Exchange 2007 environment does not work for users in sites that do not have the ExternalURL property set
  27. 952250 You encounter a long delay for each mailbox when you run the “Move-Mailbox” or “Set-Mailbox” command on an Exchange Server 2007 computer
  28. 952682 Log file drives on the SCR target may eventually fill up and cause replication failure in Exchange Server 2007 Service Pack 1
  29. 952924 Error message when Exchange users try to access public folders that are hosted on Exchange Server 2003 by using Outlook Web Access for Exchange Server 2007: “Outlook Web Access is unable to open public folders”
  30. 953312 The “Open Message In Conflict” button is not available in the conflict notification message for Exchange Server 2007 users
  31. 954058 You can change the method for transfer encoding after you apply Update Rollup 5 for Exchange Server 2007 Service Pack 1
  32. 954205 Event ID 1113 is logged in the Application log on a Unified Messaging (UM) server when users contact the UM server by using secured connections
  33. 954237 The IMAP service crashes intermittently on Exchange 2007, and Event ID 5000 is logged
  34. 955208 Event ID 5000 occurs when the Exchange IMAP4 worker process crashes intermittently in Exchange Server 2007
  35. 956775 CopyItem and MoveItem Operations in Exchange Web Services can return the Item ID after you install Update Rollup 4 for Exchange Server 2007 Service Pack 1
  36. 957133 Description of improvements in functionality that occur in Exchange Web Services operations after you install Update Rollup 4 for Exchange Server 2007 Service Pack 1

Download the rollup here.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Microsoft Releases Support Statement for Virtualizing Exchange Server

August 19th, 2008 No comments

True to their word of releasing their official support statement within 60 days of the RTM of Hyper-V, Microsoft released their official statement and a press release.

Microsoft says they’ll support Exchange on virtualization platforms that have been validated through their Microsoft Server Virtualization Validation Program (SVVP). Shortly after this release, some noticed that the other big player, VMWare, was not in the program. But shortly after, Microsoft said VMware has now signed on to the SVVP program. Microsoft is certainly excited to add VMware to the program, recognizing the value this provides to Microsoft customers.

This announcement has been long awaited. Many companies have either gone ahead and virtualized Exchange (generally on VMWare), or held off while waiting for the statement from Microsoft.

I suspect now that we’ll see a large transition to 2007, now that this barrier has been dealt with.

Cluster Administration from PowerShell and the Infamous Back Tick

July 18th, 2008 No comments

Of course we all know by now how powerful PowerShell is. “It slices, it dices, it makes julienne fries, whatever those are!” to quote Ron Popeil

One of the cool things with PowerShell is that you can call some external programs. While waiting for some hardware to arrive on a project, I was scripting the setup of a two node Single Copy Cluster (SCC) install of Exchange 2007. One thing you want to do with an Exchange SCC cluster in 2007 is assign dependencies for resources. Say you have a mailbox database called “First Storage Group/Mailbox Database”, and it resides on the cluster resource called “Disk S:”. Well, when the cluster starts up, it should wait for “Disk S:” to be online before trying to bring the “First Storage Group/Mailbox Database” resource online. It only makes sense, right?

Back to my project. So I’m able to script the creation of the storage groups using something like

New-StorageGroup SG1 -SystemFolderPath G:\SG1 -LogFolderPath K:\SG1

from there, I create a new database

New-MailboxDatabase -Name DB1 -StorageGroup SG1 -EdbFilePath G:\SG1

I set some configuration on the new database

get-mailbox | set-mailboxdatabase -DeletedItemRetention 14.00:00:00 -MailboxRetention 30.00:00:00 -IssueWarningQuota unlimited -ProhibitSendQuota unlimited -ProhibitSendReceiveQuota unlimited -PublicFolderDatabase "Second Storage Group\Public Folders" -RetainDeletedItemsUntilBackup:$true -MountAtStartup$true

Life is good. Now, I need to assign the cluster dependencies for the new database resource. But first, the database needs to be unmounted to assign the dependency. So, we precede the cluster command with:

get-mailboxdatabase | dismount-database

Then we can do the dependencies. From a command prompt,

Cluster cluster1 res "SG1/DB1 (MbxCluster1)" /AddDep:"Disk S:"

would work beautifully. It would assign the “Disk S:” cluster resource as a dependency for the new database. But PowerShell wouldn’t accept that syntax, telling me

“Too many command line parameters have been specified for this operation…”

Seems PowerShell doesn’t like the special characters there, and they need to be escaped with a back tick (on an English keyboard, that’s the key to the left of the “1”). After some noodling around, and the help of Ross and Scott, this seems to work:

Cluster cluster1 res ` "SG2`/DB3 `(MbxCluster1`) `" `/adddep: `"Disk S: `"

Not the cleanest of lines, but I’m able to keep everything within a single PowerShell script. Normally, I would have given up and just manually done the dependency configuration, except that this project will involve dozens of databases, and, like many engineers, I’m lazy. Plus, I should know this limitation for the future, as it streamlines the setup of the cluster.

We can now mount the databases with

get-mailboxdatabase | mount-database

I use those broad commands to essentially handle all of the databases, since the script sets them all up at the same time.

Note: I know, we should not have databases with no quota limits on them. But this is a GroupWise to Exchange 2007 migration. So I leave them unlimited till the migration is complete (to avoid migration problems), and then I’ll clamp them down for safety.

As you can see, we can essentially setup all of the SGs and DBs, and assign the cluster config all from within PowerShell. If you’re looking for a great book on PowerShell for Exchange 2007, check out Professional Windows PowerShell for Exchange Server 2007 Service Pack 1 @ Amazon.com. It’s an easy read, but quite informative.

New Rollups for Exchange 2007 Released

July 8th, 2008 No comments

Microsoft has released the following update rollups for Exchange Server 2007:

The above update rollups will also be released to Microsoft update, but there is no ETA at this time.

Fixes for security issue

A security issue has been identified in Exchange Server 2007 as documented in http://www.microsoft.com/technet/security/bulletin/MS08-039.mspx.

If you’re running Exchange Server 2007 RTM, you need to apply Update Rollup 7 for Exchange 2007 RTM to address the security issue.

If you’re running Exchange Server 2007 SP1, you need to apply Update Rollup 3 for Exchange 2007 SP1 to address the security issue.

Remember, you only need to download the latest update for the version of Exchange that you’re running. RTM updates can’t be installed on SP1 and vice versa.

Update: Here is a list of the fixes included in rollup 3:

  1. 937436 Error message when an Exchange 2007-based user sends a meeting request to a resource that is located in a Lotus Domino resource reservation database: “Error autoprocessing message
  2. 941770 How to disable the “Sent by Microsoft Exchange Server 2007” branding sentence in an Exchange Server 2007 DSN message
  3. 945453 You cannot log on to Outlook Web Access in an Exchange Server 2007 environment, and you receive an error message: “HTTP Error 403.4
  4. 947573 It takes a long time for the Exchange Management Console to load in an Exchange Server 2007 organization that was deployed in a multiple-domain environment
  5. 949206 The e-mail address of a contact does not appear in the Outlook Address Book after you use Exchange Web Services to edit the contact in Exchange Server 2007 with Service Pack 1
  6. 949549 Error message when you import a .pst file by running the Import-Mailbox cmdlet in Exchange Server 2007: “Unable to make connection to the server
  7. 949778 The icons that represent TIFF attachments may not be shown correctly if the e-mail message is viewed by using Outlook Web Access 2007 in an Exchange Server 2007 environment
  8. 950153 A storage group may not mount after you move the resources from the active node to the passive node while the backup is in progress in Exchange Server 2007
  9. 950674 Web services sends meeting request information that has an incorrect time if a delegate modifies an appointment in an Exchange Server 2007 environment
  10. 951263 The heading of the “State” column is translated incorrectly in the German version of the Exchange Management Console in Exchange Server 2007
  11. 951293 Error message when you enter logon credentials after an Outlook Web Access session times out in Exchange Server 2007: “Server Error in ‘/ExchWeb/bin’ Application
  12. 953539 The W3wp.exe process may intermittently stop responding, and event ID 1000 is logged in Exchange Server 2007 Service Pack 1
  13. 950120 You cannot control the behavior of attachments on mobile devices by using the ActiveSync policy in Exchange Server 2007 Service Pack 1
  14. 951094 You cannot run the New-X400AuthoritativeDomain cmdlet successfully in an Exchange Server 2007 environment if an X.400 address contains a space character
  15. 953747 MS08-039: Vulnerabilities in Outlook Web Access for Exchange Server could allow elevation of privilege
  16. 950930 You cannot resolve a sender name or a recipient name when the name belongs to an alternative domain tree in Exchange Server 2007
  17. 950758 OVA announces “Unrecognized caller” in an Exchange Server 2007 environment even though Outlook and Outlook Web Access correctly resolve the caller address
  18. 951563 External e-mail message senders receive an NDR when you select the Turkish language setting on a computer that is running Exchange Server 2007 Service Pack 1

Also, several people have had problems installing rollup 3. Make sure when you install it, you use an account with appropriate rights. It’s a good idea to use the account used when Exchange was installed. In some instances, if the account you’re using doesn’t have sufficient rights, the rollup might still say it installed completely, and the logs may even verify this. But it might not be the case. updateowa.ps1 needs local admin rights and at least the rights to read the AD down to the Exchange Object level. servicecontrol.ps1  needs to query the AD to discover the roles installed on the server. Reinstalling this rollup with the correct account generally resolved the problem. Thanks to Scott Schnoll for notifying us of this.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.