TCP/IP协议:最流行的电子邮件协议SMTP(简单邮件传输协议)详解

SMTP 是一种电子邮件协议,用于通过互联网从一个电子邮件帐户向另一个电子邮件帐户发送电子邮件。它是TCP/IP协议应用层的一部分。作为一种电子邮件协议,它建立了不同电子邮件客户端和帐户之间轻松信息交换的规则。这样,简单邮件传输协议就可以实现广泛的电子邮件传送。

文章目录

    • 什么是 SMTP 服务器?
    • SMTP工作原理
    • SMTP 命令
    • SMTP 协议端口
    • 比较 SMTP、IMAP 和 POP
    • SMTP协议优点

需要注意的是,SMTP 不是邮件检索协议,收件人仍然需要检索邮件。这意味着它将电子邮件发送到电子邮件提供商的邮件服务器,但使用不同的协议从邮件服务器检索该电子邮件,以便收件人可以阅读它。

SMTP 与IMAP(互联网消息访问协议)和 POP(邮局协议)一样,是最流行的电子邮件协议之一。许多知名的电子邮件客户端(例如 Gmail、Outlook 和 Apple Mail)都支持 SMTP 电子邮件协议来发送消息。

在这里插入图片描述

什么是 SMTP 服务器?

SMTP服务器是能够利用SMTP协议发送电子邮件的邮件服务器。电子邮件客户端直接与电子邮件提供商的 SMTP 服务器连接以启动发送电子邮件。
有两种不同的 SMTP 服务器类型:

  1. 常规 SMTP 服务器
    此类型通常用于发送标准个人电子邮件。此外,此类服务器由电子邮件提供商(例如 Gmail)提供。需要了解的重要一点是,此类服务器通常有严格的每日发送限制。
  2. 专用 SMTP 服务器
    这种类型的 SMTP 服务器非常有用,因为它可以处理批量电子邮件。许多公司也依赖此类服务器来处理交易电子邮件,例如确认购买、确认新闻通讯订阅或重置忘记密码的消息。

SMTP工作原理

简单邮件传输协议创建了在电子邮件客户端和邮件服务器之间交换数据的过程。以下是它如何帮助电子邮件传输:

  1. 打开 SMTP 连接
    由于 SMTP 使用TCP(传输控制协议)作为传输协议,因此需要在客户端和服务器之间建立连接。然后电子邮件客户端可以使用 SMTP 命令(HELO 或 EHLO)启动电子邮件发送过程。
  2. 传输电子邮件数据
    客户端发送多个带有电子邮件内容的命令,例如电子邮件标题和电子邮件正文。
  3. 邮件传输代理 (MTA)
    服务器运行邮件传输代理 (MTA) 程序来检查收件人电子邮件地址的域名。如果与发件人的 IP 地址不同,它将查询域名系统 (DNS)以查找收件人的 IP 地址。
  4. 关闭连接
    一旦数据传输完成,客户端通知服务器。然后最后一步是服务器关闭连接。这样,在客户端打开新的 SMTP 连接之前,服务器不会收到任何其他电子邮件信息。

SMTP 命令

SMTP 命令是文本指令,告诉客户端或服务器如何操作数据以及如何处理数据。此外,它们还通过正确地将传输的数据提供给服务器来帮助客户端。

  • HELO/EHLO:这些命令用于“Hello”并在客户端和服务器之间创建 SMTP 连接。
EHLO example.com
  • MAIL FROM:这提供了有关发送电子邮件的人的详细信息。
MAIL FROM: <sender@example.com>
  • RCPT TO:此命令用于指定电子邮件的收件人。如果有多个接收者,则客户端可以多次发送此命令。
RCPT TO: <recipient@example.com>
  • DATA:准备并启动客户端和服务器之间的信息传输。
  • RSET:此命令重置连接并清除所有先前传输的数据,而不关闭 SMTP 连接。当客户端错误地发送他们想要发送的信息时,通常会使用 RSET。
  • QUIT:使用此命令,连接结束。

SMTP 协议端口

可以使用多个 SMTP 端口作为通信端点来发送电子邮件。在以前,简单邮件传输协议仅使用一个端口:25。现在,它可以使用其他端口,即 465、587 和 2525。

  • 端口 25:它是 SMTP 服务器之间连接的主要使用端口。然而,它经常被云服务提供商和 ISP 阻止,因为犯罪分子不断滥用它发送大量垃圾邮件。
  • 端口 465: 它供带有安全套接字层 (SSL) 的 SMTP 使用。但是,现代电子邮件系统不再使用此端口。
  • 端口 587:它现在恰好是现代应用程序用于电子邮件提交的最佳选择。通过此端口的 SMTP 连接实施 TLS 加密。
  • 端口 2525:它并未与简单邮件传输协议正式关联,但如果常用端口不可用,它可以作为替代方案。

比较 SMTP、IMAP 和 POP

SMTP(简单邮件传输协议)、IMAP(互联网消息访问协议)和 POP(邮局协议)是电子邮件通信中使用的三种基本协议。

SMTP 负责发送电子邮件。它将传出消息从客户端传输到电子邮件服务器,然后电子邮件服务器将消息转发到目的地。这对于可靠的电子邮件传递至关重要。

另一方面,IMAP 和 POP 是接收电子邮件的协议。IMAP(互联网消息访问协议)允许用户直接在电子邮件服务器上访问和管理他们的电子邮件。它可以跨多个设备同步电子邮件,确保一台设备上所做的更改反映在所有其他设备上。

相比之下,POP(邮局协议)将电子邮件从服务器下载到客户端设备,并且通常将其从服务器中删除。它适合想要在本地存储电子邮件的用户。

本质上,SMTP 发送电子邮件,而 IMAP 和 POP 接收电子邮件。IMAP 提供从多个设备的同步和访问,而 POP 主要侧重于将电子邮件下载到单个设备

SMTP协议优点

以下是 SMTP(简单邮件传输协议)的一些主要优点:

  1. 简单

它提供了在特定网络中的不同设备之间通过电子邮件进行通信的最直接的方法。最终用户只需输入电子邮件并将其发送到收件人的电子邮件地址。然后,邮件将进行从 SMTP 服务器到收件人设备的交换服务器的简单过程。

  1. 电子邮件快速发送

由于简单邮件传输协议是基于简单的平台设计的,因此电子邮件的发送速度非常快。此外,使用一台 SMTP 邮件服务器,您可以确保将邮件快速发送给多个收件人。

  1. 可靠性

该协议还为您发出的电子邮件提供可靠性。如果邮件未成功发送,SMTP 服务器将重新发送确切的电子邮件,直到传输完成。使用其他发送电子邮件的方式,您可能需要尝试多次才能传输电子邮件。

  1. 专用服务器

通过 SMTP(简单邮件传输协议),企业有机会实施和使用负责处理外发电子邮件的专用服务器。网络邮件提供商和ISP无法真正提供排他性,这可能会导致电子邮件传输问题。专用 SMTP 服务器在本地维护,可以选择配置以处理任何类型的重要和敏感​​电子邮件。

SMTP(简单邮件传输协议)仍然是最常用标准协议之一。需要发送大量电子邮件的大型企业往往都会自建自己专有的SMTP服务器。

但是电子邮件也面临巨大的安全风险,如何避免各类垃圾邮件预计钓鱼欺诈。可以参考如下博文:

  • 安全知识普及:什么是垃圾邮件和网络钓鱼欺诈
  • 在 Exchange Server 的边缘传输服务器上配置垃圾邮件过滤
  • 善用exchange server自带的反垃圾邮件功能过滤垃圾邮件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/168072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求最小的起始正整数

题目描述 给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。 你需要从左到右遍历 nums 数组&#xff0c;并将 startValue 依次累加上 nums 数组中的值。 请你在确保累加和始终大于等于 1 的前提下&#xff0c;选出一个最小的 正数 作为 startValue 。…

【Rust 日报】2023-11-23 - egui 0.24 发布

项目 - egui 0.24 发布 egui 是一个易于使用的 Rust GUI 库&#xff0c;支持在本地环境和浏览器中运行。 egui 0.24 的重要新特性是多视窗功能。在支持的后端上&#xff08;如eframe&#xff09;&#xff0c;用户可以利用全新的 viewport API 同时生成多个本机窗口。 此外&…

Git 的基本概念和使用方式。

Git 是一个开源的分布式版本控制系统&#xff0c;它可以记录代码的修改历史&#xff0c;跟踪文件的版本变化&#xff0c;并支持多人协同开发。Git 的基本概念包括&#xff1a; 1. 仓库&#xff08;Repository&#xff09;&#xff1a;存放代码和版本历史记录的地方。 2. 分支…

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用

ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用 HarmonyOS,作为一款全场景分布式操作系统,为了推动更广泛的应用开发,采用了一种先进而灵活的编程语言——ArkTS。ArkTS是在TypeScript(TS)的基础上发展而来,为HarmonyOS提供了丰富的应用开发工具,使开…

Educational Codeforces Round 158 (Rated for Div. 2)(A~E)(贪心,树形DP)

A - Line Trip 题意&#xff1a;有一条路&#xff0c;可以用一条数线来表示。你位于数线上的点 0 &#xff0c;你想从点 0 到点 x &#xff0c;再回到点 0。你乘汽车旅行&#xff0c;每行驶 1个单位的距离要花费 1 升汽油。当您从点 0出发时&#xff0c;汽车已加满油(油箱中的…

麒麟linux离线安装dotnet core

1. 下载 dotnet core,以3.1为例 下载地址: 下载 .NET Core 3.1 (Linux、macOS 和 Windows) 查看linux cpu类型,然后根据类型下载 uname -m #结果是: aarch64 2. 放到指定目录,比如:/usr/dotnet 3. 解压dotnet-sdk-3.1.426-linux-arm64.tar.gz cd /usr/dotnet tar –zxvf a…

告别算法暗处:备案带来的光明未来

在当今数字化时代&#xff0c;算法已经成为了企业发展和创新的关键推动力。然而&#xff0c;伴随着算法的广泛应用&#xff0c;数据隐私、知识产权和法规合规等问题也引发了越来越多的关切。为了解决这些问题&#xff0c;越来越多的公司开始意识到算法备案的重要性。本文将深入…

点云从入门到精通技术详解100篇-基于深度学习的稀疏点云障碍物检测(续)

目录 3.1 连续帧点云空间特征融合 3.1.1 点云预处理 3.1.2 地面分割 3.1.3 自适应点云聚类

播放器开发(三):FFmpeg与SDL环境配置

学习课题&#xff1a;逐步构建开发播放器【QT5 FFmpeg6 SDL2】 环境配置 我这边的是使用macOS&#xff1b;IDE用的是CLion&#xff1b;CMake构建&#xff0c;除了创建项目步骤、CMakeLists文件有区别之外的代码层面不会有太大区别。 配置上只添加一下CMakeLists中FFmpeg和SD…

Ubuntu 22.04.3编译AOSP13刷机

文章目录 设备信息下载AOSP并切换分支获取设备驱动编译系统编译遇到的问题Cannot allocate memoryUbuntu设置USB调试刷机参考链接 设备信息 手机&#xff1a;Pixel 4XL 下载AOSP并切换分支 在清华大学开源软件镜像站下载初始化包aosp-latest.tar。 解压缩&#xff0c;切换到…

解决LocalDateTime传输前端为时间的数组

问题出现如下&#xff1a; 问题出现原因&#xff1a; 默认序列化情况下会使用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。使用这个解析时就会打印出数组。 解决方法&#xff1a; 我在全文搜索处理方法总结如下&#xff1a; 1.前端自定义函数来书写 ,cols: [[ //表头{…

[ubuntu]ubuntu上如何彻底卸载C++的opencv而不影响下次安装使用

问题场景&#xff1a;我在ubuntu上安装编译了opencv3.4.4之后我又想安装opencv4.5.0结果装上后&#xff0c;opencv库在系统目录很混乱导致出现cmake项目出现很多错误。因此又想卸载掉opencv3.4.4重新安装opencv4.5.0进去。但是如何卸载呢&#xff1f;我们知道opencv在系统里面有…

Go事件管理器:简单实现

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等&#xff0c;您的关注将是我的更新动力&#xff01; 在编程中&#xff0c;事件管理器是一种常见的工具&#xff0c;用于通过通知来触发操作。在Go语言中&#xff0c;我们可以通过创建…

Langchain的Agents介绍

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Redis -- 介绍

1、NoSQL: 指的是非关系型数据库&#xff0c;主要分成四大类&#xff1a;键值存储数据库、列存储数据库、文档型数据库、图形数据库。 2、什么是Redis&#xff1a; Redis是一种基于内存的数据库&#xff0c;一般用于做缓存的中间件。 3、Redis的主要的特点&#xff1a; 1、Rd…

C++ 多线程锁

目录 1. mutex2. lock_guard3. unique_lock 是 lock_guard 的升级加强版4. condition_variable5. 调用 #include “thread” #include “mutex” #include “iostream” //! std::thread //! jion 阻塞式&#xff0c; .join()后面的代码等待线程结束 //! detach 非阻塞式&#…

一、TIDB基础

TIDB整个逻辑架构跟MYSQL类似&#xff0c;如下&#xff1a; TIDB集群&#xff1a;相当于MYSQL的数据库服务器&#xff0c;区别是MYSQL数据库服务器为单进程的&#xff0c;TIDB集群为分布式多进程的。 数据库&#xff1a;同MYSQL数据库&#xff0c;数据库属于集群&#xff0c;…

SSL握手失败的解决方案

一、SSL握手失败的原因&#xff1a; 1&#xff0c;证书过期&#xff1a;SSL证书有一个有效期限&#xff0c;如果证书过期&#xff0c;就会导致SSL握手失败。 2&#xff0c;证书不被信任&#xff1a;如果网站的SSL证书不被浏览器或操作系统信任&#xff0c;也会导致SSL握手失败…

线性代数的艺术

推荐一本日本网友Kenji Hiranabe写的《线性代数的艺术》。这本书是基于MIT大牛Gilbert Strang教授的《每个人的线性代数》制作的。 虽然《线性代数的艺术》这本书仅仅只有12页的内容&#xff0c;就把线性代数的重点全画完了&#xff0c;清晰明了。 《线性代数的艺术》PDF版本&…

mysql 变量和配置详解

MySQL 中还有一些特殊的全局变量&#xff0c;如 log_bin、tmpdir、version、datadir&#xff0c;在 MySQL 服务实例运行期间它们的值不能动态修改&#xff0c;也就是不能使用 SET 命令进行重新设置&#xff0c;这种变量称为静态变量。数据库管理员可以使用前面提到的修改源代码…