传统的Sendmail将所有功能都集中在同一个程序里,这种结构我们称之为“单体式设计”(monolithic).Postfix采用专职负责的策略,不同的功能分别交由不同的专门程序处理,这种结构称为“模块化设计”(modular)。这些自成一格的专门程序,我们称之为组件(component)。大多数组件都是以daemon的形式存在,也就是常驻在系统内存里的连续动作的后台进程(background process)。
  当Postfix被启动后,首先启动的是master daemon,它主导邮件的处理流程,同时也是其他组件的总管。在处理邮件的过程中,master会启动对应功能的组件来处理相关事宜,被master启动的组件,在完成交付的工作之后会自行结束;或者,如果组件的处理时间超过时限,或是工作量到达预定限度,组件也会自行结束。master daemon会常驻在系统中,当管理员启动它时,它从main.cf和master.cf这两个配置文件取得启动参数。

Postfix内部收信、发信流程图


整个处理流程分为三个阶段:接收邮件、将邮件排入队列、递送邮件。每个阶段由一组独立的Postfix组件负责。当一封邮件被收下并排入队列之后,队列管理器(Queue Manager)会启动适当的MDA,将邮件送到终点。

邮件如何进入Postfix系统

邮件有四种渠道可以进入Postfix系统:
  1、Postfix可接受来自本机系统的邮件(本机用户或自主进程提交的邮件)。
  2、Postfix可接受网络传入的邮件(来自MUA或者其他MTA)。
  3、已经被Postfix收下并交给MDA的邮件,被MDA传回到Postfix(通常是为了转寄到另一个地址)。
  4、当Postfix无法将邮件寄到目的地时,自己会产生退信通知函。
  邮件有可能在进入Postfix之前就被拒绝了,或者因为暂时性的故障(网络断线、远程服务器响应暂时性的错误等),同样的邮件可能会每隔一段时间就重复进入Postfix系统一次,重新递送。

来自服务器本机的邮件

各个Postfix组件之间的合作全靠队列(Queue)交换邮件、Postfix系统有多个队列,这些队列全部队列管理器(Queue Manager)负责控制管理。Postfix组件可将邮件交付给Queue Manager,由其代为放入适当的队列。当需要处理特定工作时,Queue Manager将队列里的邮件交付给正确的组件。
  在Unix系统上,当用户要寄出邮件时(不管这封信是寄到哪里),通常是使用sendmail包内的sendmail命令。Postfix提供了一个与此命令兼容的同名工具,也称为sendmail。当用户以Postfix的sendmail寄出邮件后,sendmail(postfix的版本)会使用postdrop程序将邮件存入Postfix队列目录下的maildrop/子目录。专门注意maildrop子目录有无变化的是Pickup Daemon,每当有新的邮件进入maildrop时,Pickup Daemon便会读出新邮件,然后交给cleanup daemon进入“清理程序”。
  当邮件刚进入Postfix时,不一定含有构成有效邮件的所有必要字段,而且标头里的地址也可能需要被改写成标准格式(user@domain.tld),并依据规范的或虚拟的查询表(如果有的话)将原本的地址改成其他地址。所谓的“清理程序”就是补足遗漏的标头字段,这部分工作由cleanup daemon负责;地址的处理由Trivial-Rewrite Daemon负责。
  经过Cleanup Daemon处理好的邮件,会被传入收件队列(Incoming Queue)。Queue Manager会不断的注意收件队列的变化,每当有新邮件进入收件队列时,便会用适当的MDA将邮件送到下一站,或直接送到最终目的地。

来自网络的邮件

来自网络的邮件由Postfix Smtpd Daemon接收进来,然后交给Cleanup Daemon运行清理程序,随后排入收件队列,由Queue Manager选择适当的MDA将邮件送到下一站或最终目的地。Smtpd有可能收到两种邮件,第一种是外界寄给Postfix所控制的网域的邮件(Postfix系统本身是邮件的终点站或网关),另一种是要寄到其他网域的邮件。
  Smtpd一定会收下第一种邮件(如果收件人存在的话),至于第二种邮件(目的地在其他网域),就要看传邮件过来的客户端是否有资格。网络收下要寄到其他网域的邮件,并代为寄送到目的地的动作称为转发(relay)。在两种情况下,Postfix愿意提供转发服务:一是客户端符合配置文件限定的资格,二是收信网域是relay_domain参数所列出的网域之一。

通知函

当用户的邮件被延时时,或是根本无法递送到目的地时,Postfix使用Defer或Bounce Daemon产生一封新的通知函。这封通知函会被交给Cleanup Daemon,由它进行例行的清理程序之后再排入收件队列,由Queue Manager接手处理。

转寄邮件

有时候,邮件在委托给MDA之后,MDA会发现该邮件其实应该寄送到另一个系统的另一个账户。比如说,当MDA在用户个人的forward文件发现了另一个地址时,就会发现这种情况。照理说,MDA可以直接使用Smtp Client(即Smtp Daemon)送出邮件。不过,由于同一封信可能有多位收件人,为了照顾到每一位收件人,同时也为了在邮件日志上留下完整记录,MDA应该依提交新邮件的方式,让邮件重新回到Postfix系统,由Postfix按照“来自本机的邮件”的程序来处理。

Postfix的队列管理器

邮件本身的处理工作主要是由队列管理器(Queue Manager)负责,每一个能收到邮件的Postfix组件,都有一个共同的目的地--队列管理器。邮件进入队列之前的关卡是Cleanup Daemon,因为只有经过清理的邮件,才有资格进入队列。Cleanup将邮件排入队列后,会通知Queue Manager去处理新邮件。每当Queue Manager察觉收信队列有新信到达时,就会使用Trivial-Rewrite来决定邮件路由信息,这些信息包括传输方法、下一站以及收件人地址。
  Queue Manager总共维护四种队列:收件(Incoming)、活动(Active)、延迟(Deferred)、故障(Corrupt)。新邮件通过Cleanup之后的第一站是“收件队列”。假设系统资源空闲。Queue Manager会将邮件移入“活动队列”,然后调用适当的MDA来投递邮件,而投递失败的邮件则会被移入“耽搁队列”。
  如果邮件被耽搁太久,或是被判定无法送达,则Queue Manager还要负责协调Bounce与Defer Daemons来产生一份递送状态报告,并传回给系统管理员或送信者(或两者)。在Postfix的队列目录下(默认位置是/var/spool/postfix/),除了上述四种邮件队列目录之外,还有bounce/与defer/目录。这些目录含有状态信息,解释特定邮件为何被耽搁或无法递送,Bounce与Defer Daemon就是利用这些目录下的状态信息来产生通知函。

投递操作

Postfix依据收件地址的类型,来判断是否要收下邮件以及如何进行投递操作。主要的地址类型有本地(Local)、虚拟别名(Virtual Alias)、虚拟邮件(Virtual Mailbox)以及转发(Relay)。如果收件地址不在这四种主要类型之中,则邮件会被交给Smtp Client,通过网络寄送出去(假设原信是来自有资格使用转发服务的客户端);否则,Queue Manager便依据地址的类型,选择适当的MDA来投递邮件。
  

本地邮件

  如果收件人为Postfix本地系统的用户(在运行Postfix的那台服务器上有Shell账户的用户),则他们的邮件会被交给Local MDA处理,凡是收件地址的网域名称与mydestination参数列出的任一网域名称相符,这类邮件都算是本地邮件,对于送到任何mydestination网域的任何有效账户的邮件,Local MDA会先检查收件人是否有个人的.forward文件,如果没有,则邮件会被存入用户的个人邮箱;否则,则依据.forward文件的内容来进行投递操作(或转寄到其他地方,或是交给外部程序处理)。
  对于需要转寄到他处的邮件,将会被重新提交会Postfix,以便传送到新地址。如果传送过程发生了暂时性问题,MDA会通知Queue Manager,而邮件会被保存在延迟队列等待下次的递送机会;如果发生永久性问题,则要求Queue Manager将信息退给发信者。
  

虚拟别名邮件

  寄给虚拟别名地址的邮件,全部都需要转寄(Forward)到其真实地址,虚拟别名的网域名称列在virtual_alias_domains参数中,每一个虚拟网域都可以有自己的一组用户,不同的虚拟网域可以容许有同名的用户。用户与其真实地址之间对应关系,列在virtual_alias_maps参数所指定的查询表中。当Queue Manager发现邮件的收件地址的网域部分virtual_alias_domains所列出的网域之一,则会重新提交邮件,以便传到真实地址。
  

虚拟邮箱邮件

  虚拟邮箱的网域名称列在virtual_mailbox_domains参数中。每一个网域都可以有自己的用户群,而且有各自独立的命名空间,换言之,即不同的虚拟邮箱网域可以有同名的用户。用户与邮箱之间的对应关系,定义在virtual_mailbox_maps参数所指定的查询表中,虚拟邮箱与系统上的Shell账户之间没有关联性,虚拟邮箱邮件的投递操作由Virtual MDA负责运行。
  

转发邮件

  实际邮箱位于其他MTA控制管理的网域,但是Postfix愿意代收并转寄的邮件,称为转发邮件。这类网域的名称列在relay_domains参数中,其邮件由smtp MDA通过网络送到目标网域的MTA。当你假设邮件网关系统时,便可利用转发功能收下Internet寄到内部网域的邮件,并转寄到内部网络的邮件系统上。
  

其他邮件

  如果邮件的收件地址不属于前述四类,则一律交给Smtp以递送到正确地点,因为这类邮件必定是要送到系统本身之外的其他网域。先前在“来自网络的邮件”曾说过,并非所有客户端都有资格使用转发服务。一般而言,我们会将转发服务开放给与Postfix Server位于相同局域网络的其他主机,好让这些主机可通过Postfix Server寄信到Internet上的外界网域。
  当Smtp MDA收到外地邮件时,它会依据收件地址来判断邮件应该送到哪个(或哪些)主机,然后依序连接到这些主机,直到有一部主机愿意收下邮件为止。如果投递过程发生暂时性问题,Smtp会通知Queue Manager将邮件放在延迟队列,等待下次传送的机会;如果发生永久性错误,则要求Queue Manager退信给发信者。
  当因暂时故障而不能连接的远程主机恢复连接时,Postfix会先采取试探性动作,以免过多的延迟邮件使对方瘫痪。一开始,Smtp只会搭建有限度的几条连接通道(数量可通过配置文件调整)到收件方,在发现对方能够成功收下邮件之后,才会慢慢提升连接通道的数量(到一个可设定的上限);相反的,如果Smtp发现接送方有任何麻烦,它会立刻撤销连接。
  

其他传送代理程序

  Postfix还提供了其他MDA,可用来处理特殊的地址或目的地。这些MDA需要在master.cf配置文件中设定妥当之后才有作用。此外,你还必须在class_transport或transport_maps参数指定的传送表(transport table)中设定如何启动它们。最常用的两个特殊MDA是LMTP与PIPE。
  

LMTP投递

  LMTP是一种很类似SMTP的协议,但只能用于同一网络上的邮件系统之间,或是同一主机上的不同邮件程序之间。举例来说,如果需要将邮件送到不同的软件包–该软件可能与Postfix在同一台机器上,也可能位于局域网络上的另一台主机,则Queue Manager可以调用LMTP MDA将邮件传送给该软件包。
  实际上,LMTP最常被用来将邮件交给特殊的POP/IMAP Server,以便使用特殊邮箱格式来存储邮件。在这种情况下,由于只要POP/IMAP SERVER知道特殊邮件格式,所以只好使用标准的LMTP来交付邮件。如果LMTP投递过程中出了任何问题,LMTP MDA会通知Queue Manager将邮件放在延迟队列,等待下次传送的机会。

PIPE投递

  Postfix提供了Pipe Daemon将邮件传送给外部程序。实际上,Pipe经常被用来将邮件传给外部的内容过滤程序(例如:病毒扫描系统、垃圾邮件分析程序)或其他通信媒介(例如:传真机)。同样,如Pipe无法顺利传出邮件,它会通知Queue Manager将邮件放在延迟队列,等待下次传送的机会。
  实际追踪POSTFIX的邮件处理流程
  让我们追踪一封典型邮件如何通过POSTFIX系统。处理流程是一封邮件从发信方到达目的地(信封地址所指的MTA),然后又被转寄到最终的MTA(收件人实际取信处)。
  例如:HELENE的账户位于一台运行POSTFIX的服务器,她使用自己习惯的MUA编写邮件,然后调用POSTFIX的sendmail命令送出邮件。POSTFIX的sendmail程序从HELENE的MUA软件中取下邮件,然后放在队列的MAILDROP/子目录下。
  接着,Pickup Daemon从该目录取出邮件,交给CLEANUP DAEMON运行必要的清理程序,如果HELENE的MUA软件没提供地址from:,或是该地址没使用完整的主机名称,则Cleanup会自动补齐不足的信息以确保邮件格式符合标准。完成清理程序之后,Cleanup将邮件存入收件队列,并通知Queue Manager,使其知道有一封新信正在等待投递。
  如果Queue Manager已经准备好处理新邮件,它会将邮件搬移到活动队列。由于HELENE的信是要送到其他网域系统的用户,所以Queue Manager使用SMTP MDA来投递该邮件。SMTP使用DNS查出哪些邮件服务器愿意收下目的地网域的邮件,然后从中挑出最优先的邮件交换主机(MX HOST)并与该主机接洽,以SMTP协议送出HELENE写的邮件。
  当目的网域的服务器上的MTA SMTPD收下HELENE的SMTP MDA送来的邮件。当smtpd确认它应该收下该邮件之后,它会将邮件交给Cleanup Daemon进行检查,然后存入收件队列。
  Queue Manager将邮件搬移到活动队列,检查收件人地址,然后使用LOCAL MDA来进行投递操作。接着,LOCAL发现收件地址其实是一个别名,其真实地址位于另一个网域,所以将邮件与新地址信息传给CLEANUP DAEMON,回到POSTFIX的队列系统。
  当CLEANUP与Queue Manager处理邮件时,依靠TRIVIAL-REWRITE将地址转换成标准格式,并判断传送方式以及递送流程到下一站。
  当Queue Manager发现新邮件应该送到另一个网络,则会调用SMTP来进行投递操作,而SMTP会先向DNS查出哪些邮件服务器可能接收该网域的邮件。该网域的MTA收下这封邮件后,最后会将邮件交给LOCAL MDA,由它将邮件存入该系统的邮箱。
  到这个时候,Postfix就完成了它的工作。这时收件人现可以用他自己的MUA来阅读邮件,至于这个MUA是直接从邮箱取信,还是使用POP或IMAP之类的协议通过网络下载邮件,都已经不是Postfix所能控制的了。
  我们的例子只假设了最理想的简单状态,实际的传送程序可能会遇到一些意外状况,诸如网络临时断线、远程主机死机、邮箱空间不足。发生意外时,MDA必须通知Queue Manager,将邮件暂时放回延迟队列,等待一段时间之后再重新投递。
  除了临时意外回影响投递过程,还有一些情况也会影响,比方说,收件人并非实际的系统账户,而是IMAP邮件系统的一个账户,在这种情况下,Queue Mananger可能要通过LMTP MDA来投递邮件,或是通过PIPE MDA将邮件送到一个事先确定的外部程序。
  Postfix还要面对各式各样的变化与潜在的复杂性,幸运的,它本身的结构设计足够稳定,几乎能够应付所有可想像到的情况,也有足够的可塑性来适应未来的可能变化。
  

队列种类

  收件:Incoming 活动:Active 延迟:Deferred 故障:Corrupt 保留:Hold
  

组件结构

  Master组件:主导邮件处理流程、其他组件的总管。配置文件:main.cf和master.cf。
  Qmgr组件:队列管理器。各个postfix组件之间的合作依靠队列交换邮件。
  Sendmail组件:服务器本机发送邮件。
  Postdrop组件:将邮件存入postfix队列目录下的maildrop/子目录。
  Pickup组件:监视maildrop/子目录,读出新邮件,交给cleanup组件。
  Cleanup组件:补足遗漏的标头字段。
  Trivial-Rewrite组件:地址处理,改成标准格式。决定路由信息,包括传输方法、下一站以及收件人地址。
  Smtpd组件:接收来自网络的邮件,交给cleanup组件处理。
  Defer组件:邮件被延时时产生通知函。
  Bounce组件:邮件无法送达目的地时产生通知函。
  Dns组件:查找符合条件的邮件服务器。
 

Postfix命令行工具

  postalias:创建或查询别名数据库。
  postcat:显示出队列文件的内容,让管理员可观察滞留在队列里的邮件内容。
  postconf:显示或改变postfix参数,可一次显示一个参数,或是显示所有参数。
  postdrop:将邮件放回到maildrop目录,由postfix重新进行投递操作。
  postfix:启动或停止postfix系统,或重新读取配置文件。也可以用于其他维护工作,包括检查系统配置,以及清空队列。
  postkick:对特定postfix服务发出请求。此工具的作用,主要是给shell scripts提供一个能够与postfix沟通服务的管道。
  postlock:锁定特定文件,确保能够独占访问。此工具的作用,主要是让shell scripts能使用兼容于postfix的锁定方式。
  postlog:将特定的信息记录到系统日志文件中。这是支持shell scripts工具,使其能以类似于postfix的样式来记录信息到日志文件。
  postmap:创建查询表的DB数据库或查询查询表内容。postfix有许多配置信息都是记录在postmap所建的查询表数据库中。
  postqueue:让一般的用户能够有限度地访问postfix队列。可能改变队列的访问方式需要有管理员特权才能进行,而这方面的访问能力由postsuper命令提供。
  postsuper:供管理员访问postfix队列。管理员可删除邮件、扣留邮件(搬到hold队列)、取回邮件(将邮件从hold队列搬回active队列),必要时,还可以修复队列目录结构。

1、邮件的基本概念
MUA:邮件用户代理,客户端收发邮件的软件
MTA:邮件传输代理,服务器上的部署邮件服务器的软件
MDA:邮件投递代理,在邮件服务器上将邮件存放到相应的位置
MRA:邮件收取代理,为MUA读取邮件提供标准接口,主要使用POP3和IMAP协议
2、常用的MUA与MTA
MUA:Outlook、Mozilla Thunderbird、Foxmail
MTA:Sendmail、Postfix、Qmail、Exchange Server
3、邮件传递原理
发送邮件时:
   用户通过MUA将邮件投递到MTA
   MTA首先将邮件传给MDA
   MDA会根据邮件收件人的不同采取不同的方式处理
      收信人和发信人来自同一域:MDA将邮件存放到对应邮件存放地点
      收信人和发信人来自不同域:MDA将邮件还给MTA
      MTA通过DNS查询到收件人MTA的IP地址
      将邮件投递到收件人MTA
      收件人所在区域MTA将邮件投递到MDA
      MDA将邮件存放到对应邮件存放地点
接受邮件时:    
   用户通过MUA连接MRA
   MRA在邮件存放地点将邮件收取,并传递回MUA
4、邮件中继
MTA收到邮件有两种处理方式,其中一种是向外投递邮件,这个就是中继。
当MTA投递邮件时,邮件的收件人和发件人都不是MTA所在区域,这个叫第三方中继
5、邮件相关协议
SMTP:简单邮件传输协议    TCP    25
POP3:邮局协议版本3    TCP    110
POPs:提供加密的POP3    TCP    995
IMAP:交互邮件访问协议    TCP    143
IMAPs:提供加密的IMAP    TCP    993
6、SMTP认证
SASL简单身份验证和安全层

7.邮件服务配置文件内容的解释

#inet_interfaces = localhost     //监听接口
 22 myhostname = mail.tarena.com     //邮件服务器主机名
 23 mydomain = tarena.com            //邮件服务器所在区域
 24 myorigin = $mydomain             //发件人DNS后缀            
 25 mydestination = $mydomain        //指定Postfix允许处理的邮件 
 26 home_mailbox = Maildir/         //邮箱类型
 27 mynetworks = 192.168.10.0/24     //设置允许哪些客户端直接将需要转发到外部区域的邮件提交给Postfix

实验环境:

1.由于邮件服务器@后跟域名所以首先 搭建DNS服务器。

2.邮件服务信息,邮件服务器 :mail.tarena.com    IP地址:192.168.1.20,邮件的账号为服务器的系统用户。

3.主要软件: 发信服务软件:postfix    收信服务软件:dovecot

实验(一)

搭建DNS服务器要求192.168.1.20可以解析mail.tarena.com的条目

安装软件包

修改主配置 文件/etc/named.conf

修改区域文件(邮件服务 标志为MX )

检查配置文件和区域文件配置是否有错误

重启服务并进行测试

实验(二)

实验目的:构建postfix发信服务器(SMTP协议,TCP   25端口)

1.查看软件包是否已经安装,如果没有安装 用YUM安装就可以。

2.修改主配置文件,把主配置文件做一个备份为main.cf.bak  ,更改非默认配置文件。

postconf -n  为非默认配置,只需要更改非默认配置文件就可以。用非默认配置文件重新生成一个main.cf主配置文件,对新生成的文件进行操作。

inet_interfaces默认监听的端口为本地回环地址,把它注释掉,就是监听任何地址

3.重启服务

4.添加电子邮箱账号nick 和hunter

5.使用telnet测试发信(nick给hunter发信),用客户端192.168.1.30测试(在/etc/resolv.conf添加DNS服务器的地址。

220 mail.tarena.com.com ESMTP Postfix
HELO localhost                  //宣告客户端的主机地址
250 mail.tarena.com.com
MAIL FROM:nick@tarena.com         //指定发件人地址
250 2.1.0 Ok
RCPT TO:hunter@tarena.com          //指定收件人地址
250 2.1.5 Ok
DATA                      //表示要开始写邮件内容了
354 End data with <CR><LF>.<CR><LF>
Subject:Test mail 1.              //指定邮件标题
  No.1 mail document.. ..              //输入文本邮件内容
.                     //独立的 . 表示输入完毕
250 2.0.0 Ok: queued as D4B5131D8B2
quit                     //断开telnet连接
221 2.0.0 Bye
Connection closed by foreign host.

6.检查邮件投递结果(在服务器上 192.168.1.20)

实验(三)

实验目的:构建dovecot收信服务器 【POP3/IMAP4协议,TCP 110/143端口】

1.安装 dovecot 软件包

2.调整dovecot服务配置、启动服务 disable_plaintext-auth = no 允许明文认证,mail_location = maildir:~/Maildir明确指定邮箱类型及路径。

重新启动服务

3.使用telnet测试收信(hunter)在客户端192.168.1.30测试

USER hunter                  //以用户hunter登录
+OK
PASS 123456                  //密码为123456
+OK Logged in.
LIST                      //查看邮件列表
+OK 6 messages:
1 451
.
RETR 1                     //获取编号为1的邮件
+OK 451 octets

实验(四)

实验目的:使用Thunderbird工具收发信和实现SMTP发信认证。

1.解压软件包

2.安装软件,进入以下图像界面

点击跳过并使用已有的电子邮箱,添加自己给用户的邮箱账号,按继续。

3.SMTP认证的工作 方式:SASL认证,启动SASL认证可以防止邮件服务器成为垃圾 中转站,可以防止自己的邮件服务器发送垃圾邮件,被封。

SMTP的认证的软件包 :cyrus-sasl

查看软件包是否已安装

启动服务,随开机自启动

查看saslauthd服务功能是否被开启,如果是本地用户认证成功的才转发邮件,否则我就不转发。

调整postfix配置,启动SMTP认证

27 mynetworks = 127.0.0.1                  //设置本地网络
 28 smtpd_sasl_auth_enable = yes              //启用SASL认证
 29 smtpd_sasl_security_options = noanonymous      //阻止匿名发信
 30 smtpd_recipient_restrictions =              //设置收件人过滤 
 31  permit_mynetworks,  
 32  permit_sasl_authenticated,
 33  reject_unauth_destination          //拒绝向未授权的目标域发信

从新启动服务

4.在客户端测试SMTP发信认证,以用户nick为例,未经过认证登录时,向外域发邮件会被拒绝。

220 mail.tarena.com ESMTP Postfix
HELO localhost                  //宣告本机地址
250 mail.tarena.com
MAIL FROM:nick@tarena.com         //指定发件人地址
250 2.1.0 Ok
RCPT TO:crazy_linux@163.com         //指定收件人地址
554 5.7.1 <crazy_linux@163.com>: Relay access denied 
                    //发送外域的发信请求被拒绝
quit                     //断开telnet连接

为了能使用户可以和外域发送邮件,必须通过认证,以用户nick为例,生成用户名、密码的加密字串,通过base64加密认证

认证登录通过以后,才允许向外域发邮件

AUTH LOGIN                 //声明要执行认证登录
334 VXNlcm5hbWU6
bmljaw==                 //输入用户名nick的BASE64编码
334 UGFzc3dvcmQ6
MTIzNDU2Nw==                 //输入密码1234567的BASE64编码
235 2.7.0 Authentication successful
MAIL FROM:nick@tarena.com         //指定发件人地址
250 2.1.0 Ok
RCPT TO:TsengYia@126.com             //指定收件人地址
250 2.1.5 Ok
DATA                     //开始编写邮件内容
354 End data with <CR><LF>.<CR><LF>
Subject:SMTP Auth Test             //指定邮件标题
  Hello, here is a test mail.             //输入文本邮件内容
.                     //独立的 . 表示输入完毕
250 2.0.0 Ok: queued as 8C48431D8B2
quit                     //断开telnet连接
221 2.0.0 Bye
Connection closed by foreign host.

总结:默认邮件服务器搭建完毕后,只能给本域发送邮件,如果想给外域发送邮件,必须要SMTP认证后才可以发送邮件,使用SMTP认证后可以防止邮件服务器发送垃圾邮件。

POSTFIX服务简介的更多相关文章

  1. J2EE基础之Web服务简介

    J2EE基础之Web服务简介 1.什么是Web服务? 在人们的日常生活中,经常会查询网页上某城市的天气信息,这些信息都是动态的.实时的,它是专业的气象站提供的一种服务.例如,在网上购物时,通常采用网上 ...

  2. Linux Postfix 服务

    Linux Postfix 服务 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)开源软件.能够很好地兼容 Sendmail服务程序,可以方便 Sendm ...

  3. Spring Cloud与微服务构建:微服务简介

    Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...

  4. NFS服务简介

    NFS服务简介 NFS是Network File System的缩写,即网络文件系统.NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件.NFS serve ...

  5. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  6. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  7. HTTP的REST服务简介

      REST简介   一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么, ...

  8. cobbler自动装机服务简介与配置

    cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使用命令行 ...

  9. NFS服务简介与配置

    NFS简介 NFS特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源 在NFS的应用中, ...

随机推荐

  1. atitit.词法分析的实现token attilax总结

    atitit.词法分析的实现token attilax总结 1. 词法分析(英语:lexical analysis)跟token 1 1.1. 扫描器 2 2. 单词流必须识别为保留字,标识符(变量) ...

  2. python-wechatAutoReword

    python-微信自动回复功能,基于itchat 2017.9.6 实现群@自动回复 #! /usr/bin/env python3.5.2 # coding="utf-8" im ...

  3. HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条

    页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 服务器:Tomcat 7.0 jQuery版本:1.9.1 Servlet 3.0 代码 package or ...

  4. 29个酷炫的Firefox配置参数

    你可能安装了许多的firefox插件以增加浏览器的功能,但是如果你想更好地使用firefox,学习如何配置about:config参数是很有必要的. about:config配置页包含了所有的fire ...

  5. Scala + Play + Sbt + Protractor = One Build

    欢迎关注我的新博客地址:http://cuipengfei.me/ 我所在的项目的技术栈选用的是Play framework做后端API,前端用Angular JS. 因为用了Scala和Play,构 ...

  6. OS X删除自带的safari和facetime等程序

    打开终端 cd /Applications/ //在应用程序文件目录删除苹果自带的程序 sudo rm -rf Safari.app/ //删除safari浏览器 sudo rm -rf Mail.a ...

  7. OAuth认证协议原理分析及同步消息到Twitter和Facebook使用方法

    OAuth有什么用?为什么要使用OAuth? twitter或豆瓣用户一定会发现,有时候,在别的网站,点登录后转到 twitter登录,之后转回原网站,你会发现你已经登录此网站了,这种网站就是这个效果 ...

  8. oh my zsh 切换 bash

    zsh切换bash bash切换zsh 切换bash chsh -s /bin/bash 切换zsh chsh -s /bin/zsh

  9. Angular ContentChild

    contentchild // 使用方法 git clone https://git.oschina.net/mumu-osc/learn-component.git cd learn-compone ...

  10. Laravel5.1 文件管理

    Laravel提供了一套很好用的文件系统 方便于管理文件夹和文件,支持Amazon S3和Rackspace云存储等驱动. 1 配置 文件系统的配置文件在 config/filesyetems.php ...