Thursday, October 18, 2012

Site Mailboxes , Shared Mailboxes and Public Folder Exchange 2013 Outlook 2013

A site mailbox brings Exchange emails and SharePoint documents together. For users, a site mailbox serves as a central filing cabinet, providing a place to file project emails and documents that can be only accessed and edited by site members.
 

What is the difference between site mailboxes, shared mailboxes and public folders?

Site mailboxes

For groups of people that are working together on a shared set of deliverables. They want to keep important emails and documents in one place.
The content is scoped to a particular project that a small team is working on. As such, all content in that mailbox is highly relevant to the team members.
User will not see a site mailbox in their Outlook client unless they are an owner or member of that site mailbox.

Shared mailboxes

A group of people is working on behalf of a virtual entity (e.g. help@contoso.com). They are triaging incoming emails against a shared inbox and responding on behalf of the virtual entity.
Integrated document collaboration is not a requirement for this scenario.
Users will usually only do this for one shared mailbox and the mailbox is added manually to the user's Outlook profile.

Public folders

Public folders hold the full body of shared email knowledge in an organization.
Public folders are a great technology for distribution group (DG) archiving. A public folder can be mail enabled and added to the DG. Emails that are sent to the DG will be automatically added to the public folder for later reference.
Documents should not be stored in public folders since they don't support co-authoring or version management like SharePoint.
 
 

Tuesday, September 18, 2012

Make sure UPN Values Are The Same As Primary Email Addresses

If you are running Exchange 2007 or newer:
  1. Launch the Exchange Management Shell from your Start Menu (available in Exchange 2007 and newer versions)
  2. Copy and paste the following command into the window:
Get-User | Where { -Not [string]::IsNullOrEmpty($_.WindowsEmailAddress) } | ForEach { Set-User -Identity $_.Guid.ToString() -UserPrincipalName $_.WindowsEmailAddress.ToString() }
What this script and command will do is change the UPN of all user's to be the same value as their Primary email address. Once the command finishes, launch the Active Directory Users and Computers snap-in and verify that the UPN is the same value as the email address.
You're now ready to perform a directory synchronization!
 

How to Add a UPN Suffix to a Forest

  1. Open Active Directory Domains and Trusts.
  2. Right-click Active Directory Domains and Trusts in the Tree window pane, and then click Properties.
  3. On the UPN Suffixes tab, type the new UPN suffix that you would like to add to the forrest.
  4. Click Add, and then click OK.
Now when you add users to the forest, you can select the new UPN suffix to complete the user's logon name.

Thursday, May 10, 2012

One or more users cannot be added to the folder access list. Non-local users cannot be given rights on this server

One or more users cannot be added to the folder access list. Non-local users cannot be given rights on this server
 
Keyword: Public Folder permission sharing, Exchange 2007, public folder permission, Distribution list, security group
 
Once I tried to share a public folder to the DL, I got the following error:
"One or more users cannot be added to the folder access list. Non-local users cannot be given rights on this server"
 
The first reaction is I have to concert the DL to security group and set it as Universal Group type as an MS KB (support.microsoft.com/kb/941318) mentioned. I used ADUC to make the change. However, it still doesn't work.
 
I know since Exchange 2007, you cannot assign a public folder to a shared mailbox and we have to run
 
set-mailbox -id "username" -type regular
 
I checked members of the group, and changed some of shared mailbox to regular, however, I still got the same error.
 
Why this has happened.
 
This has been a known problem since Exchange 2007. Essentially there's an active directory attribute called "msExchRecipientDisplayType" that does not get changed properly when you convert the group using the GUI interface.
 
How to Fix it
Exchange 2007
Run the following Powershell command in the Exchange Management Shell:
 
Set-DistributionGroup -Identity "thegroupname"

Exchange 2010
 
If you run that command on Exchange 2010, you will see the error (shown above)
"Members can't remove themselves from security groups. Please set the group to Closed for requests to leave."
 
You need to run the following Powershell command, in the Exchange Management Shell instead:
 
Set-Distributiongroup–identity {group name} –MemberDepartRestriction Closed
 
After that, update your Global address list, offline address list, restart Exchange file disitribution services on your all CaS servers, and f9 to download update your offline address on your Outlook. Or use online Outlook profile if you are in rush, you should be all set.
 
Summary
 
Issue:
 
You got error: "One or more users cannot be added to the folder access list. Non-local users cannot be given rights on this server" once you try to assign a DL to public folder permission.
 
You tried

1. You converted the DL to security group and changed the group type to Universal Group using ADUC
 
2. You checked member of the group and make sure you changed shared mailbox type to regular using the following cmdlet:
 
set-mailbox -ID username -type regular
 
3. You set the group using the following cmdlet:
 
for Exchange 2007
 
Set-DistributionGroup -Identity "thegroupname"
 
For Exchange 2010,

Set-Distributiongroup–identity "thegroupname" –MemberDepartRestriction Closed

Tuesday, May 8, 2012

Troubleshooting Exchange 2010 DAGs Across WANs

After we established Exchange 2010 LAB across three sites, Exchange 2010 Database Availability Groups across multiple sites and WAN connectivity work most of time. However, once our network connectivity experiences issue between sites, I recently found myself troubleshooting an inconsistent issue at one remote site.
 
The issue reported by the following link, however, it seems there is no resolution yet.
http://social.technet.microsoft.com/Forums/eu/exchange2010/thread/40a37573-d967-41b0-b0d2-8a9f7ae530eb 
 
you can see our network (Exchange 2010) settings via the following link:
 
 
Once this happened, from remote site server EMC, Mailboxes Database Status across WAN is shown as Unknown and from NY and WM (site)  servers, copy status for all database copies on SIXLABMBX-1 as "ServiceDown." Running Get-MailboxDatabaseCopyStatus against the DAG member(s) in the remote data center reflected the same results. Databases in an "Unknown" mount state corresponded to cases where the database was activated in one data center and status was being queried across the WAN from the other data center.
There were several Windows event logged on both SI and NY servers:
 
Event ID 2060
 
The Microsoft Exchange Replication service encountered a transient error while attempting to start a replication instance for NYXLABMBX1DB-1\SIXLABMBX-1. The copy will be set to failed. Error: The NetworkManager has not yet been initialized. Check the event logs to determine the cause.

Event ID 2153
 
The log copier was unable to communicate with server 'NYXLABMBX-1.exlab.randomhouse.com'. The copy of database 'NYXLABMBX1DB-1\SIXLABMBX-1' is in a disconnected state. The communication error was: Communication was terminated by server 'NYXLABMBX-1.exlab.randomhouse.com': Data could not be read because the communication channel was closed. The copier will automatically retry after a short delay.
 
Event ID 2058
 
The Microsoft Exchange Replication service was unable to perform an incremental reseed of database copy 'NYXLABMBX-1DB3\SIXLABMBX-1' due to a network error. The database copy status will be set to Disconnected. Error An error occurred while communicating with server 'NYXLABMBX-1.exlab.randomhouse.com'. Error: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
 
This doesn't happen between WM and NY servers.
 
We found out the only solution for this is to reboot the server one by one, then DAG will show healthy after that. That's a big headache.
 
After digging and digging, we have found a link that talking about MTU (Maximum Transmission Unit). By default, Windows NIC is automatically set MTU (1500), and Windows operating system uses MTU (Maximum Transmission Unit) determines the maximum size of the largest protocol data packet unit (including the size of the transport header) that can be transmitted over the underlying network layer. MTU parameters usually appear in association with a communications interface (NIC, serial port, etc.), and is configured separately for each network interface. We can test MTU settings across WAN by pinging remote IP with -f -l (packet size) option,
For example, from NY server, we can ping 10.102.52.18 -f -l 1200,  where 1200 is packet size, we want to test…, then try 1300, 1400, 1500 …
By default, router's MTU is set between 1480 to 1500, deducting some packet transport headers, from NY to WM server, we can ping wmxhub-1 –f –l 1470 with no problem, failed 1475. That's normal. However, from NY to SI site, it only allow maximum packet size around  (1365), it failed 1370 (ping 10.102.52.17 -f -l 1365, OK and ping 10.102.52.17 -f -l 1370 failed). We talked with Network team about this, I was told that this is due to fact that we have private circuit between WM and NY, and only VPN connection between SI and NY that offset a bigger packet overhead. Usually server and network equipment will adjust packet size automatically.
We use "netsh interface ipv4 show subinterfaces " command to check default MTU size on the mailbox servers that are member of DAG and found out default NIC MTU is 1500, while Microsoft set Cluster NIC MTU to 1300. Since we don't use dedicated NIC for replication traffic, thus the server will use default NIC to transport replication traffic, and it seems Windows cannot automatically adjust MTU accordingly.
 
Then we use the following command to set default NIC MTU to 1300
 
netsh interface ipv4 set subinterface "Local Area Connection 3" mtu=1300 store=persistent
 
and use netsh interface ipv4 show subinterfaces to show MTU to make sure both cluster NIC and default NIC have the same size of MTU (1300)
 
After we did these on all mailbox servers that are member of DAG, then we restarted replication services on all DAG members, the issue has been resolved automatically.
 
 

Monday, April 16, 2012

Use MDSPushvsPull.exe to trace Blackberry Device Data usage for troubleshooting

We had issue with one of our BES users whose data usage was over 2.5 GB per month, our regular users' usage is less than 500 MB per month. We use BES 5.0.3. After we installed resources Kits, we are able to check data usage per device on our BES server and found out one of applications the user installed on the device may have bug that caused consistent data connection to its server.
C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server Resource Kit\BlackBerry AMT Tools>MDSPushvsPull.exe -p E -OL D:\test -L "E:\BlackBerry Enterprise Server\20120318"
where "E:\BlackBerry Enterprise Server\20120318" is log file location of BES.
The output is a *.cvs file with following columns:
 
Type Source Destination Date Time Port Size
Pull PIN i.huffpost.com 2/11/2012 11:48:17.176 EST 80 103
Pull PIN i.huffpost.com 2/11/2012 11:48:18.082 EST 80 93
Pull PIN i.huffpost.com 2/11/2012 11:48:19.348 EST 80 83
Pull PIN i.huffpost.com 2/11/2012 11:48:20.317 EST 80
88
 
Where Size in question is Bytes

Tuesday, March 27, 2012

Is it possible the following scenario - Physical server 2008 VHD backup file, created by wbadmin.exe to run in Hyper-V server?

Is it possible the following scenario - Physical server 2008 VHD backup file, created by wbadmin.exe to run in Hyper-V server?
 
One of our physical web servers is running Windows Server 2008 Standard x64, and is being backuped daily by default backup utility for server 2008 (wbadmin.exe).
I am curiuous is it possible to restore this VHD backup file into Hyper-V server (said in other way to create new VM using that VHD image).
If it's possible - what are the steps to successfully do this?
Nope, won't work.
But, this will:
- Prepare a fresh VM with the same OS.
- Shut down the VM and mount the VHD file on another VM
- Mount the "backup" VHD you'd like to restore from the same VM
- Use robocopy /purge /b /e /copyall to take all the data from the backup vhd to the new VHD
After this, shut down the VM, and you should be able to create a new VM using the destination VHD file. It will boot - all you have to do is install integration services.
Now for some more "magic":
You can use vshadow.exe to create a VSS snapshot of a running physical OR virtual machine and expose it to a drive letter (yes, boot drive also), and use the robocopy trick above to perform P2Vs or V2Vs. What's good about this method is that you can do a first pass with the machine still servicing requests, then stop all critical services and do another pass to complete the process. Typically takes about 2-3 minutes, depending on how much data has changed. Robocopy will only copy files which are different, and also copies NTFS permissions.
 
Note:
 
1) You may need to use DriverInjection (http://www.911cd.net/forums//index.php?showtopic=22523&st=0) or something similar if the standard IDE driver is not present on the source.
2) You may have to edit boot.ini to point to partition 1 - some system manufacturers have a utility partition as #1.
Otherwise you should be good to go.
 
References:
 
How to configure WSB with the support for Hyper-V VSS writer.

Windows 2008 Hyper-V and Windows 2008 Backup

Windows 2008 (or R2) comes with Wondows backup application. It uses Microsoft volume snapshot technology to snapshot volume and copy the configuration and Data in *.vhd format, that is used for Microsoft Hyper-V server, to local attached storage or network storage. For quick data volume recovery, you just mount the *.vhd file to any Hyper-V server and you are done. You don't need any restore time you may need for the traditional tape backup to speed up SLA. If you need to recover systems, you will have to install Windows via CD or image and choose system recovery option during setup and specify where is system volume backup file is located, local media, UNC path, etc. since Microsoft doesn't support to make backup image *.vhd bootable.
 
You use wbadmin command to schedule backup job and restore.
 
You can run Wbadmin by following these steps:
1. Click Start, click All Programs, and then click Accessories to open the Accessories menu.
2. Start an elevated command prompt by right-clicking Command Prompt and then selecting Run As Administrator.
3. In the Command Prompt window, enter the necessary command text or run a script that invokes Wbadmin.

Wbadmin has a number of associated commands:
DELETE SYSTEMSTATEBACKUP Deletes the system state backup or backups from a specified location.
DISABLE BACKUP Disables scheduled daily backups so that they no longer run.
ENABLE BACKUP Enables or modifies a scheduled daily backup.
GET DISKS Lists the disks that are currently online for the local computer. Disks are listed by manufacturer name, type, disk number, GUID, total space, used space, and associated volumes. GET ITEMS Lists items contained in a specified backup.
GET STATUS Reports the status of the currently running backup or recovery job.
GET VERSIONS List details about the available backups stored in a specific location, including the backup time and backup destination.
START BACKUP Starts a one-time backup using the specified parameters. If no parameters are passed and scheduled backups are enabled, the backup uses the settings for scheduled backups.
START RECOVERY Initiates a recovery of volumes, applications, or files using the specified parameters.
START SYSTEMSTATEBACKUP Starts a system state backup using the options specified.
START SYSTEMSTATERECOVERY Starts a system state recovery using the specified parameters.
STOP JOB Stops the currently running backup or recovery job. Stopped jobs cannot be restarted from where they were stopped.

When you are working with Wbadmin, you can get help on available commands:
1.To view a list of management commands, type wbadmin /? at the command prompt.
2.To view the syntax for a specific management command, type wbadmin Command /?, where Command is the name of the management command you want to examine, such as wbadmin stop job /?.

When you work with Wbadmin, you'll find that just about every command accepts parameters and specific parameter values that qualify what you want to work with. To see more clearly how this works, consider the following syntax example:
wbadmin get versions [-backupTarget:{VolumeName | NetworkSharePath}] [-machine:BackupMachineName] 
The brackets tell you that –backupTarget and –machine are optional. Thus, you could type the following to get information on recoverable backups on the local computer:
wbadmin get versions 
You could type the following to get information on recoverable backups for C:
wbadmin get versions -backuptarget:f: 
Or you could type the following to get information on recoverable backups for C on Server88:
wbadmin get versions -backuptarget:f: -machine:server88 
Many Wbadmin commands use the –backupTarget and –machine parameters. The backup target is the storage location you want to work with, and can be expressed as a local volume name (such as F:) or as a network share path, such as \\FileServer32\backups\Server85. The –machine parameter identifies the computer you want to work with for backup or recovery operations.

Tuesday, February 14, 2012

Event ID 4113 Error: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time

You have Exchange 2010 (up to SP2) DAG setup with multiple sites, remote server cannot see status of another party Database Status. From EMC, it shows Dababase Status unknown and with the following event logged:
 
Log Name:      Application
Source:        MSExchangeRepl
Date:          2/13/2012 6:04:32 PM
Event ID:      4113
Task Category: Service
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      DREXMBX-1.exlab.mydomain.com
Description:
The Microsoft Exchange Replication service was unable to perform an incremental reseed of database copy 'EXMBX-1\DREXMBX-1' due to a network error. The database copy status will be set to Disconnected. Error An error occurred while communicating with server 'EXMBX-2.exlab.mydomain.com'. Error: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="MSExchangeRepl" />
    <EventID Qualifiers="49156">2058</EventID>
    <Level>2</Level>
    <Task>1</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-02-14T14:02:34.000000000Z" />
    <EventRecordID>13852</EventRecordID>
    <Channel>Application</Channel>
    <Computer>DREXMBX-1.exlab.mydomain.com</Computer>
    <Security />
  </System>
  <EventData>
    <Data>EXMBX-1\DREXMBX-1</Data>
    <Data>An error occurred while communicating with server 'EXMBX-2.exlab.mydomain.com'. Error: Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.</Data>
  </EventData>
</Event>
 
Resolution:
 
run follow command:
 
netsh int tcp show global
 
and make sure you have disabled all of following three (autotuninglevel, chimney, and rss), if not, please run the following command:
 
netsh int tcp set global autotuninglevel=disabled
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled
 
 
 
 

Thursday, January 26, 2012

How to Remove Failed Server from DAG in Exchange Server 2010

When an Exchange Server 2010 Mailbox server that is a member of a Database Availability Group has failed, part of the recovery process is to remove it from DAG membership.

In some scenarios this process may result in an error "A quorum of cluster nodes was not present to form a cluster". The full error text is below.

[PS] C:\>Remove-DatabaseAvailabilityGroupServer -Identity DAG -MailboxServer EX2

Confirm
Are you sure you want to perform this action?
Removing Mailbox server "EX2" from database availability group "dag".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y
WARNING: The operation wasn't successful because an error was encountered. You may find more details in log file
"C:\ExchangeSetupLogs\DagTasks\dagtask_2010-11-25_03-48-09.814_remove-databaseavailabiltygroupserver.log".
There was a problem changing the quorum model for database availability group dag. Error: An Active Manager operation f
ailed. Error: An error occurred while attempting a cluster operation. Error: Cluster API '"SetClusterQuorumResource() f
ailed with 0x1725. Error: A quorum of cluster nodes was not present to form a cluster"' failed..
+ CategoryInfo : InvalidArgument: (:) [Remove-DatabaseAvailabilityGroupServer], DagTaskProblemChangingQuo
rumException
+ FullyQualifiedErrorId : 80D96894,Microsoft.Exchange.Management.SystemConfigurationTasks.RemoveDatabaseAvailabili
tyGroupServer

To resolve this issue use the -ConfigurationOnly switch instead to remove the failed Mailbox server from the Exchange 2010 DAG. In this example server EX2 is being removed.

[PS] C:\>Remove-DatabaseAvailabilityGroupServer -Identity DAG -MailboxServer EX2 -ConfigurationOnly

Next, evict the failed node from the Windows Failover Cluster.

Note: you need to import the Failover Cluster module into your Exchange Management Shell session to perform this task.

[PS] C:\>Import-Module FailoverClusters
[PS] C:\>Get-ClusterNode EX2 | Remove-ClusterNode -Force

The failed server has now been removed from the Exchange 2010 DAG and the Windows Failover Cluster.

Friday, January 20, 2012

Get-MailboxDatabase Size list

Exchange 2007

There are a couple methods you can use to get this information in Exchange 2007. Here is a great example posted by Gary Siepser; it's a one-liner that retrieves the database size using WMI, allowing you to run it against clustered mailbox servers:
Get-MailboxDatabase | foreach-object {add-member -inputobject $_ -membertype noteproperty -name mailboxdbsizeinGB -value ([math]::Round(([int64](get-wmiobject cim_datafile -computername $_.server -filter ('name=''' + $_.edbfilepath.pathname.replace("\","\\") + '''')).filesize / 1GB),2)) -passthru} | Sort-Object mailboxdbsizeinGB -Descending | format-table identity,mailboxdbsizeinGB

Exchange 2010

Fortunately, the Get-MailboxDatabase cmdlet in Exchange 2010 provides this information for us out of the box. All you need to do is use the Status parameter and you can access the information using the DatabaseSize property. Here is an example:
Get-MailboxDatabase -Status | select ServerName,Name,DatabaseSize