Назад | Перейти на главную страницу

Общие почтовые ящики в Exchange 2010

Я много гуглил и искал в ServerFault руководство, и я не могу найти никаких примеров сценариев проектирования или передовых методов, или фактически какой-либо документации от Microsoft для решения этой проблемы.

У нас есть несколько почтовых ящиков, которые представляют отдел или команду (а не отдельного человека), которые будут контролироваться и обрабатываться несколькими пользователями. Под этим я имею в виду, что в зависимости от того, кто был включен в реестр, кто был назначен ответственным за ответы / действия по электронной почте для этой команды в этот день и т. Д., Разные люди будут читать сообщения в почтовом ящике, а затем классифицировать их / отмечать их как прочитанные / непрочитанные, переместите их в подпапки и т. д. Чтобы избежать дублирования работы, это должно быть видно всем, кто будет просматривать этот почтовый ящик следующим.

Вот наш текущий сценарий:

По большому счету это работает нормально. Это сложно, потому что членство пользователей в группах обновляется при входе в систему, поэтому им необходимо выйти и снова войти, чтобы получить доступ. Но вот проблемы:

Я рассматривал возможность использования общедоступных папок, но, очевидно, существует большая путаница относительно того, устарели ли они, но более конкретно относительно их наилучшего использования (я не думаю, что они применимы к моей текущей проблеме). Я также подумывал об изменении их с почтовых ящиков пользователей на общие почтовые ящики, однако эта статья в технике говорит:

Для совместной работы рекомендуется использовать почтовые ящики ресурсов или порталы Microsoft SharePoint Portal Server вместо общих почтовых ящиков.

Также много слухов идет об интеграции между Exchange и SahrePoint или о том, как SharePoint собирается заменить множество сценариев совместной работы, которые ранее использовались Exchange. Но я не могу найти четкой документации о рекомендуемом дизайне.

Итак, мой вопрос: может ли кто-нибудь указать мне на какую-либо документацию о правильном подходе к этому сценарию? Это обычное требование среди организаций, и я не могу поверить, что его где-то не учли.

Exchange и Sharepoint предоставляют инструменты; вы настраиваете их под свои нужды. Вы можете подумать, что эти потребности универсальны, и это действительно так, но вы будете удивлены, насколько они различаются между организациями, поэтому ваша конфигурация, вероятно, отличается от других. На самом деле вы сопоставляете бизнес-процессы с технологиями, и это действительно может сделать только вы. Вам нужно выяснить, что нужно вашим пользователям, и создать решение, которое им подходит. Это, вероятно, объясняет, почему вы не находите документы именно для того, что вам нужно.

Общие папки жизнеспособны для Exchange 2010 и неизвестно сколько времени. Microsoft изначально пыталась убить их, но это вызвало сильную негативную реакцию, поэтому они немного отступили. Если вы еще не используете их, было бы разумно пропустить их и найти решение, в котором вместо этого используются почтовые ящики или Sharepoint.

На самом деле у вас есть 2 варианта, как вы упомянули: использовать почтовый ящик и предоставить всем доступ или использовать сайт Sharepoint. Любой из них может работать. Вы не упоминаете, есть ли у вас Sharepoint или нет. Если вы этого не сделаете, это не так уж и важно, поэтому я бы рекомендовал придерживаться подхода вашего почтового ящика, который является распространенным решением. Очевидно, вам нужно решить свои проблемы с проблемами с разрешениями, но если это ваша единственная проблема, я бы просто сосредоточился на этой конкретной технической проблеме и нашел решение.

Я бы не стал зацикливаться на этом комментарии в документе Microsoft об использовании почтовых ящиков ресурсов или Sharepoint для совместной работы. Почтовый ящик ресурса не подходит для вашего конкретного использования, хотя Sharepoint может подойти.

Вот что я узнал об этих проблемах.

Период ожидания между их настройкой и работой связан с кеш каталога на бирже. Я нашел статью Вот который описывает это. Наше решение - установить соответствующие ожидания; мы ждем 24 часа между созданием общего почтового ящика и сообщением пользователям, что он готов.

Что касается функциональности, я до сих пор не нашел рекомендаций о том, что для этого лучше всего. Однако я обнаружил следующие два факта:

  • Создание почтового ящика и учетной записи пользователя непосредственно в Exchange в качестве Общий почтовый ящик работает намного надежнее
  • Создание группы с доступом к почтовому ящику и последующее добавление пользователей в эту группу работает. Использование вложенных групп не работает надежно

Судя по всему, вторая проблема была исправлена ​​в последнем пакете обновления, хотя я еще не тестировал это. Кроме того, группы, которые мы сейчас создаем, являются группами рассылки с включенной безопасностью. Я создал сценарий для автоматизации всего процесса, и он работает очень хорошо. В настоящее время мы находимся в процессе переноса наших существующих общих почтовых ящиков в новые почтовые ящики, созданные с помощью этого сценария.

Ниже приведен сценарий для всех, кому интересно. Любые предложения или улучшения приветствуются.

# ===================================================================
# 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 (e.g. Sales Team or Emplyee Enquiries)"
$mbalias = Read-Host "`nPlease enter an alias for the new mailbox (e.g. 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 (e.g. Sales Team Full Access)"
$dgalias = Read-Host "`nPlease enter an alias for the new Distribution Group (e.g. 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."
            }
    }