| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Exchange 2013接收连接器以及邮件客户端若干问题介绍 -> 正文阅读 |
|
[系统运维]Exchange 2013接收连接器以及邮件客户端若干问题介绍 |
一. 什么是接收连接器?? 上图显示出了Exchange 2013完整安装后默认的5种接收连接器。 接收连接器用于控制发送到Exchange组织的入站邮件流,不同的接收连接器负责监听不同的网络端口,独立控制客户的认证等。 接收连接器的作用域限于单台服务器,及每个接收连接器都属于单台服务器,其设置仅对此台服务器生效。例如,我们在域中部署了多台Exchange服务器,每台服务器都拥有独立的5种接收连接器。 ? 接收连接器按角色分只有两类,分别为:FrontendTransport(前端传输),和HubTransport(集线器传输)。其中,FrontendTransport存在于客户端访问角色服务器,即前端服务器;HubTransport存在于邮箱角色服务器,即后端服务器。 5个默认接收连接器中,FrontendTransport角色有3个,HubTransport角色有2个。因此,如果邮件服务器仅安装前端角色,则只有3个默认接收连接器,如果仅安装后端角色则只有2个默认接受连接器,只有安装了全角色的服务器才包含全部的5个默认接收连接器。 二. 五种接收连接器的区别
三. 邮件客户端若干问题1. 发送匿名邮件Default FrontEnd <Server>接收连接器监听25端口,这是经典的SMTP服务端口,该接收连接器默认允许匿名用户使用,因此,我们可以不经过用户认证,任意填写发件人信息,直接利用该接收器发送邮件。 javax.mail配置:
? 对于其他的接收连接器也是如此,如果允许匿名用户使用,那么邮件客户端就可以不经过认证直接利用对应的连接器发送邮件。为了安全起见,我们应当禁止各个接收连接器允许匿名用户使用。 ? 2. 客户端错误:535 5.7.3 Authentication unsuccessfuljavax.mail配置:
客户端配置正确以后,无法发送邮件,提示: 535 5.7.3 Authentication unsuccessful 即用户认证失败。 2.1 邮箱密码和授权码 对于某些邮件服务提供商,例如网易163等,其邮箱密码不能用于第三方邮件客户端的用户认证,第三方邮件客户端的用户认证需要使用专门的授权码,这一点需要和邮件服务提供商确认清楚。 在这种情况下,在第三方邮件客户端使用邮箱密码进行用户认证会返回认证错误。因此,必须从邮件服务提供商处索取授权码来代替邮箱密码使用。 2.2. Exchange权限组 另外,该错误提示具有相当的误导性。例如,对于Exchange邮箱服务,如果你确定密码正确,用户是合法的,仍然收到了用户认证错误,那么问题可能不在客户端,你需要在邮件服务器对应的接收连接器上开启“Exchange用户”权限组。 ? 3. 25端口屏蔽问题当在客户端使用25端口发送邮件时,可能出现MailConnectException,即无法连接邮件服务器。这是因为一些服务器运营商为了防止25端口被滥用,关闭了该端口。 就阿里云而言,开启了阿里云安全组的25号端口之后,问题依旧。经过测试得知,阿里云的ECS服务器根本没有启用25号端口,25号端口始终处于封禁状态,即便用户手动开启安全组的25号端口也没用。 解决方法除了联系阿里云客服开放25端口之外,就是使用465端口替代。由于465端口和25端口的差异不是简单的端口修改,而是增加了SSL安全协议,因此,代码配置层面上也需要进行对应的修改。 javax.mail配置:
4. Java邮件客户端的“匿名”邮件? 在禁止匿名用户使用邮件服务器之后,使用Java编写邮件发送程序时,必须使用认证用户登录邮件服务器才可以发送邮件。但是,我们仍然可以自定义邮件发件人地址(可以是虚构的,但是需要符合邮件地址格式),在一定程度上实现匿名。
邮件服务器似乎可以对这一行为进行限制,因为在测试过程中,我发现部分用户可以自定义From Header实现匿名,而另外一些用户则不行,会收到报错: 550 5.7.1 Client does not have permissions to send as this sender 暂时不知道在邮件服务器上如何配置以控制这一行为。 是否可以实现收件人匿名呢?
经测试并不可以。 5. Python邮件客户端的“匿名”邮件? 在禁止匿名用户使用邮件服务器之后,使用Python编写邮件发送程序时,必须使用认证用户登录邮件服务器才可以发送邮件。但是,我们仍然可以自定义邮件发件人地址,在一定程度上实现匿名。
需要指出的是,在Python中,可以任意填写From Header,非邮件地址也支持;并且收件人也可以匿名。因此,收到的此类邮件收件人地址和发件人地址都无法展开,匿名程度较高。 在邮件服务器配置相同的情况下,Java邮件客户端某些用户可以伪造发件人地址,其他用户不行,伪造收件人地址后,邮件显示发送成功,但真实的收件人无法收到邮件;而Python中所有用户都可以伪造发件人地址,也可以伪造收件人地址,暂不知道在邮件服务器上如何阻止这一行为。 6. 在 Outlook 中查看 Internet 邮件头(Office 2016)在面临这些匿名邮件时,如何追踪邮件的发件人呢,查看邮件头有一定的帮助。 在Java匿名邮件中,邮件头中有关发件人地址的信息都会被伪造的邮件地址替换,但可以找到发件人的主机信息。 在Python匿名邮件中,邮件头中Return-Path字段会显示真实的发件人地址。 Outlook查看邮件头的方法: a. 双击电子邮件以在阅读窗格外部打开它。 b. 有两条路径: 方式1:单击 "文件 > 属性"。 ? 方式2:点击“邮件 > 标记 > 邮件选项”。 ? c. 邮件头信息显示在“Internet 邮件头”框中。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:33:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |