在 Azure 中交换开发/测试环境

适用于:yes-img-162016 yes-img-192019 yes-img-se订阅版

本主题指导你在 Azure Microsoft 中创建 Exchange 2016 或 Exchange 2019 开发/测试部署。 下面是生成的配置。

Azure 基础结构服务中已完成的 Exchange 开发/测试环境。

此配置在 Azure 虚拟网络的子网中包括一个 Exchange 服务器和一个 Windows Server Active Directory (AD) 域控制器。 这提供了一个基础和常见起点,可从中演示 Exchange 和开发Exchange Server应用程序。 此配置仅用于 Exchange 服务器上的内部电子邮件和应用程序测试。 没有配置外部电子邮件流。

设置此开发/测试环境包含三个主要阶段:

  1. 设置虚拟网络和域控制器 (adVM)。
  2. (exVM) 添加 Exchange 服务器。
  3. 配置 Exchange。

如果还没有 Azure 订阅,可以注册 Azure 免费试用版。 如果你订阅了 MSDN 或 Visual Studio,请参阅 Visual Studio 订户的每月 Azure 信用

注意

由于 Exchange 对 Windows Server AD 中的架构进行更改,因此此配置无法使用 Microsoft Entra 域服务。

阶段 1:部署虚拟网络和域控制器

可以使用 Azure PowerShell 创建新的具有域控制器的 Azure 虚拟网络。 可以从 Windows PowerShell 命令提示符或在 PowerShell 集成脚本环境 (ISE) 中运行后续 PowerShell 命令。 如果未安装 Azure PowerShell,请参阅 Get started with Azure PowerShell cmdlets(Azure PowerShell cmdlets 入门)。

注意

这些命令适用于 Azure PowerShell 1.0.0 和更高版本。

  1. 登录到 Azure 帐户。

    Connect-AzAccount
    
  2. 使用以下命令获得订阅名称。

    Get-AZSubscription | Sort-Object Name | Select-Object Name
    
  3. 使用下列命令设置 Azure 订阅。 通过将引号内的所有内容(包括 < 和 > 字符)替换为正确的名称来设置 $subscrName 变量。

    $subscrName="<subscription name>"
    
    Select-AzSubscription -SubscriptionName $subscrName
    
  4. 创建新的资源组。 要确定一个唯一的资源组名称,请使用此命令列出你现有的资源组。

    Get-AZResourceGroup | Sort-Object ResourceGroupName | Select-Object ResourceGroupName
    

    使用这些命令创建新的资源组。 使用正确的名称替换引号内的所有内容(包括 < 和 > 字符),以设置变量。

    $rgName="<resource group name>"
    
    $locName="<location name, such as West US>"
    
    New-AZResourceGroup -Name $rgName -Location $locName
    
  5. 基于资源管理器的虚拟机需要基于资源管理器的存储帐户。 必须为只包含小写字母和数字的存储帐户选择一个全局唯一名称。 可以使用此命令列出现有的存储帐户。

    Get-AZStorageAccount | Sort-Object StorageAccountName | Select-Object StorageAccountName
    

    使用此命令来测试建议的存储帐户名称是否唯一。

    Get-AZStorageAccountNameAvailability "<proposed name>"
    

    使用这些命令为你的新测试环境创建一个新的存储帐户。

    $saName = "<storage account name>"
    
    New-AZStorageAccount -Name $saName -ResourceGroupName $rgName -Type Standard_LRS -Location $locName
    
  6. 创建 EXSrvrVnet Azure 虚拟网络,用于托管 EXSrvrSubnet 子网并使用网络安全组对其进行保护。

    $exSubnet=New-AZVirtualNetworkSubnetConfig -Name EXSrvrSubnet -AddressPrefix 10.0.0.0/24
    
    New-AZVirtualNetwork -Name EXSrvrVnet -ResourceGroupName $rgName -Location $locName -AddressPrefix 10.0.0.0/16 -Subnet $exSubnet -DNSServer 10.0.0.4
    
    $rule1 = New-AZNetworkSecurityRuleConfig -Name "RDPTraffic" -Description "Allow RDP to all VMs on the subnet" -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389
    
    $rule2 = New-AZNetworkSecurityRuleConfig -Name "ExchangeSecureWebTraffic" -Description "Allow HTTPS to the Exchange server" -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix "10.0.0.5/32" -DestinationPortRange 443
    
    New-AZNetworkSecurityGroup -Name EXSrvrSubnet -ResourceGroupName $rgName -Location $locName -SecurityRules $rule1, $rule2
    
    $vnet=Get-AZVirtualNetwork -ResourceGroupName $rgName -Name EXSrvrVnet
    
    $nsg=Get-AZNetworkSecurityGroup -Name EXSrvrSubnet -ResourceGroupName $rgName
    
    Set-AZVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name EXSrvrSubnet -AddressPrefix "10.0.0.0/24" -NetworkSecurityGroup $nsg
    
    $vnet | Set-AzVirtualNetwork
    
  7. 在 Azure 中创建 adVM 虚拟机。 adVM 是 corp.contoso.com Windows Server AD域的域控制器,是 EXSrvrVnet 虚拟网络虚拟机的 DNS 服务器。

    首先,填入你的资源组名称、Azure 位置和存储帐户名称,并在本地计算机上的 Azure PowerShell 命令提示符下运行这些命令,以创建 adVM 的 Azure 虚拟机。

    # Create an availability set for domain controller virtual machines
    New-AZAvailabilitySet -ResourceGroupName $rgName -Name dcAvailabilitySet -Location $locName -Sku Aligned -PlatformUpdateDomainCount 5 -PlatformFaultDomainCount 2
    
    # Create the domain controller virtual machine
    $vnet = Get-AZVirtualNetwork -Name EXSrvrVnet -ResourceGroupName $rgName
    
    $pip = New-AZPublicIpAddress -Name adVM-NIC -ResourceGroupName $rgName -Location $locName -AllocationMethod Dynamic
    
    $nic = New-AZNetworkInterface -Name adVM-NIC -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -PrivateIpAddress 10.0.0.4
    
    $avSet=Get-AZAvailabilitySet -Name dcAvailabilitySet -ResourceGroupName $rgName
    
    $vm=New-AZVMConfig -VMName adVM -VMSize Standard_D1_v2 -AvailabilitySetId $avSet.Id
    
    $vm=Set-AZVMOSDisk -VM $vm -Name adVM-OS -DiskSizeInGB 128 -CreateOption FromImage -StorageAccountType "Standard_LRS"
    
    $diskConfig=New-AZDiskConfig -AccountType "Standard_LRS" -Location $locName -CreateOption Empty -DiskSizeGB 20
    
    $dataDisk1=New-AZDisk -DiskName adVM-DataDisk1 -Disk $diskConfig -ResourceGroupName $rgName
    
    $vm=Add-AZVMDataDisk -VM $vm -Name adVM-DataDisk1 -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
    
    $cred=Get-Credential -Message "Type the name and password of the local administrator account for adVM."
    
    $vm=Set-AZVMOperatingSystem -VM $vm -Windows -ComputerName adVM -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    
    $vm=Set-AZVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2012-R2-Datacenter -Version "latest"
    
    $vm=Add-AZVMNetworkInterface -VM $vm -Id $nic.Id
    
    New-AZVM -ResourceGroupName $rgName -Location $locName -VM $vm
    

    系统将提示你输入用户名和密码。 本文将此用户名称为ADMIN_NAME。 使用强密码,并记录在一个安全的位置。

    注意:指定的密码不能为“pass@word1”。 长度必须在 8-123 个字符之间,并且必须至少满足以下其中 3 项密码复杂性要求:

    • 包含大写字母
    • 包含小写字母
    • 包含数字
    • 包含特殊字符

Azure 可能需要几分钟的时间来构建虚拟机。

使用本地管理员帐户凭据连接到域控制器虚拟机

  1. Azure 门户,单击><资源组名称>> adVM > Connect 的资源组

  2. 运行下载的 adVM.rdp 文件,然后单击“连接”

  3. 在" Windows 安全性中,单击" 使用另一个帐户"。 在 “用户名”中,键入“adVM”<ADMIN_NAME>。

  4. 在" 密码"中,键入 ADMIN_NAME 帐户的密码,然后单击" 确定"。

  5. 出现提示时,请单击" "。

  6. 将额外的数据磁盘添加为具有驱动器号 F 的新卷,并在 adVM 上的管理员级别Windows PowerShell命令提示符处使用以下命令。

    $disk=Get-Disk | where {$_.PartitionStyle -eq "RAW"}
    
    $diskNumber=$disk.Number
    
    Initialize-Disk -Number $diskNumber
    
    New-Partition -DiskNumber $diskNumber -UseMaximumSize -AssignDriveLetter
    
    Format-Volume -DriveLetter F
    
  7. 将 adVM 配置为 corp.contoso.com 域的域控制器和 DNS 服务器。 在 adVM 上管理员级别的 Windows PowerShell 命令提示符中运行下面的命令。

    Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
    
    Install-ADDSForest -DomainName corp.contoso.com -DatabasePath "F:\NTDS" -SysvolPath "F:\SYSVOL" -LogPath "F:\Logs"
    

请注意,这些命令可能会花几分钟才能完成。

AdVM 重新启动后,重新连接到 adVM 虚拟机。

使用域凭据连接到域控制器虚拟机

  1. Azure 门户中,单击新资源组 adVM > Connect 的名称的“资源组>><>”。

  2. 运行下载的 adVM.rdp 文件,然后单击“连接”

  3. 在" Windows 安全性中,单击" 使用另一个帐户"。 在 “用户名”中,键入“CORP”<ADMIN_NAME>。

  4. 在" 密码"中,键入 ADMIN_NAME 帐户的密码,然后单击" 确定"。

  5. 出现提示时,请单击" "。

  6. 在桌面上打开管理员级别的 Windows PowerShell 命令提示符,然后运行以下命令:

    Add-WindowsFeature RSAT-ADDS-Tools
    

以下是第 1 阶段的结果。

Azure 基础结构服务中的 Exchange 开发/测试环境阶段 1。

阶段 2:创建 Exchange 虚拟机

在此阶段,你将在 EXSrvrVNet 虚拟网络中创建 Exchange 虚拟机,并使其成为 CORP 域的成员。

若要使用 Azure PowerShell 创建 Exchange 虚拟机,请根据需要) ,首先从 Windows PowerShell 命令提示符 (使用 Azure 帐户登录到 Azure。

Connect-AzAccount

你必须为 exVM 虚拟机确定全局唯一 DNS 名称。 必须选取 仅包含小写字母和数字的全局唯一 DNS 名称。 你可以通过以下 PowerShell 命令执行该任务:

$vmDNSName="<DNS name to test>"

$rgName="<resource group name>"

$locName=(Get-AZResourceGroup -Name $rgName).Location

Test-AZDnsAvailability -DomainQualifiedName $vmDNSName -Location $locName

如果你看到“True”,表示你建议的名称是全局唯一名称。

接下来,在 PowerShell 提示符处填写变量值并运行生成的块。

# Set up key variables
$subscrName="<name of your Azure subscription>"

$vmDNSName="<unique, public DNS name for the Exchange server>"

# Set the Azure subscription
Select-AzSubscription -SubscriptionName $subscrName

# Get the Azure location and storage account names
$locName=(Get-AZResourceGroup -Name $rgName).Location

$saName=(Get-AZStorageaccount | Where {$_.ResourceGroupName -eq $rgName}).StorageAccountName

# Create an availability set for Exchange virtual machines
New-AZAvailabilitySet -ResourceGroupName $rgName -Name exAvailabilitySet -Location $locName -Sku Aligned  -PlatformUpdateDomainCount 5 -PlatformFaultDomainCount 2

# Specify the virtual machine name and size
$vmName="exVM"

$vmSize="standard_d8s_v3"

$vnet=Get-AZVirtualNetwork -Name "EXSrvrVnet" -ResourceGroupName $rgName

$avSet=Get-AZAvailabilitySet -Name exAvailabilitySet -ResourceGroupName $rgName

$vm=New-AZVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avSet.Id

# Create the NIC for the virtual machine
$nicName=$vmName + "-NIC"

$pipName=$vmName + "-PublicIP"

$pip=New-AZPublicIpAddress -Name $pipName -ResourceGroupName $rgName -DomainNameLabel $vmDNSName -Location $locName -AllocationMethod Dynamic

$nic=New-AZNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -PrivateIpAddress "10.0.0.5"

# Create and configure the virtual machine
$cred=Get-Credential -Message "Type the name and password of the local administrator account for exVM."

$vm=Set-AZVMOSDisk -VM $vm -Name ($vmName +"-OS") -DiskSizeInGB 128 -CreateOption FromImage -StorageAccountType "Standard_LRS"

$vm=Set-AZVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate

$vm=Set-AZVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version "latest"

$vm=Add-AZVMNetworkInterface -VM $vm -Id $nic.Id

New-AZVM -ResourceGroupName $rgName -Location $locName -VM $vm

注意

此命令块使用在第 1 阶段中创建的标准存储帐户来降低此开发/测试环境的成本。 对于生产 Exchange 服务器,必须使用高级存储帐户。

从 Azure 门户连接到使用本地管理员帐户凭据的 exVM 虚拟机。

接下来,通过 Windows PowerShell 提示符下的这些命令将 exVM 加入 Windows AD 域。

Add-Computer -DomainName "corp.contoso.com"
Restart-Computer

请注意,你必须在输入 Add-Computer 命令后提供域帐户凭据。 使用 CORP\<ADMIN_NAME> 帐户和密码。

以下是第 2 阶段的结果。

Azure 基础结构服务中已完成的 Exchange 开发/测试环境。

阶段 3:配置 Exchange

在此阶段中,在 exVM 上配置 Exchange 并测试两个邮箱之间的邮件传递。

准备 Windows Server AD

  1. 在本地计算机上的Windows PowerShell命令提示符下,运行以下命令:

    Write-Host (Get-AZPublicIpaddress -Name "exVM-PublicIP" -ResourceGroup $rgName).DnsSettings.Fqdn
    
  2. 记下或复制命令显示的完整 DNS 名称。 这是 exVM 虚拟机的 Internet DNS 名称。 稍后你将需要此值。

  3. 如果需要,请使用 CORP\<>ADMIN_NAME 帐户和密码使用 Azure 门户 连接到 adVM 虚拟机。

  4. 在 Windows PowerShell 命令提示符处,运行以下命令:

    Get-ADForest | Set-ADForest -UPNSuffixes @{Add="<DNS Name of Exchange>"}
    
  5. 关闭与 adVM 的远程桌面会话。

安装 Exchange

  1. 使用 CORP\<ADMIN_NAME 帐户和密码通过 Azure 门户> 连接到 exVM 虚拟机。

  2. 从 exVM 中打开管理员级别的 Windows PowerShell 命令提示符并运行下面的命令。

    Install-WindowsFeature NET-Framework-45-Core, NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, NET-WCF-Pipe-Activation45, NET-WCF-TCP-Activation45, NET-WCF-TCP-PortSharing45, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS-Tools
    
    Restart-Computer
    
  3. 使用 CORP\<ADMIN_NAME 帐户和密码通过 Azure 门户> 连接到 exVM 虚拟机。

  4. 在服务器管理器中,单击“本地服务器”。 在 exVM 的“属性”中,为“IE 增强的安全配置”单击“打开”。 在“Internet Explorer 增强的安全配置”中,为管理员和用户单击“关闭”,然后单击“确定”。

  5. 从"开始"屏幕中,单击 Internet Explorer,然后从以下位置下载 Unified Communications Managed API 4.0 运行时:https://www.microsoft.com/download/details.aspx?id=34992。 出现提示时,单击“运行”。

  6. 当系统提示你出现 Microsoft Unified Communications Managed API 4.0 运行时安装程序时,请单击“下一步”。

  7. 单击“我已阅读并接受许可协议”,然后单击“安装”。 在“安装完成”页上,单击“完成”。

  8. 从 Internet Explorer 下载最新版本的 Exchange。 有关详细信息,请参阅Exchange Server汇报

  9. 单击“保存”将 ISO 文件存储到“Downloads”文件夹中。

  10. 单击“打开文件夹”,右键单击 Exchange ISO 文件中,然后单击“装载”。

  11. 从 exVM 的管理员级别的 Windows PowerShell 命令提示符中运行下面的命令:

注意

  • 从 2021 年 9 月累积更新 (CU) 开始,以前的/IAcceptExchangeServerLicenseTerms开关将无法正常工作。 现在必须使用/IAcceptExchangeServerLicenseTerms_DiagnosticDataON/IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF进行无人参与和脚本安装。

  • 以下示例使用/IAcceptExchangeServerLicenseTerms_DiagnosticDataON开关。 由你将开关更改为/IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

e:

.\setup.exe /mode:Install /role:Mailbox /OrganizationName:Contoso /IAcceptExchangeServerLicenseTerms_DiagnosticDataON
Restart-Computer

请等待,直到安装完成,这可能要花费一些时间,然后 exVM 重新启动。

将两个邮箱添加到 Exchange 服务器

  1. 使用 CORP\<ADMIN_NAME 帐户和密码通过 Azure 门户> 连接到 exVM 虚拟机。

  2. 在“开始”屏幕中,键入 Exchange,然后单击“Exchange 命令行管理程序”。

  3. 将以下命令复制到记事本中,插入 $dnsName 变量的 exVM 虚拟机的 Internet DNS 名称,然后将生成的命令复制并粘贴到 Exchange 命令行管理程序。

    $dnsName="<Internet DNS name of the exVM virtual machine>"
    
    $user1Name="chris@" + $dnsName
    
    $user2Name="janet@" + $dnsName
    
    $db=Get-MailboxDatabase
    
    $dbName=$db.Name
    
    $password = Read-Host "Enter password" -AsSecureString
    
  4. 将指定的密码记录在安全的地方。 接下来,运行这些命令以创建两个邮箱。

    New-Mailbox -UserPrincipalName $user1Name -Alias chris -Database $dbName -Name ChrisAshton -OrganizationalUnit Users -Password $password -FirstName Chris -LastName Ashton -DisplayName "Chris Ashton"
    
    New-Mailbox -UserPrincipalName $user2Name -Alias janet -Database $dbName -Name JanetSchorr -OrganizationalUnit Users -Password $password -FirstName Janet -LastName Schorr -DisplayName "Janet Schorr"
    

测试邮箱之间的电子邮件传递

  1. 从本地计算机上的浏览器访问网站 ,https://< exVM 虚拟机>/owa 的 Internet DNS 名称。 当系统提示出现网站安全证书错误页面时,请单击" 继续浏览此网站"。 在 Outlook 登录页上,使用 corp\chris 帐户名和密码。

  2. 当系统提示你指定语言和时区时,请为每个邮箱选择适当的值,然后单击" 保存"。

  3. 在 Chris Ashton 的收件箱中,单击" 新建"。 在" 收件人"中,键入 janet,然后单击" 搜索目录"。 在“主题”中,键入“测试邮件”,然后单击“发送”。

  4. 单击邮件网页右上方的用户图标,然后单击“注销”。

  5. 在 Outlook 登录页上,使用 corp\chris 帐户名和密码。 当系统提示你指定语言和时区时,请为每个邮箱选择适当的值,然后单击“保存”。

  6. 验证收件箱包含来自 Chris Ashton 的测试邮件。 请单击它,然后单击“全部答复”。 在邮件正文中,键入 Replied,然后单击“发送”。

  7. 单击邮件网页右上方的用户图标,然后单击“注销”。

  8. 在 Outlook 登录页上,使用 corp\chris 帐户名和密码。 验证 Janet 发送的回复电子邮件在收件箱中。

现在可以测试 Exchange 功能或应用程序。

停止和启动虚拟机

Azure 虚拟机在运行时会持续产生费用。 为了帮助最大程度地降低 Exchange 开发/测试环境的成本,请使用以下命令停止虚拟机:

$rgName="<your resource group name>"

Stop-AZVM -Name exVM -ResourceGroupName $rgName -Force

Stop-AZVM -Name adVM -ResourceGroupName $rgName -Force

若要重新启动,请使用以下命令:

$rgName="<your resource group name>"

Start-AZVM -Name adVM -ResourceGroupName $rgName

Start-AZVM -Name exVM -ResourceGroupName $rgName

另请参阅

排查 Azure 中的出站 SMTP 连接问题

部署新的 Exchange 安装

Exchange Server 系统要求

Exchange Server

Exchange Server 中的新增功能

云采用测试实验室指南 (TLG)