邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)

1. 前言

使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面,里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问:什么是SSL?什么是STARTTLS?两者有什么区别?具体该如何选择呢?可以带着这些问题阅读本文,希望可以为你解惑。

2. 什么是SSL/TLS?

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是用于在互联网上传输数据时提供安全性的两种协议,它们主要用于保护客户端与服务器之间的通信不被窃听、篡改和伪造。

SSL由Netscape公司在1994年推出,经历了SSL 2.0、3.0几个版本。

TLS则是由IETF接手并标准化,TLS 1.0是基于SSL 3.0发展而来并在1999年发布,随后又有了TLS 1.1、1.2、1.3等多个版本。

3. 什么是STARTTLS?

STARTTLS 是一种网络协议扩展机制,它允许在传统的非加密网络服务(如SMTP、POP3、IMAP)之上增强安全性。通过STARTTLS,客户端和服务器可以在已建立的非加密连接基础上协商升级加密传输(TLS或SSL),而不用要求用户去配置专门的加密端口。

4. SSL/TLS协议使用现状

SSL目前已被视为过时且不安全,最新的浏览器和服务器都已经停止支持SSL协议。

TLS则不断演进以适应新的安全挑战,TLS 1.3相较于之前的版本进一步提升了速度和安全性,属于目前主流使用的版本。

testssl.sh工具检测465端口结果

上图是通过testssl.sh工具检测某邮件系统465端口(SMTP协议加密端口)的结果,从结果可以看出在其服务端已不支持SSLv2、SSLv3协议,仅支持TSL1.2和TLS1.3版本。

注:想了解testssl.sh工具的同学,可以访问 /bin/bash based SSL/TLS tester: testssl.sh

5. 客户端配置TLS/SSL或者STARTTLS?

5.1 SSL/TLS

温馨提示:SSL协议已经被主流邮件系统抛弃。不要被Foxmail客户端的SSL选项所迷惑,勾选SSL时其实客户端会优先采用TLS协议与服务端建立连接。如果某些旧版的邮件客户端不支持TLS新版的协议,则建议升级客户端。

以Outlook和Foxmail配置为例,我们可以看到在配置POP3、IMAP、SMTP等协议时,客户端界面有提供相应选项。如下图所示。

Outlook 2019 SSL/TLS配置界面

Foxmail客户端用户勾选“SSL”选项与在Outlook客户端中用户选择“SSL/TLS”效果相同。此时需要修改对应协议的端口号,Foxmail相对智能一些,可以自动带出对应的端口号。

SSL/TLS加密端口号对应关系如下:

  • SMTP:465
  • POP3:995
  • IMAP:993

采用这种方式,表示客户端与服务端在最初建立的就是加密传输连接。

5.2 STARTTLS

Foxmail客户端勾选“如果服务器支持,就使用STARTTLS加密传输”与Outlook中选择“STARTTLS”效果相同,此时依赖的是邮件服务端协议的支持能力,服务端提供的SMTP/POP3/IMAP协议需要支持STARTTLS指令

客户端配置协议端口号填写非加密端口号即可。非加密普通端口号对应关系如下:

  • SMTP:25
  • POP3:110
  • IMAP:143

注:下面是Coremail系统SMTP协议支持STARTTLS指令的一个示例,是否支持该指令取决于邮件服务端的能力。

EHLO test17.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrvyBxsUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
STARTTLS
220 Ready to start TLS

6. 结束语

邮件客户端可以通过启用SSL/TLS或STARTTLS来实现传输层加密,具体选择哪一种方式取决于邮件服务端、邮件客户端的支持能力。主流的邮件系统和客户端对这两种方式都有很好的支持。

启用传输层加密可以有效防止邮件在数据传输过程中被窃取,但是无法防止中间人攻击。如果想实现邮件内容的端到端加密,建议搭配使用S/MIME。

参考来源:邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS) | MailABC邮件知识百科

相关推荐

  1. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       47 阅读
  2. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       48 阅读
  3. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       39 阅读
  4. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       42 阅读
  5. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       44 阅读
  6. C++ 邮件槽ShellCode跨进程传输

    2024-07-20 14:18:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 14:18:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 14:18:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 14:18:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 14:18:01       55 阅读

热门阅读

  1. tmp - configmap动态更新配置?

    2024-07-20 14:18:01       18 阅读
  2. ENSP常见命令及协议命令

    2024-07-20 14:18:01       18 阅读
  3. LeetCode 221. 最大正方形

    2024-07-20 14:18:01       18 阅读
  4. Vue中Key的作用

    2024-07-20 14:18:01       14 阅读
  5. VMware 虚拟机 ping 不通原因排查

    2024-07-20 14:18:01       21 阅读
  6. 数据响应式(Object.defineProperty和Proxy)

    2024-07-20 14:18:01       14 阅读
  7. 云计算的三种服务模式

    2024-07-20 14:18:01       17 阅读
  8. wps的xls文件,如何过滤掉空白没有数据的行

    2024-07-20 14:18:01       16 阅读
  9. Provider(5) - AdjustChannelsBufferProvider

    2024-07-20 14:18:01       16 阅读