最近在弄邮件告警相关的东西,接触到了mail这一块,但是发送邮件的时间看到网上的用法 yum install mailx sednmail -y 这一块很迷糊 所以决定自己研究下

  首先套用官话解释:

    mail, mailx都是收发邮件用的,类似浏览器的作用,叫做mail user agent.
sendmail是做邮件服务器的,类似apache, nginx的作用,可以用作mail transport agent
三个概念:
邮件用户代理(MUA,Mail User Agent); 邮件传送代理(MTA,Mail Transport Agent);邮件分发代理(MDA,Mail Deliver Agent)
mail 是用户使用客户端(类似foxmail)负责向MTA 撰写 发送邮件;mailx和mail本职是一样的,只是版本不同,叫法不一样
sedmail就是负责邮件传输的MTA

  好了,我们简单理解下邮件的发送过程:

邮件服务器的传输过程如上所示,其几个重要组件如下:

1)MUA(Mail User Agent):即邮件客户端软件,如Windows的Outlook,客户通过它来浏览、写和收邮件;

2)MTA(Mail Transfer Agent):当你在MUA(如outlook)上点发邮件时,其实它是把邮件发到MTA(如SendMail, Postfix),通过MTA实现发邮件的功能;

3)MDA(Mail Delivery Agent):MDA是挂在MUA下的一个小功能,它的主要功能是分析邮件的表头,决定邮件去向。

邮件传输过程采用的协议如下:

1)SMTP(Simple Mail Transfer Protocal)

邮件接收所需要的组件(MRA)和协议(POP3和IMAP)

邮件接收需要的组件为:

1)MRA(Mail Retrival Agrent):MUA向MRA发送请求接收邮件

邮件接收有两种协议:

1)POP3:当MUA收到邮件后,该协议将默认删除Mailbox里的内容

2)IMAP:当MUA收到邮件后,该协议不删除Mailbox里的内容,所以一定要对每个用户的Mailbox进行容量限制

所以我们可以这样理解:

sendmail 服务跟 mail 命令能不能发邮件没关系。
发邮件只有要 too@too.com 这个地址就行了,查询 too.com MX记录得到这个邮箱 SMTP 服务的地址,直接往这个地址丢就好了。

MUA,MTA这种说法太学术了,说白了MUA就是邮件客户端,thunderbird之类的;MTA就是邮件服务器,比如sendmail,其他的什么MSA,MDA,MRA都是中间环节可以无视。

用mail命令发邮件的过程基本就是

引用:
MUA(mail命令) --SMTP投递--> MTA(too.com的服务器上的sendmail或其他程序) --POP3或IMAP拉取--> MUA(配置了too@too.com的邮件客户端)

sendmail 是用来收邮件的,比如上面这个邮件是没法回的,因为你没填from:说明这封邮件的发件地址,如果你希望对方能够回邮件给你这台机器,那么可能是这样的流程:

引用:
MUA(mail命令, from: abc@def.com) --SMTP投递--> MTA(本地的sendmail服务,def.com的MX记录需要指向这台机器的IP地址) --SMTP投递--> MTA(too.com的服务器上的sendmail或其他程序) --POP3或IMAP拉取--> MUA(配置了too@too.com的邮件客户端)

这样对方就可以沿这条路的反向给你回邮件了。可以看到这里的MTA可以收到邮件存下来,等MUA拿走,也可以把邮件转发给另一个MTA,起到了转发的作用,所以叫做MTA。

至于第二个问题邮件服务器的用户其实最早的时候就是机器用户,abc@def.com就是说def.com的MX记录指向的机器真的有一个abc用户,但比较高级的MTA允许这个用户也配成虚拟的,不与实际用户对应。

所以简单粗暴的理解下就是 如果我们只是想要发送邮件 只需要mail  或者mailx 就可以了,如果我们需要发送邮件并且能收到对方的邮件 我们可能就需要sendmail 服务了。

关于mail mailx 以及sendmail 的理解的更多相关文章

  1. Linux下mail/mailx命令发送邮件

    最近看到项目中经常会用mail/mailx命令发送由java程序生成的report,比较新鲜.下面就简单介绍下mail/mailx命令用法.本文以mail命令举例(mail/mailx)效果都是一样的 ...

  2. CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx

    1.查看软件包是否安装 [root@localhost ~]# rpm -qa|grep mail mailx-12.5-12.el7_0.x86_64 javamail-1.4.6-8.el7.no ...

  3. [PHP] 邮件发送mail()函数失败问题 sendmail命令与postfix

    1. php的mail()函数是可以发送邮件的 , 但是一直就没有测试成功过 , 现在总结一下原因 : php的mail函数 基于sendmail命令来发送 , sendmail命令需要安装postf ...

  4. Linux sendmail 详解

    Internet上最基本的服务,现在应该大部分人都有自己的邮箱吧,用的人多,但理解的人估计没多少,我自己以前也是常常用,但对其原理并不操心.今天就来操心下,进行个小总结 一.邮件服务的基本流程     ...

  5. [转]Linux sendmail 详解

    Internet上最基本的服务,现在应该大部分人都有自己的邮箱吧,用的人多,但理解的人估计没多少,我自己以前也是常常用,但对其原理并不操心.今天就来操心下,进行个小总结 一.邮件服务的基本流程     ...

  6. CentOS6 安装Sendmail + Dovecot + Squirrelmail

    本文记录在本地虚拟机CentOS6上搭建Sendmail + Dovecot + Squirrelmail 的Webmail环境的过程,仅仅是本地局域网的环境测试,不配置DNS, 也没有安全认证,Sq ...

  7. CentOS7 配置Mailx使用SMTP发送邮件

    mail.mailx和sendmail介绍: mail是mailx的别名,最初叫nail(与arch linux目前用的S-nail基因相同):mail是Heirloom的一个子项目.sendmail ...

  8. linux安装mail服务使用外部MTA发送邮件

    阉割版的linux没有mail命令,也没有/etc/mail.rc文件 需要安装mail服务 yum install mailx.x86_64 几个概念:MUA.MTA.MDA 邮件用户代理(MUA, ...

  9. sendmail邮箱部署设置

    前言:在使用一些shell脚本进行监控时需要通过发送报警邮件来提醒,下面通过部署简单的sendmail来实现简单的邮件发送. 1.安装 mailx 和 sendmail: yum install ma ...

随机推荐

  1. SolrCloud配置

    一.简介 Apache Solr是基于Lucene的全文搜索引擎.如何让Solr具有容错性和高可用性,SolrCloud可以帮助我们搭建集群,提供分布式索引,以及自动备份.SolrCloud是Solr ...

  2. python调用系统命令的方法

    1.os模块 (1)system()方法 这个方法是直接调用标准C的system() 函数,在一个子终端运行系统命令 (2)poen()方法 这个方法执行命令后通过一个管道文件将结果返回 3.subp ...

  3. C#中的datatable类型作为参数传入SQL的存储空间

    SQL中首先建立一个结构一样的自定义类型的表格,在存储空间中申明一个此类型的变量,此处注意此时后面必须有readonly,如: @paravalue_insert MaterialStruct rea ...

  4. Day3 && Day4

    本章内容对我来说真的是学的稀里糊涂的,除了前两题吭哧吭哧独立完成,第三题参考了别人的思路外,其余题目均是现学现卖,有点迷啊.所以写这篇博客的目的是先记录下聚聚们对本章内容相关重点的要求,并搜集一些相关 ...

  5. 非线性函数图像表示(GLSL)

    说明:绘图区域x轴(0->1),y轴(0->1); 1.y = 0.5 + sqrt(x * (1 - x)) 2.y = smoothstep(a , b , x) y = smooth ...

  6. 2-0 虚拟机与Linux系统安装

    虚拟机与Linux系统安装 虚拟机硬件选择 由于是初学Linux,所以我们通过在虚拟机里安装的方式学习Linux,如果不知道找虚拟机和Linux的话请看我上一篇博客:计算机基础 如果你已经准备好了虚拟 ...

  7. MATLAB灰色关联度分析

    目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...

  8. 维特比算法及python实现

    先放一张找到的算法流程图: 上图解释: A:状态转移概率矩阵,Aij表示状态i到状态j转换的概率,即P(state=j | state=i).下面代码中以P表示. B:观测矩阵,Bij表示给定状态i, ...

  9. Java 200道题

    1. junit用法,before,beforeClass,after, afterClass的执行顺序 一个测试类单元测试的执行顺序为: @BeforeClass –> @Before –&g ...

  10. C语言|作业07

    一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://i-beta.cnblogs.com/posts/edit;postId=11811545 我在这个课程的 ...