呃。几个月前,我们为一个大客户构建了一个全新的 AD 和 Exchange 2010 环境。Outlook Anywhere 无法正常工作。Outlook 客户端始终无法连接,似乎不是错误或超时。
这是一次迁移。最初,我们的 Outlook Anywhere 证书不匹配,所以我很确定它从未工作过。我们最近更改了每个人的 SMTP 域后缀以匹配 Webmail URL 的域,所以我预计 OA 会开始工作。现在下雪天,很多人都在家,结果它不起作用。看起来代理 RPC 连接到 OAB 存在某种问题,但我不知道如何解决这个问题。
自动发现很好,OWA、ActiveSync、EWS 都已经运行了几个月。
我们在 DAG 中有 2 个邮箱服务器,1 个用于公共文件夹和日志的邮箱服务器,一个 2 服务器 CAS 阵列。在内部,我们为阵列配备了 NLB。在外部,我们为阵列配备了一个简单的 Netscaler LB VIP,它没有什么特别的功能,只是一个 TCP 443 直通。
RCA 显示这一点 - 它总是大约 33 秒,所以我假设这里有一个 30 秒的超时。
尝试 ping RPC 代理 webmail.5ssl.com。已成功 ping RPC 代理。其他详细信息耗时:201 毫秒。
尝试使用以下标识 ping MAPI 邮件存储端点:PFEXCAS.internal.domain.name.com:6001。尝试 ping 端点失败。其他详细信息 RPC 运行时进程引发了 RPC 错误。错误 1818 CallCancelled
已用时间:33536 毫秒。
现在,两个 CAS 服务器确实都在监听 TCP 6001。PFEXCAS 是 NLB VIP 的名称。
这适用于端口 6001、6002、6004,所以很好
rpcping -t ncacn_http -s pfexcas.internal.domain.name.com -o RpcProxy=pfexcas.internal.domain.name.com -P “,,,” -I “,,,” -H 1 -u 10 -a connect -F 3 -v 3 -e 6004
这不,它给出了 1722
rpcping -t ncacn_http -s pfexcas.internal.domain.name.com -o RpcProxy=webmail.5ssl.com -P “,,,,-I “,,,,-H 1 -u 10 -a connect -F 3 -v 3 -e 6004
Test-OutlookConnectivity -Protocol:Http -verbose
在两台服务器上都运行良好,包括用于地址簿的 GetNewDSA 和 RFRI::GetReferral,但它们在我们的下一次测试中失败了。
这是 Ex2010,因此 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\RpcProxy\ValidPorts_AutoConfig_Exchange 已检查,并且在两个 CAS 服务器上看起来都是正确的
PFEXCAS:6001-6004;PFEXCAS.内部域名:6001-6004;PFEXCAS01:6001-6004;PFEXCAS01.内部域名:6001-6004;PFEXCAS02:6001-6004;PFEXCAS02.内部域名:6001-6004;PFEXMB01:6001-6004;PFEXMB01.内部域名:6001-6004;PFEXMB02:6001-6004;PFEXMB02.内部域名:6001-6004;PFEXMB03:6001-6004;PFEXMB03.内部域名:6001-6004
运行Test-OutlookConnectivity -RpcProxyTestType:Internal -RpcTestType:Server -verbose
结果为:(在任一 CAS 服务器上运行时,结果相同/相似。因此,RPC 代理到地址簿出现了问题,但我能否弄清楚是什么问题呢?环境中的其他一切似乎都运行良好,并且此设置的配置与具有正常工作的 OA 的原始环境非常接近。
VERBOSE: [19:08:13.652 GMT] Test-OutlookConnectivity : Target Client Access server = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.652 GMT] Test-OutlookConnectivity : Using connection parameters :
'internal.domain.name.com\extest_23e99fa922cb4: RpcProxy/RPC-over-HTTP, [PFEXCAS01.internal.domain.name.com/Basic]'
VERBOSE: [19:08:13.652 GMT] Test-OutlookConnectivity : Pinging RpcProxy at the following URL:
https://PFEXCAS01.internal.domain.name.com/rpc/RpcProxy.dll.
ClientAccessServer ServiceEndpoint Scenario Result Latency
(MS)
------------------ --------------- -------- ------ -------
PFEXCAS01.FVE.AD.... PFEXCAS01.internal.domain.name.com RpcProxy::VerifyRpcProxy. Success 46.80
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:13.698 GMT] Test-OutlookConnectivity : Using connection parameters :
'internal.domain.name.com\extest_23e99fa922cb4: Rfri/RPC-over-HTTP, [PFEXCAS01.internal.domain.name.com/Basic],
[PFEXCAS01.internal.domain.name.com/Negotiate]'
VERBOSE: [19:08:13.714 GMT] Test-OutlookConnectivity : Mailbox = 'internal.domain.name.com\extest_23e99fa922cb4', Owner =
'/o=FIVESTAR/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=extest_23e99fa922cb46cb'
VERBOSE: [19:08:13.714 GMT] Test-OutlookConnectivity : Address Book Operation = 'GetNewDSA', Input = 'userLegacyDN',
Input Value = '/o=FIVESTAR/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=extest_23e99fa922cb46cb'
VERBOSE: [19:08:21.342 GMT] Test-OutlookConnectivity : Microsoft.Exchange.Rpc.ServerUnavailableException: Error 0x6ba
(The RPC server is unavailable) from cli_RfrGetNewDSA
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:21.342
EEInfo: Generating component: 2
EEInfo: Status: 0x000006BA
EEInfo: Detection location: 1710
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 1
EEInfo: prm[0]: Long val: 0 (0x00000000)
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:21.342
EEInfo: Generating component: 13
EEInfo: Status: 0x000006BA
EEInfo: Detection location: 1352
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 1
EEInfo: prm[0]: Long val: -1073606646 (0xC002100A)
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:21.342
EEInfo: Generating component: 14
EEInfo: Status: 0xC002100A
EEInfo: Detection location: 1380
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 12175 (0x00002F8F)
EEInfo: prm[1]: Unicode string: /rpc/rpcproxy.dll?PFEXCAS01.internal.domain.name.com:6002
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:21.342
EEInfo: Generating component: 14
EEInfo: Status: 0x00010000
EEInfo: Detection location: 1385
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 16 (0x00000010)
EEInfo: prm[1]: Binary Buffer:
<junk>
at ThrowRpcException(Int32 rpcStatus, String message)
at Microsoft.Exchange.Rpc.RpcClientBase.ThrowRpcExceptionWithEEInfo(Int32 rpcStatus, String routineName)
at Microsoft.Exchange.Rpc.Rfri.RfriRpcClient.GetNewDSA(String userDN, String& server)
at Microsoft.Exchange.Monitoring.RfriClientWrapper.<>c__DisplayClass7.<GetNewDSA>b__6()
at Microsoft.Exchange.Monitoring.OutlookConnectivityContext.RpcExceptionWrapper(Func`1 protectedCall)
VERBOSE: [19:08:21.342 GMT] Test-OutlookConnectivity : AddressBook operation failed. Operation = 'GetReferral', Error
= 'The Address Book Referral operation failed. Operation = '<GetNewDSA>b__6', returnValue = '1722', server =
'PFEXCAS01.internal.domain.name.com', user = '/o=FIVESTAR/ou=Exchange Administrative Group
(FYDIBOHF23SPDLT)/cn=Recipients/cn=extest_23e99fa922cb46cb', .'
PFEXCAS01.FVE.AD.... PFEXCAS01.internal.domain.name.com RFRI::GetReferral. Failure -1.00
VERBOSE: [19:08:21.342 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:21.342 GMT] Test-OutlookConnectivity : Using connection parameters :
'internal.domain.name.com\extest_23e99fa922cb4: Nspi/RPC-over-HTTP, [PFEXCAS01.internal.domain.name.com/Basic],
[PFEXCAS01.internal.domain.name.com/Negotiate]'
VERBOSE: [19:08:21.342 GMT] Test-OutlookConnectivity : Address Book Operation = 'Bind'
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : Microsoft.Exchange.Rpc.ServerUnavailableException: Error 0x6ba
(The RPC server is unavailable) from cli_NspiBind
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:28.955
EEInfo: Generating component: 2
EEInfo: Status: 0x000006BA
EEInfo: Detection location: 1710
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 1
EEInfo: prm[0]: Long val: 0 (0x00000000)
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:28.955
EEInfo: Generating component: 13
EEInfo: Status: 0x000006BA
EEInfo: Detection location: 1352
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 1
EEInfo: prm[0]: Long val: -1073606646 (0xC002100A)
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:28.955
EEInfo: Generating component: 14
EEInfo: Status: 0xC002100A
EEInfo: Detection location: 1380
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 12175 (0x00002F8F)
EEInfo: prm[1]: Unicode string: /rpc/rpcproxy.dll?PFEXCAS01.internal.domain.name.com:6004
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:28.955
EEInfo: Generating component: 14
EEInfo: Status: 0x00010000
EEInfo: Detection location: 1385
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 16 (0x00000010)
EEInfo: prm[1]: Binary Buffer:
<junk>
at ThrowRpcException(Int32 rpcStatus, String message)
at Microsoft.Exchange.Rpc.RpcClientBase.ThrowRpcExceptionWithEEInfo(Int32 rpcStatus, String routineName)
at Microsoft.Exchange.Rpc.Nspi.NspiRpcClient.Bind(UInt32 flags, IntPtr stat, IntPtr guid)
at Microsoft.Exchange.Monitoring.NspiClientWrapper.<Bind>b__4()
at Microsoft.Exchange.Monitoring.OutlookConnectivityContext.RpcExceptionWrapper(Func`1 protectedCall)
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : Address Book operation failed. Details: The NSPI operation
failed. Operation = '<Bind>b__4', ReturnValue = '1722', Server = 'PFEXCAS01.internal.domain.name.com', User =
'/o=FIVESTAR/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=extest_23e99fa922cb46cb', ..
PFEXCAS01.FVE.AD.... PFEXCAS01.internal.domain.name.com NSPI::GetProfileDetails. Failure -1.00
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : Using connection parameters :
'internal.domain.name.com\extest_23e99fa922cb4: Mailbox/RPC-over-HTTP, [PFEXCAS01.internal.domain.name.com/Basic],
[PFEXCAS01.internal.domain.name.com/Negotiate]'
VERBOSE: [19:08:28.971 GMT] Test-OutlookConnectivity : Mailbox Operation: 'EcDoConnectEx', Target mailbox:
'/o=FIVESTAR/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=extest_23e99fa922cb46cb'
VERBOSE: [19:08:28.986 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:28.986 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:36.599 GMT] Test-OutlookConnectivity : Microsoft.Exchange.Rpc.ServerUnavailableException: Error 0x6ba
(The RPC server is unavailable) from EcDoConnectEx
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:36.599
EEInfo: Generating component: 13
EEInfo: Status: 0x000006BA
EEInfo: Detection location: 1352
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 1
EEInfo: prm[0]: Long val: -1073606646 (0xC002100A)
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:36.599
EEInfo: Generating component: 14
EEInfo: Status: 0xC002100A
EEInfo: Detection location: 1380
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 12175 (0x00002F8F)
EEInfo: prm[1]: Unicode string: /rpc/rpcproxy.dll?PFEXCAS01.internal.domain.name.com:6001
EEInfo: ComputerName: n/a
EEInfo: ProcessID: 4520
EEInfo: Generation Time: 2015-01-27 19:08:36.599
EEInfo: Generating component: 14
EEInfo: Status: 0x00010000
EEInfo: Detection location: 1385
EEInfo: Flags: 0
EEInfo: NumberOfParameters: 2
EEInfo: prm[0]: Long val: 16 (0x00000010)
EEInfo: prm[1]: Binary Buffer:
<junk>
at ThrowRpcException(Int32 rpcStatus, String message)
at Microsoft.Exchange.Rpc.RpcClientBase.ThrowRpcExceptionWithEEInfo(Int32 rpcStatus, String routineName)
at Microsoft.Exchange.Rpc.ExchangeClient.ExchangeRpcClient.EcDoConnect_Wrapped(Boolean isEx, Void** pcxh, Byte*
szUserDN, UInt32 ulFlags, UInt32 ulConMod, UInt32 cbLimit, UInt32 ulCpid, UInt32 ulLcidString, UInt32 ulLcidSort,
UInt32 ulIcxrLink, UInt16 usFCanConvertCodePages, UInt32* pcmsPollsMax, UInt32* pcRetry, UInt32* pcmsRetryDelay,
UInt16* picxr, Byte** pszDNPrefix, Byte** pszDisplayName, UInt16* rgwClientVersion, UInt16* rgwServerVersion, UInt16*
rgwBestVersion, UInt32* pulTimeStamp, Byte* rgbAuxIn, UInt32 cbAuxIn, Byte* rgbAuxOut, UInt32* pcbAuxOut)
at Microsoft.Exchange.Rpc.ExchangeClient.ExchangeRpcClient.EcDoConnect_Internal(Boolean isEx, IntPtr& contextHandle,
String userDn, Int32 flags, Int32 sizeLimit, Int32 conMod, Int32 cpid, Int32 lcidString, Int32 lcidSort, Int32
sessionIdLink, Boolean canConvertCodePages, TimeSpan& pollsMax, Int32& retryCount, TimeSpan& retryDelay, String&
dnPrefix, String& displayName, Int16[] clientVersion, Int16[]& serverVersion, Int16[]& bestVersion, Int32& timeStamp,
Byte[] auxIn, Boolean compressAuxIn, Boolean xorMagicAuxIn, Byte[]& auxOut, Int32 maxSizeAuxOut, Boolean&
wasCompressedAuxOut, Boolean& wasXorMagicAuxOut)
at Microsoft.Exchange.Rpc.ExchangeClient.ExchangeRpcClient.EcDoConnectEx(IntPtr& contextHandle, String userDn, Int32
flags, Int32 sizeLimit, Int32 conMod, Int32 cpid, Int32 lcidString, Int32 lcidSort, Int32 sessionIdLink, Boolean
canConvertCodePages, TimeSpan& pollsMax, Int32& retryCount, TimeSpan& retryDelay, String& dnPrefix, String&
displayName, Int16[] clientVersion, Int16[]& serverVersion, Int16[]& bestVersion, Int32& timeStamp, Byte[] auxIn,
Boolean compressAuxIn, Boolean xorMagicAuxIn, Byte[]& auxOut, Int32 maxSizeAuxOut, Boolean& wasCompressedAuxOut,
Boolean& wasXorMagicAuxOut)
at Microsoft.Exchange.Monitoring.MailboxTask.<>c__DisplayClassb.<Connect>b__a()
at Microsoft.Exchange.Monitoring.OutlookConnectivityContext.RpcExceptionWrapper(Func`1 protectedCall)
VERBOSE: [19:08:36.599 GMT] Test-OutlookConnectivity : EcDoConnectEx Result: '1722'
VERBOSE: [19:08:36.599 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
PFEXCAS01.FVE.AD.... PFEXCAS01.internal.domain.name.com Mailbox::Connect. Failure -1.00
VERBOSE: [19:08:36.615 GMT] Test-OutlookConnectivity : RPC Endpoint = 'PFEXCAS01.internal.domain.name.com'
VERBOSE: [19:08:36.615 GMT] Test-OutlookConnectivity : This step was skipped. This may have been caused by the failure
in a previous scenario. Operation = 'MailboxTask::Logon'.
PFEXCAS01.FVE.AD.... PFEXCAS01.internal.domain.name.com Mailbox::Logon. Skipped -1.00
VERBOSE: [19:08:36.615 GMT] Test-OutlookConnectivity : Admin Audit Log: Entered Handler:OnComplete.
VERBOSE: [19:08:36.615 GMT] Test-OutlookConnectivity : Ending processing &
答案1
这是某种愚蠢的配置 Heisenbug。注册表已正确配置为 RPC,问题并非特定于 OAB,这只是首先检查的内容。需要重新启动 CAS 服务器才能使其正常工作。
此外,真正的根本原因是我最近安装了第三个 CAS 服务器作为测试,而不是在阵列中。我为它提供了无法访问的公共 URL 的虚拟值,出于某种原因(我希望知道),这些值被写入了自动发现。我从该测试机器上卸载了 CAS 角色,它清理了自动发现,但在重新启动其余 CAS 服务器之前,RPCPing 仍然有问题。