Mail Server:

SMTP:Simple Mail Transfer Protocol 简单邮件传输协议

ESMTP :Extend Simple Mail Transfer Protocol

POP3:Post Office Protocol邮局协议版本3

IMAP4:Internet Mail Access Protocol交互式邮件存取协议

邮件系统的工作:

互联网诞生不久出现了UUCP:Unix to Unix Copy unix主机之间复制文件的协议,指定源主机以及目标主机,这个协议极其的简陋

随着IT产业的发展,出现smtp协议:不仅可以实现简单邮件的传输,还可以实现路由功能,

发送方到目标主机,由smtp实现邮件中继的功能,从而实现路由。smtp工作方式,基于三次握手

SMTP服务包括服务端为:smtpd,客户端为:smtp

服务器端smtpd监听TCP协议的25号端口,客户端smtp占用一般大于5000的端口

smtp工作的简单原理:

服务器想要给客户端发送一封邮件,其首先需要在自己的主机上编辑一封邮件,可以使用shell等文字编辑器,然后发送传输的命令,最忌进行dns戒子,解析到目标主机的ip,接着如同现实生活中的邮递员一样,邮递员并不能够将信件放在收信人的家里的餐桌上,而只是能够将信件放在收信人家对应的邮箱中,而客户端收到来自服务器的邮件也是相同的,smtp服务并不拥有root用户的权限,不在root组里,因此就需要一个能够暂时存放邮件的地方,将邮件存放在客户端的家目录下,当用户阅读完邮件之后,在客户端的家目录下会有一个叫做mbox的文件来存放已经阅读过的邮件,如下所示

1.命令行输入mail查看发送的邮件1

2.按q退出后可以看到saved 1 message in mbox

并且查看家目录下存在一个叫“mbox”的文件

邮件服务的详细过程:

  1. MUA(mail user agent:邮件用户代理)编辑完成邮件之后,将邮件提交给本机上的一个邮件服务器smtpd,而不是直接传输给远程,由邮件服务器来进行分拣,判断将其发送到哪里,分拣为两类,一类是发送给主机的邮件,成为lmtp(本地邮件传输协议),另一类为发向远程的邮件则smtpd调用本地客户端smtp,来连接另一台主机的smtpd服务器端,则本机的smtpd成为MTA(mail transfer agent邮件分拣代理)

2. 当对方smtpd收到邮件之后,通过MD(mail delivery agent邮件投递代理,接着通过自己的MUA查看邮件,保存为自己的mbox中

ps:回复邮件的过程一样的道理,所以对于两台相互发送邮件的主机来说,都拥有smtpd以及smtp

若smtpd发现收到的邮件的目标主机并不是自己,则会将邮件通过smtp将邮件转发给认为是目标主机的smtpd,而且会在邮件上盖戳,以此类推。

openrelay:开放式中继,有被滥用的风险,因此要关闭开放式中继,但是现在的技术已经能够

实现精准的发送,但是其实在主机内部也有中继的实现,并且也可能会发生内部滥用,因此要使用认证的方法来控制用户的使用,从而避免滥用。

所以需要借助于额外的认证工具来实现认证,SASL:(simple authentication secure layer)

简单认证安全层,只需要输入用户的账号以及密码,即可完成认证,服务器上要拥有一个SASL服务器,smtpd通过SASL的认证,从而实现用户的控制,防止滥用

MRA(mail retrival agent )邮件检索代理(取回代理)

Post Office Protocol - Version 3”,即“邮局协议版本3”。

POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

一个邮件系统的实现,需要很多很多的方面的知识,实现一封邮件的发送,通过对于有邮件系统的简单了解,我们接下来可以在自己的linux系统中安装邮件系统。

预知后事如何,请看下回分解。

转载于:https://blog.51cto.com/mi55u/1914086

邮件服务系列之一基础原理相关推荐

  1. Android自定义控件开发系列(零)——基础原理篇

    在后边的文章中发现在说Android自定义时,有时候要重复解释很多东西,所以想想返回来增加一篇"基础原理篇",直接进入正题吧-- 首先的问题是:在Android项目开发中,什么时候 ...

  2. mysql邮箱认证_邮件服务系列postfix+sasl+mysql实现用户认证功能

    1.卸载bind [root@mail ~]# rpm -e bind-utils 2.安装bind97-utils bind97-libs bind97 [root@mail ~]# yum ins ...

  3. 邮件服务 php,PHP基础-邮件服务

    PHP mail() 函数 PHP mail() 函数用于从脚本中发送电子邮件. 语法 mail(to,subject,message,headers,parameters) 参数 描述 to 必需. ...

  4. 创建基于MailKit和MimeKit的.NET基础邮件服务

    邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...

  5. 【飞控开发基础教程10】疯壳·开源编队无人机-PID 基础原理

    COCOFLY教程 --疯壳·无人机·系列 PID 基础原理          图1               一.PID 简介     PID 控制是自动控制系统中最常用的一种控制手段,它的诞生主 ...

  6. 微服务系列:服务注册与发现的实现原理、及实现优劣势比较

    服务注册与发现的来源 首先,服务注册与发现是来自于微服务架构的产物. 在传统的服务架构中,服务的规模处于运维人员的可控范围内.当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定.而在微服 ...

  7. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  8. 基础服务系列-Hyper-V 安装centos7

    2019独角兽企业重金招聘Python工程师标准>>> 前言 docker for windows在Windows10 上安装,各种问题,打算放弃了... 问题1 可能是没有分配IP ...

  9. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

  10. Spring Cloud构建微服务架构:分布式服务跟踪(收集原理)【Dalston版】

    在本节内容之前,我们已经对如何引入Sleuth跟踪信息和搭建Zipkin服务端分析跟踪延迟的过程做了详细的介绍,相信大家对于Sleuth和Zipkin已经有了一定的感性认识.接下来,我们介绍一下关于Z ...

最新文章

  1. 平均年薪50.8万,这个证书真!香!
  2. Android 使用加速度传感器实现摇一摇功能及优化
  3. 散列表查找的一个实例
  4. Alpha 冲刺 —— 十分之八
  5. [转]Linux环境下段错误的产生原因及调试方法小结
  6. Spring-Bean标签属性scope范围
  7. GDCM:dicom文件的SHA1测试程序
  8. 二阶龙格库塔公式推导_DeepFM原理推导
  9. 数据库管理工具DBeaverEE 22 for Mac企业版
  10. 阿里云郑晓:浅谈GPU虚拟化技术(第三章)
  11. ROS实验笔记之——基于ArUco Marker来估算camera的位姿
  12. IE浏览器老是假死怎么办 IE假死的解决办法
  13. python 包络线_如何简明易懂地说明数据包络线分析法(DEA)?
  14. “但行好事 莫问前程 只问耕耘 不问收获 成功不必在我 而功力必不唐捐” 科技袁人·年终盛典——5G是科技时代非常重要的基础设施...
  15. 固态硬盘对于linux提升,固态硬盘在Linux系统下提升使用率妙方
  16. 锁的优化机制了解嘛?请进!
  17. 新造车杀入15万,燃油车慌了?
  18. 基于嵌入式ARM工控主板与X86工控主板的比较
  19. 智慧公寓管理系统解决方案
  20. arthas的监控java性能

热门文章

  1. 第13周 本周个人总结
  2. 七月算法--12月机器学习在线班-第九次课笔记—推荐系统
  3. MySQL二进制包安装简略过程
  4. 转载 关于git的常用命令总结
  5. error:Microsoft Visual C++ 14.0 is required.
  6. POJ 3668 枚举?
  7. 剑指 offer set 5 二进制中 1 的个数
  8. centos7如何添加开机启动服务/脚本
  9. 微软收购开源数据库厂商Citus Data,云数据库服务能力再填新砝码
  10. XAML实例教程系列 - 标记扩展(Markup Extensions)