邮件发送/接收过程分析、常见邮箱sport/dport列举、检测规则开发思路分析

一、邮件发送和接收过程分析

(转载自:邮件的发送和接收过程——STMP、POP、IMAP、MIME_当收件人接收电子邮件时自己的邮件服务器通过什么收文件-CSDN博客)

电子邮件发送协议 是一种基于“ 推 ”的协议,主要包括 SMTP ; 邮件接收协议 则是一种基于“ 拉 ”的协议,主要包括 POP协议 和 IMAP协议 ,在正式介绍这些协议之前,我们先给出邮件收发的体系结构:

        从上图可以看出邮件收发的整个过程大致如下:

       (1)发件人调用用户代理编辑要发送的邮件。

       (2)发件人点击屏幕上的”发送邮件“按钮,把发送邮件的 工作全部交给用户代理来完成。用户代理通过SMTP协议将邮件发送给发送方的邮件服务器(在这个过程中,用户代理充当SMTP客户,而发送方的邮件服务器则充当SMTP服务器)。

       (3)发送方的邮件服务器收到用户代理发来的邮件后,就把收到的邮件临时存放在邮件缓存队列中,等待时间成熟的时候再发送到接收方的邮件服务器(等待时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量 )。

       (4)若现在时机成熟了,发送方的邮件服务器则向接收方的邮件服务器发送邮件缓存中的邮件。在发送邮件之前,发送方的邮件服务器的SMTP客户与接收方的邮件服务器的SMTP服务器需要事先建立TCP连接,之后再将队列中 的邮件发送出去。值得注意的是,邮件不会在因特网中的某个中间邮件服务器落地 。

       (5)接收邮件服务器中的SMTP服务器进程在收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

       (6)收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。 注意,在这个过程中,收件人是POP3客户,而接收邮件服务器则是POP3客户,箭头的方向是从邮件服务器指向接收用户,因为这是一个“拉 ”的操作 。

       下面我们根据上面的总体过程介绍下各个组件。

        1.用户代理

        用户代理UA ( User Agent )是一个软件包(程序),它的功能是:撰写、阅读、回复和转发报文,还能处理邮箱(如创建收信箱和发信箱)。共有两种类型的用户代理: 命令驱动 和GUI 。 命令驱动 属于早期的电子邮件,通过命令发送和接收邮件,而GUI 则是包含图形界面,允许用户使用键盘和鼠标与软件进行交互。 

       2. SMTP协议

        SMTP协议 服务器的熟知端口号为25 ,与之前总结过的telnet协议和FTP协议类似的地方是,SMTP协议的客户端和服务器端都是通过命令和响应的形式进行交互 ,即SMTP客户通过命令向SMTP服务器发送操作请求,而服务器则通过3位的数字对响应的请求作出响应。SMTP规定了14条命令和21中应答信息,每条命令有4个字母组成,而每一种应答一般只有一行信息,有一个3位数字的代码开始,后面附上很简单的附加说明。

       邮件传送主要包括3个阶段: 建立连接 、 邮件传送 和 终止连接 。

       建立连接阶段:

       1.当SMTP客户端每隔一定时间对邮件缓存扫描一次,如发现有邮件,就使用SMTP的熟知端口号25与接收方的邮件服务器的SMTP服务器建立TCP连接。

       2.接收方SMTP服务器发出“220 Service ready"告诉客户端它已经准备好接收邮件。若服务器未就绪,它就发送代码421(服务器不可用)。

       3.客户发送HELO报文,并使用它的域名地址标志自己。目的是:用来把客户的域名通知服务器,值得注意的是, 在TCP的连接建立阶段,发送方和接收方都是通过它们的IP地址来告诉对方的 。(HELO报文是最初的,用户名和密码都不加密。现在改为EHLO,用户名和密码都进行base64编码发送)

       4.服务器响应代码250(请求命令完成)或根据情况的其他一些代码。

      报文传送阶段:

       在SMTP客户与服务器之间建立连接后,发件人就可以与一个或多个收件人交换单个的报文了。若收件人超过一个,则下面步骤3和步骤4将重复进行。

        1.客户发送MAIL FROM报文介绍报文的发送者。它包括发送人的邮件地址(邮箱名和域名,如house@qq)。这个步骤是必要的:因为可以给服务器在返回差错或报文时的返回邮件地址 。

        2.服务器响应代码250(请求命令完成)或其他适当的代码。

        3.客户发送RCPT(收件人)报文,包括收件人的邮件地址,RCPT命令的作用是 : 先弄清接收方系统是否已经准备好接收邮件的准备,然后才发送邮件,这样做视为了避免浪费通信资源,不至于发送了很长的邮件以后才知道是因地址错误 。

        4.服务器响应代码250或其他适当的代码。

        5.客户发送DATA报文对报文的传送进行初始化,DATA命令表示要开始传送邮件的内容了。

        6.服务器响应代码"354 Start mail input: end with <CRLF>.<CRLF>"或其他适当的报文(如421 服务器不可用,500 命令无法识别)。

        7.客户用连续的行发送报文的内容。每一行的行结束时输入 <CRLF>.<CRLF> ,即回车换行.回车换行,表示邮件内容结束。

        8.服务器响应代码(250 请求命令完成)或其他适当的代码。

        值得注意的是:虽然SMTP使用TCP连接试图使邮件的传送可靠,但它并不能保证不丢失邮件。也就是说,使用SMTP传送邮件只能说可以可靠地传送接收方的邮件服务器,在往后的情况就不知道了。接收方的邮件服务器也许会出故障,使收到的服务器全部丢失(在收件人读取信件之前)。

        终止连接

        在报文传送成功后,客户就终止连接。包括如下步骤:

        1.客户发送QUIT命令。

        2.服务器响应221(服务关闭)或其他代码。

        在连接终止阶段后,TCP连接必须关闭。

        3.POP协议

        POP协议, Post office Protocal 。邮件交付的第一阶段和第二阶段使用SMTP,而第三阶段则使用邮件读取协议。SMTP是一个push协议,而第三阶段则使用pull协议,包括POP和IMAP协议,POP主要使用POP3,而IMAP协议则主要使用IMAP4 。

        POP3采用C/S的工作方式。在接收邮件的用户PC机中的用户代理UA必须运行POP3的客户程序,而在收件人所连接的ISP的邮件服务器中则运行POP的服务器程序。POP服务器只有在用户输入鉴别信息(用户名+密码)后,才允许对方对邮箱进行读取 。

        POP3有 两种工作方式 :删除方式和保存方式。删除方式 就在每一次读取邮件后就把邮箱中的这个邮件删除, 保存方式 就是在读取邮件后仍然在邮箱中保存这个邮件,该方式是通过对之前的POP3工作方式(即删除)的缺点进行弥补,对功能进行扩充。

         4. IMAP协议

        IMAP协议, Internet Mail Access Protocal (因特网邮件读取协议)。 IMAP协议比POP3协议复杂的多,也是按照C/S的工作方式,现在较新的版本是IMAP4。

        在使用IMAP时,用户的PC机上运行IMAP客户程序,然后与接收方的邮件服务器上的IMAP服务器程序建立TCP连接。 POP3不允许用户在邮件服务器上整理自己的邮件,用户在服务器上不能不同的文件夹,POP3也不允许用户在下载邮件之前读取邮件的部分内容,而IMAP则克服了这些POP3的缺点,说白了就是POP3协议不太愿意让用户直接操作服务器,而IMAP正好客户了这些缺点 。

        IMAP4提供了以下功能( 这些功能POP3则没有 ):

        1.用户在下载邮件之前可以检查邮件的首部。

        2.用户在下载邮件之前可以用特定的字符串搜索电子邮件的内容。

        3.用户可以部分地下载电子邮件。

        4.用户可以在邮件服务器上创建、删除邮箱,或对邮箱重命名。(IMAP是双向的,可以同步本地修改到服务端;POP只能同步服务端到本地)

        5.为了存放电子邮件,用户可以在文件夹中创建分层次的邮箱。

        注意 :不用把邮件的发送协议SMTP协议与邮件的读取协议POP或IMAP协议弄混淆了。发送人的UA向发送邮件服务器发送邮件,以及发送方的邮件服务器向接受方的邮件服务器发送邮件都是采用SMTP协议,而收件人的UA从邮件接收服务器中接收文件则采用的是POP协议或IMAP协议。

       5. MIME

        MIME协议( Multipurpose Internet Mail Extensions ),通用因特网邮件扩充协议 ,作为SMTP的一种辅助协议,其引入是为了克服SMTP的如下不足:

        1.SMTP只能发送使用NVT( 虚拟网络终端 ) 7位ASCII码格式的报文,它不能使用NVT 7位ASCII码不支持的语言(如汉语,日语,德语等)。

        2.SMTP不能传送可执行文件或其他二进制对象(如图像文件)。

        3.SMTP不支持音频或视频文件。

        4.SMTP发送的邮件的长度受到限制。

        为了克服以上的不足,便引入了MIME协议,MIME协议是一种扩展协议性的辅助协议,“扩充”指的是只是对原来协议的扩展,而不是取代。它允许非ASCII码数据能够通过电子邮件传送。MIME在发送方把非ASCII码数据转换为NVT ASCII数据,之后的工作再交给SMTP完成,在接收方再将NVT ASCII数据还原成原来的数据。MIME的体系结构如下:

       MIME定义了5种首部,用来加在原始的电子邮件部分以定义参数的转换,这五种首部分别是: MIME-Version(MIME版本 )、 Constent-Type ( 内容类型 )、 Content-Transfer-Encoding ( 内容-传送-编码 )、 Content-Id ( 内容-标识 )和 Content-Description ( 内容描述 )。

        MIME版本 :定义了MIME使用的版本。

       内容-类型 :定义报文主体使用的数据类型和子类型,用<数据类型/子类型>表示。

        内容-传送-编码 :定义了邮件的主体在传送时是如何编码的。

       内容-标识 :在多报文的环境中唯一地标识报文。

        内容描述 :定义了主体是否为图像、音频或视频。

        6. 基于WWW的邮件

        基于WWW的邮件收发系统的体系结构与普通的电子邮件收发系统不同,基于WWW的邮件收发系统的整个过程描述如下:

        1.从发送者的浏览器传送到发送方邮件服务器是通过HTTP协议(而一般的则是通过SMTP协议)。

        2.从发送方服务器到接收方邮件服务器是通过SMTP协议(与一般的相同)。

        3.从接收方到接收者是通过HTTP协议(而一般的则是POP3协议或IMAP协议)。

        具体如下图所示:

参考资料

[1]《计算机网络(第5版) 谢希仁》

[2]《TCP/IP协议族 第4版》

二、常见邮箱发送端口和接收端口列举

(转载自:常用邮箱SMTP/POP3地址及端口_smtp端口-CSDN博客)

GMAIL:

接收邮件服务器: pop.gmail.com

接收端口: 995(必须使用ssl)

发送邮件服务器: smtp.gmail.com

发送端口: 465(必须使用ssl)或者587(TLS/STARTTLS)

IMAP接收邮件服务器: imap.gmail.com

接收端口: 993(必须使用ssl)


163邮箱(126类似163,参照即可):

接收邮件服务器: pop.163.com

接收端口: 110或995(使用ssl时)

接收邮件服务器: imap.163.com

接收端口: 143或993(使用ssl时)

发送邮件服务器: smtp.163.com

发送端口: 25或465/994(使用ssl时)


126邮箱:

接收邮件服务器: pop.126.com

接收端口: 110

发送邮件服务器: smtp.126.com

发送端口: 25


QQ邮箱:

接收邮件服务器: pop.qq.com

接收端口: 110或995(使用ssl时)

接收邮件服务器: imap.qq.com

接收端口: 143或993(使用ssl时)

发送邮件服务器: smtp.qq.com

发送端口: 25或465/587(使用ssl时)


雅虎邮箱:

接收邮件服务器: pop.mail.yahoo.cn

接收端口: 110或995(使用ssl时)

接收邮件服务器: imap.mail.yahoo.cn

接收端口: 143或993(使用ssl时)

发送邮件服务器: smtp.mail.yahoo.cn

发送端口: 25或465(使用ssl时)


SINA邮箱:

 接收邮件服务器: pop.sina.com

接收端口: 110

发送邮件服务器: smtp.sina.com

发送端口: 25


YEAH邮箱:

接收邮件服务器: pop.yeah.net

接收端口: 110

发送邮件服务器: smtp. yeah.net

发送端口: 25


HOTMAIL:

接收邮件服务器: pop3.live.com

接收端口: 995

发送邮件服务器: smtp.live.com

发送端口: 25

三、检测到短时间内内网主机向互联网设备发送大量大流量SMTP流量【原创】

1、需求拆分:

  • 内网主机:源IP应该在内网主机清单中
  • 互联网设备:目的IP不在内网主机清单中
  • 短时间内:可以为1h/5h等
  • 大量流量:次数 >= 阈值(可以预置为10次)
  • 大流量:①上行字节数/上行包数 >= 阈值(可以预置为80);②下行字节数/下行包数 >= 阈值(可以预置为80)
  • SMTP流量:源端口 属于 (25|465|587|994,后者为加密发送情况)

2、检测规则思路:

  • 数据源:TCP流量日志/UDP流量日志
  • 命中逻辑:
    • sip in 对象资源:内网主机IP
    • dip not in 对象资源:内网主机IP
    • 上行字节数/上行包数 >= 80
    • 下行字节数/下行包数 >= 80
    • dport in (25|465|587|994)
    • 应用 in (SMTP/SMTPS)
  •  检测时间:1h
  • 归并分组:sip
  • 统计次数:count >= 10

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

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

相关文章

javaweb day3 day4 day5

js 引入方式 写法 基础语法 写法 变量 写法 数据类型 运算符 与java相同 会判断类型是否相同 循环控制语句 和java相同 函数&#xff08;方法&#xff09; 写法 Array数组 写法 string字符串 写法 js自定义对象 写法 JSON 写法 BOM window 写法 location 写法 DOM 案例…

TensorFlow2.x 精选笔记(1)数据基本操作与线性代数

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning 一、数组与张量 虽然张量看起来是复杂的对象&#xff0c;但它们可以理解为向量和矩阵的集合。理解向量和矩阵对于理解张量至关重要。 向量是元素的一维列表&#xff0c;向量是一…

【这个词(Sequence-to-Sequence)在深度学习中怎么解释,有什么作用?】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习笔记 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Sequence-to-Sequence&#xff08;Seq2Seq&#xff09; Sequence-to-Sequence&#xff08;Seq2Seq…

【深度学习笔记】卷积神经网络——填充和步幅

填充和步幅 在前面的例子 fig_correlation中&#xff0c;输入的高度和宽度都为 3 3 3&#xff0c;卷积核的高度和宽度都为 2 2 2&#xff0c;生成的输出表征的维数为 2 2 2\times2 22。 正如我们在 sec_conv_layer中所概括的那样&#xff0c;假设输入形状为 n h n w n_h\tim…

linux前端部署

安装jdk 配置环境变量 刷新配置文件 source profile source /etc/profile tomcat 解压文件 进去文件启动tomcat 开放tomcat的端口号 访问 curl localhsot:8080 改配置文件 改IP,改数据库名字&#xff0c;密码&#xff0c; 安装数据库 将war包拖进去 访问http:…

伪装成简历的攻击样本,HR小伙伴注意啦

样本简介 样本伪装成个人求职简历进行钓鱼攻击&#xff0c;名称为简历.docm&#xff0c;如下所示&#xff1a; 打开简历样本之后&#xff0c;提示包含宏代码&#xff0c;如下所示&#xff1a; 查看简历内容&#xff0c;发现竟然还是伪造的一份安全研究人员的简历&#xff0c;而…

前端学习——vue学习

文章目录 1. < el-form> 属性 model、prop、rules2. v-bind 与 v-model3. v-if 与 v-show4. v-for 循环语句5. 计算属性 computed6. 监视属性 watch7. 下拉框 el-select、el-option8. 自定义事件9. async与await实现异步调用 1. < el-form> 属性 model、prop、rule…

如何通过沉浸式翻译插件来高效阅读英文技术网站、英文文献

对于英语非母语的同学来说&#xff0c;阅读英文文档、英文技术博客、社区时经常会需要查询字典&#xff0c;打断了常规的阅读&#xff0c;效率极低&#xff0c;这时可以借助一款AI翻译插件&#xff08;沉浸式翻译&#xff0c;支持GPT翻译、谷歌翻译、百度翻译、有道翻译等&…

33.云原生之Istio管理任何七层流量

云原生专栏大纲 文章目录 Istio存在的问题Aeraki介绍Aeraki 的解决方案支持的协议支持的特性 安装AerakiAeraki教程采用 ServiceEntry 的 Demo 应用使用 Dubbo2Istio 对接 Dubbo 注册表 的 Demo 应用&#xff08;Interface 级流量治理&#xff09; Service Mesh 中有大量的七层…

【深度学习】SSD 神经网络:彻底改变目标检测

一、说明 Single Shot MultiBox Detector &#xff08;SSD&#xff09; 是一项关键创新&#xff0c;尤其是在物体检测领域。在 SSD 出现之前&#xff0c;对象检测主要通过两阶段过程执行&#xff0c;首先识别感兴趣的区域&#xff0c;然后将这些区域分类为对象类别。这种方法虽…

面试经典150题——快乐数

​"Success is not final, failure is not fatal: It is the courage to continue that counts." - Winston Churchill 1. 题目描述 2. 题目分析与解析 2.1 思路一 还是最简单的&#xff0c;模拟最直观的思路&#xff0c;就是进行一个while循环。比如&#xff1a;…

Oracle迁移到mysql-导出mysql所有索引和主键

导出建库表索引等&#xff1a; [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引&#xff1a;参考&#xff1a;MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…