Exchange 2016发送给内部中继服务器邮件后收件人显示winmail.dat

1、前戏

         最近遇到一个问题,Exchange邮箱发送一个带附件的邮件给内部的另外一个非Exchange邮件系统邮箱的用户邮件,收件人收到邮件后不使用Outlook客户端打开邮件时显示为winmail.dat;如果收件人使用Outlook打开则可以正常查看邮件附件。

2、了解这个问题之前我先介绍一下环境情况

现场环境为WIndows Server 2012 R2+Exchange 2016。AD的域名为contoso.local,Exchange的接收域为:contoso.local(外部中继域)、contoso.com(权威域),域名contoso.local域名为内部一个coremail邮件系统使用的SMTP域名;为了能够让Exchange 2016的邮箱用户能够在OAB中检索到coremail的邮箱用户地址,使用脚本在Exchange上为创建了大量外部SMTP地址为@contoso.local的联系人。

3、为啥会出现这种情况

通过查找发现在Exchange组织内部发送的邮件格式为TNEF,TNEF(也称为 Outlook RTF 格式或 Exchange RTF 格式)是 Microsoft 特定的用于封装 MAPI 邮件属性的格式。MicrosoftOutlook 的所有版本都能完全理解 TNEF。Outlook Web App 将 TNEF 转换为 MAPI,并显示已设置格式的邮件。但是,不了解 TNEF 的其他电子邮件客户端通常将 TNEF 格式的邮件显示为带有 Winmail.dat 或 Win.dat 附件的纯文本邮件。(具体可以参考:https://technet.microsoft.com/zh-cn/library/bb310786(v=exchg.150).aspx

换句话说,在Exchange内部的邮件格式是为TNEF,当Exchange将邮件发送到第三方邮件系统时,会将TNEF格式的邮件进行内容格式转换(例如:转换为HTML格式),这样第三方邮件系统接收到邮件后使用非Outlook客户端就能够正常查看邮件内容。

出现上述这种情况,有两种解决方法:1)、关闭远程接受域的TnefEnabled属性值。(而我的环境中contoso.local为AD域名,无法删除也无设置为远程域,所以此方法行不通)。2)、设置每个Mailuser或Mail contact的属性UseMapiRichTextFormat为Never。

4、解决方法

         

        由于我处理的环境只能使用方法2,下面我还是两种操作方法都说明一下:

1)、设置远程接收域

1. 打开Exchange Powershell

2. 三方邮件系统所使用的domain(此处,假设您的Exchange smtp domain为contoso.com,三方邮件系统的smtp domain为4thcoffee.com)加入到Exchange的Remote Domain中:

New-RemoteDomain Name 4thCoffee.com -DomainName 4thCoffee.com

3. 运行下方命令检查您此时的Remote Domain配置:

Get-RemoteDomain | Where {$_.TNEFEnabled -ne $false} | Select Name,DomainName,TNEFEnabled

4. 将4thCoffee.com的TNEFEnabled参数设置为False:

Set-RemoteDomain -Identity 4thCoffee.com -TNEFEnabled $false

关于TNEF参数的说明:

The TNEFEnabled parameter specifies whether Transport Neutral Encapsulation Format (TNEF) message encoding is used on messages sent to the remote domain.

参考链接:

Set-RemoteDomain

https://technet.microsoft.com/en-us/library/aa997857(v=exchg.150).aspx

TNEF conversion options

https://technet.microsoft.com/en-us/library/bb310786(v=exchg.150).aspx

2)、设置Mail User和Mail Contact属性UseMapiRichTextFormat为 Never

操作单个用户,直接使用命令Set-mailuser –identity yangfanit –UseMapiRichTextFormat Never   即可完成设置。

5、实际环境操作

问题描述:

============================================

Exchange 2016邮箱用户给contoso.local的coremail用户发送邮件后,coremail邮箱用户收到邮件后,使用非Outlook客户端查看邮件时显示为winmail.dat格式。

原因分析:

===============================================

由于现场环境中Exchange 2016的接收域中存在contoso.local,无法将此接收域删除或者设置为远程域。导致Exchange邮箱用户给域名为@contoso.local的mail User发送邮件时自动启用了TNEF封装格式,而没有转换为HTML格式。(关于TNEF格式可以参考:https://technet.microsoft.com/zh-cn/library/bb310786(v=exchg.150).aspx

解决方法:

===============================================

手动将每个mailuser的UseMapiRichTextFormat设置为never。可以让所有Exchange邮箱给域名@contoso.local发送邮件时删除TNEF封装的格式,这样在Coremail用户使用非Outlook客户端时就能够正常查看邮件。

操作方法如下:

1、 操作单个用户,直接使用命令Set-mailuser –identity  test01 –UseMapiRichTextFormat Never   即可完成设置。

2、 批量设置所有Mailuser的UseMapiRichTextFormat属性操作方法。使用如下脚本即可设置所有mailuser用户的属性UseMapiRichTextFormat值。

#输入Exchange 2016 Powershell连接URL

$ExchangeURI = ‘http://CASFQDN.contoso.com/powershell/‘

$s=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $ExchangeURI -Authentication Kerberos -Name ‘ExchangeSession‘

Import-PSSession $s

Get-MailUser -ResultSize unlimited | Set-MailUser -UseMapiRichTextFormat never

$error | Out-File "c:\scripts\error.txt" -Force -noclobber

Remove-PSSession  $s

操作过程:

1)、服务器CAS01.cotoso.com的C盘ExchangeScripts上有一个脚本文件Set-mailuserUseMapiRichTextFormat。

2)、运行脚本Set-mailuserUseMapiRichTextFormat。

3)、脚本运行完成后,如果执行过程中有问题,那么会记录在error.txt文件中。

时间: 2024-08-08 05:04:56

Exchange 2016发送给内部中继服务器邮件后收件人显示winmail.dat的相关文章

Exchange 2016 环境中某台服务器不让用户访问到

最近在环境中增加了一台 Exchange 2016 服务器用于测试,用户打开outlook时会连接到它,由于证书不包括该机器,会有个证书错误的提示.解决方法:删除所有相关目录 Remove-MapiVirtualDirectory Remove-EcpVirtualDirectory Remove-AutodiscoverVirtualDirectory Remove-WebServicesVirtualDirectory Remove-OwaVirtualDirectory 原文地址:http

exchange 2016 能发送邮件,不能接受邮件

大家好,问题现象是大面积的,因为我们是做服务器运维的,又不是做桌面的.能发不能收,而且outlook客户端显示连接正常,没有任何报错. 直接登录服务器,找到这个服务,叫Microsoft Exchange Mailbox Transport Delivery ,如果没有启动,就启动一下,如果显示Running,再重启一下这个服务. 为啥我知道是这个服务呢,你必须有一个猪一样的队友,重启服务器不带检查的.这种错误都是低级的,一点技术含量都没有. 下次分享一个修得邮件数据库的操作,也就是你怎么也mo

Exchange 2010和Exchange 2016共存部署-6:无人参与安装EX16邮箱服务器

要进行无人参与安装,需要在命令行中执行setup.exe程序,然后使用setup自带的各种无人参与安装参数. 参数如下. Setup.exe [/Mode:<setup mode>] [/IAcceptExchangeServerLicenseTerms] [/Role:<server role to install>] [/InstallWindowsComponents] [/OrganizationName:<name for the new Exchange orga

Exchange 2016管理&mdash;&mdash;安装成功后任务(3)

Exchange 2016服务器安装完成后需要进行如下配置任务,每个配置任务没有必须的先后顺序,只要保证不遗漏即可. 配置DNS内外网记录 激活服务器 服务器证书申请 配置服务器URL 配置邮件流 配置接收域 配置邮件地址策略 配置DNS内外网记录再次不多说,需要在内外DNS服务器上添加OWA访问记录和Autodiscover记录. 1. 激活服务器 使用命名了Set-ExchangeServer –ProductKey 命令将两台Exchange服务器进行激活. 2.服务器证书申请 服务器证书

Exchange 2016 系统要求

Exchange 2016 和早期版本的 Exchange Server 共存方案 Exchange 2016支持混合部署方案 Exchange 2016 的网络和目录服务器要求 目录服务体系结构: 在目录服务器上安装Exchange2016 硬件 操作系统 Exchange 2016 支持的 Windows Management Framework 版本 .NET 支持的客户端 Exchange 2016 和早期版本的 Exchange Server 共存方案: Exchange 版本 Exc

初识Exchange 2016

Microsoft Exchange Server 2016 在 Exchange Server 中引入了一系列新的技术.功能和服务.它的目标是支持人们和组织将工作重心从通信转移到协作.与之前的Exchange server相比有很多变化.下面根据我们经常使用到的功能简单说明.具体要详细了解可以参考:https://technet.microsoft.com/zh-cn/library/jj150540(v=exchg.160).aspx. 1.服务器架构角色变化 Exchange 2016目前

Exchange 2016 邮件在队列中不能发送

昨天晚上同事处理的,在此记录一下. 2018.3.29 19:00 左右邮件不能发送2018.3.29 19:20 问题出在 Exchange 2016 边缘服务器上,mail.que文件过大 处理方法:1.边缘服务器上,停止传输服务.2.重命名 mail.que 文件3.开启传输服务,系统会自动生成一个新的 mail.que 文件4.问题解决 如下图所示: 参考网址:https://social.microsoft.com/Forums/zh-CN/c778c720-95c4-4de1-b70

微软Azure公有云之企业Exchange 2016部署7&mdash;安装邮件服务器

本节我们来部署Exchange2016邮件服务器,如下图红框所示. Exchange2016相对于Exchange2013来说,改变不大.最大的改变还是客户端访问服务器角色(CAS)和邮箱服务器角色(MBX)的角色合并.也就是说我们无法将CAS和MBX分开部署.这一更改反映了Exchange服务器角色归置(自 Exchange 2010 起的推荐最佳做法)的理念. Exchange2016体系结构图: 多角色 Exchange 服务器体系结构带来了以下切实可见的好处: a. 环境中的所有 Exc

扫描仪通过SMTP中继服务器发送通知邮件失败

现象描述: 前2天有客户给我打电话说有1个办公地点的扫描仪扫描的文件多的话,收件人是无法收到通知邮件的,扫描仪上未显示任何错误:如果扫描的数量比较少如几张的话收件人就可以正常收到扫描通知邮件(客户的环境是在本地搭建了SMTP中继服务器,所有的业务应用,如:扫描仪.打印机.OA.SQL通知等都是通过SMTP中继服务器连接到Office 365进行通知邮件发送的) 分析过程: 1. 通过现象初步判断应该是扫描的文件太大超过了限定的设置所致,通过检查SMTP中继服务器的发送大小限制,SMTP中继服务器