Exchange 2010中的共享邮箱

我已经广泛search和searchServerFault的指导,我找不到任何devisescheme的例子或最佳做法,或者事实上任何来自微软的文档如何解决这个问题。

我们有许多代表部门或团队(而不是个人)的邮箱,这些邮箱将由多个用户进行监控和处理。 我的意思是根据谁被录用,被指定为当天回复/处理该团队的电子邮件的责任等等,不同的人将会读取邮箱中的邮件,然后对他们进行分类/标记作为读取/未读,将它们移动到子文件夹等。为了避免重复的工作,这需要任何观看这个邮箱接下来看到。

这是我们目前的情况:

  • 我们创build邮箱,例如[email protected]
  • 我们创build一个域本地安全组,例如Team1邮箱完全访问,并授予其对邮箱的完全访问权限
  • 我们将用户或组添加到此组

总的来说,这工作正常。 在login时更新用户的组成员身份是很困难的,所以他们需要注销并重新login才能获得访问权限。 但是这里有一些问题:

  • 从设置这些权限到似乎应用这些权限之间花费的时间量是不可预知的,也是不一致的。 例如,如果我按照上述步骤(甚至只是将某人添加到已具有权限的组),即使他们注销/打开,有时可能需要几个小时才能访问邮箱。
  • 有时甚至根本不起作用。 用户只有在直接申请权限的情况下才能访问邮箱(例如,他们的用户acocunt被授予对邮箱的权限,而不是通过组成员身份)。

我已经考虑过使用公共文件夹,但是显然对于这些是否被弃用还有很多疑惑,但是更具体地说明它们的最佳用法是什么(我不讳言它们会适用于我当前的问题)。 我也考虑过将它们从用户邮箱更改为共享邮箱,但是这篇technet文章说:

我们build议您使用资源邮箱或Microsoft SharePoint Portal Server门户进行协作,而不是共享邮箱。

关于Exchange和SahrePoint之间的集成还有很多的话题,或者SharePoint将如何取代之前由Exchange解决的很多协作场景。 但我似乎无法find推荐devise的清晰文档。

所以我的问题是,任何人都可以在任何文档的方向上指出这种情况的正确方法是什么? 这是各组织的共同要求,我不敢相信这个问题在某个地方没有得到解决。

Exchange和Sharepoint提供工具; 你可以根据自己的需求定制它们 你可能会认为这些需求是普遍的,事实上他们是这样,但是你会惊讶于不同组织之间的差异,所以你的configuration可能与其他的不同。 你真正在做的是将业务stream程映射到技术上,而这只能由你来完成。 你需要弄清楚你的用户需要什么,并build立一个适合他们的解决scheme。 这可能解释了为什么你没有find你想要的文档。

Exchange 2010的公用文件夹是可行的,谁知道多久。 微软最初试图杀死他们,但有很多反弹,所以他们退缩了一下。 如果您还没有使用它们,那么跳过它们并find一个使用邮箱或Sharepoint的解决scheme是明智的。

真的,你的2个选项正如你所说:使用一个邮箱,并给每个人访问或使用Sharepoint网站。 要么可以工作。 你不提,如果你已经有Sharepoint或没有。 如果你不这样做,这不是一个微不足道的事情,所以我build议坚持你的邮箱的方法,这是一个常见的解决scheme。 显然你需要解决你的问题与权限问题,但如果这是唯一的问题,我只是专注于特定的技术问题,并find一个解决scheme。

我不会在Microsoft文档中关于使用资源邮箱或Sharepoint进行协作的评论。 资源邮箱将不适合您的具体使用,尽pipeSharepoint可能。

以下是我所了解到的这些问题。

设置它们之间和它们的工作时间之间的等待时间与Exchange上的目录caching相关。 我在这里find一篇描述这个的文章。 我们的解决scheme是设定适当的期望; 我们在创build共享邮箱之间等待24小时,并build议用户准备好。

关于function,我还没有find最佳实践的指导。 但是我发现了以下两个事实:

  • 直接在Exchange中创build邮箱和用户帐户作为共享邮箱工作更加可靠
  • 创build一个有权访问邮箱的组,然后将用户添加到该组。 使用嵌套组不能可靠地工作

显然第二个问题已经在最新的服务包中得到修复,虽然我还没有testing过。 另外,我们现在创build的组是启用安全性的通讯组。 我创build了一个脚本来使整个过程自动化,而且这个工作非常好。 目前,我们正在将我们现有的共享邮箱迁移到使用此脚本创build的新邮箱。

对于任何有兴趣的人,我已经在下面写了脚本。 任何build议或改进将是最受欢迎的。

# =================================================================== # Purpose: Creates a shared mailbox, a group with appropriate permissions, and adds members # Author: Matt Goldman # Revision: 1.0; 31/5/2011 # =================================================================== Function ImportMembers { param($csvpath,$dgalias) $Title = "CSV Import Options" $headingquery = "Please choose from the following CSV formatting options:" $alias = New-Object System.Management.Automation.Host.ChoiceDescription "&Alias", ` "CSV Contains an alias column." $fullname = New-Object System.Management.Automation.Host.ChoiceDescription "&Full Name", ` "CSV contains a full name column." $firstlast = New-Object System.Management.Automation.Host.ChoiceDescription "First and &Last Name", ` "CSV contains a first name column and a last name column" $options = [System.Management.Automation.Host.ChoiceDescription[]] ($alias, $fullname, $firstlast) $result = $host.ui.PromptForChoice($title, $headingquery, $options, 0) Switch ($result) { 0 { # Has an alias column $aliascolumn = Read-Host "Please enter the column heading for the alias column" $members = Import-CSV $csvpath foreach ($row in $members) { $member = $row.$aliascolumn Add-DistributionGroupMember -Identity $dgalias -Member $member } } 1 { # Has a full name column $fullnamecolumn = Read-Host "Please enter the column heading for the Full Name column" $members = Import-csv $csvpath foreach ($row in $members) { $member = $row.$fullnamecolumn Add-DistributionGroupMember -Identity $dgalias -Member $member } } 2 { # Has a first name and a last name column $firstnamecol = Read-Host "Please enter the column heading for the First Name column" $lastnamecol = Read-Host "Please enter the column heading for the Last Name column" $members = Import-csv $csvpath foreach ($row in $members) { $fullname = $row.$firstnamecol + " " + $row.$lastnamecol Add-DistributionGroupMember -Identity $dgalias -Member $fullname } } } Write-Host "The following members have been added to the group:" Get-DistributionGroupMember $dgalias | FT -AutoSize Name Write-Host "Thank you for using SMBuilder." } Write-Host "Shared Mailbox Builder v0.1`n" # Write-Host "Script to create a shared mailbox, create a corresponding group with appropriate permissions, and populate group membership" # Write-Host "User-input driven" # Create the shared mailbox $mbname = Read-Host "Please enter a (full) name for the new mailbox (eg Sales Team or Emplyee Enquiries)" $mbalias = Read-Host "`nPlease enter an alias for the new mailbox (eg salesteam or empenq)" $addomain = Read-Host "`nPlease enter your Active Directory domain (NOT your SMTP domain if they are different)" $upn = $mbalias + "@" + $addomain $mbmessage = "`nDo you want to specify an OU for the mailbox object? (Default will be $addomain/users)" $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", ` "Specifies an OU." $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", ` "Accepts default OU." $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no) $result = $host.ui.PromptForChoice($title, $mbmessage, $options, 1) switch ($result) { 0 { $ou = Read-Host "Please specify the Organizational Unit - $addomain/" $mbou = $addomain + "/" + $ou New-Mailbox -Name $mbname -Alias $mbalias -UserPrincipalName $upn -OrganizationalUnit $mbou -Shared | Out-Null } 1 { New-Mailbox -Name $mbname -Alias $mbalias -UserPrincipalName $upn -Shared | Out-Null } } Write-Host "The following mailbox has been created:" Get-Mailbox $mbalias | FT -AutoSize Name,OrganizationalUnit # Create the security-enabled distribution group $dgname = Read-Host "Please enter a (full) name for the new Distribution Group (eg Sales Team Full Access)" $dgalias = Read-Host "`nPlease enter an alias for the new Distribution Group (eg STMailBoxFA)" $dgmessage = "`nDo you want to specify an OU for the Distribution Group? (Default will be $addomain/users)" $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", ` "Specifies an OU." $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", ` "Accepts default OU." $options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no) $result = $host.ui.PromptForChoice($title, $dgmessage, $options, 1) switch ($result) { 0 { $ou = Read-Host "Please specify the Organizational Unit - $addomain/" $dgou = $addomain + "/" + $ou new-DistributionGroup -Name $dgname -Type 'Security' -SamAccountName $dgname -Alias $dgalias -OrganizationalUnit $dgou | Out-Null } 1 { new-DistributionGroup -Name $dgname -Type 'Security' -SamAccountName $dgname -Alias $dgalias | Out-Null } } Set-DistributionGroup -identity $dgalias -HiddenFromAddressListsEnabled $true Write-Host "The following Distribution Group has been created:" Get-DistributionGroup $dgalias | FT -AutoSize Name,OrganizationalUnit # Apply full access and send as permissions to the group on the mailbox Add-MailboxPermission -Identity $mbalias -AccessRights FullAccess -User $dgalias | Out-Null Write-Host "`nFull-Access rights applied..." Get-Mailbox $mbalias | Add-ADPermission -ExtendedRights Send-As -User $dgalias | Out-Null Write-Host "Send-As permission applied..." # Populate the group $listmessage = "`nDo you have a .csv file listing the users/groups you wish to add to this group?" $yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", ` "Allows you to import a list of users in .csv format" $no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", ` "Allows you to manually type in a comma seperated list of users, or skip and add them manually" $options = [System.Management.Automation.Host.ChoiceDescription[]] ($yes, $no) $result = $host.ui.PromptForChoice($title, $listmessage, $options, 1) Switch ($result) { 0 { "You wish to import from CSV..." $csvpath = Read-Host "Please enter the full path to your CSV file" ImportMembers $csvpath $dgalias } 1 { "You do not wish to import from CSV. Thank you for using SMBuilder." } }