欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 25_01 邮件服务系列之基础原理 有大用

image.png

Mail Server:

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

功能简陋,(比如没法实现用户认证,,账号密码的检测它没法完成,到目标服务器以后,邮件怎么存储下来,它也无法完成,怎么让用户检索自己的邮件,它仍然无法完成)

仅仅实现邮件发送从发送方到目的方

有个扩展叫 ESMTP Extended Simple Mail Transfer Protocol  扩展的简单邮件传输协议

它仍然简单,只是对 SMTP 作一点点的补充而已

ESMTP 支持验证用户的身份认证的功能的检测,但仍然无法实现身份认证

POP3协议:  (这里3是版本号)  Post Office Protocol 邮局协议

IMAP4协议: (这里4是版本号) Internet Mail Access Protocol 互联网邮件访问协议

    POP3和IMAP4实现的功能是近似的,IMAP4实现的功能更强大,消耗的资源也会比较多,所以众多站点上所提供的这种服务,都是POP3,而不是IMAP4


互联网诞生后不久,就有了几个协议,(http smtp uucp)

UUCP: (讲到日志的时候提到这个协议?) Unix to Unix CoPy

    多个Unix主机之间互相复制文件(传输文件)的协议

互联网刚诞生时,协议少,UUCP在多个Unix之间共享文件作用比较大,功能简陋,

后来出现了SMTP协议:它就是实现一个文件从一个主机传到另一个主机的,本身可以实现路由功能

从一个电脑的上发送用户传到另一个电脑上的接收用户,怎么标识它们, 假设目录主机不存在怎么办?


北京    -->      上海

         郑州


文件路由   邮件中继  下图中间两台服务器,叫邮件中继的服务器

可以利用dns功能及邮件协议自身的功能等进行路由的,它能够最终将邮件送到目的方

这是smtp比uucp强大的地方

image.png



smtp

c/s架构的

Server Client

smtpd(服务器端) smtp(客户端 sendmail)


互联网网诞生时,没有pc机,每个用户都是Unix主机上的用户,

Unix是真正意义上的多用户多任务的操作系统

image.png


早期终端:键盘,鼠标,屏幕


a.org  MX mail.a.org 还是一个域名,我们还要解析 mail.a.org A记录解析一下


 服务器端监听在某个套接字上,客户端请求过来,这就叫做(服务器端)被动打开

SMTP 服务端(25/tcp)

SMTP 客户端,随机的端口,本机上尚未占有的,一般是大于5000的端口(不同的操作系统分配机制可能有所不同)

stmp基于TCP协议,先进行三次握手,然后看看 服务器25号端口在不在线,如果在线,回应一下,然后客户端告诉服务端我是谁,我要发给谁,我要发什么内容,然后就开始发过来了

对方的服务器端主机接收下来邮件之后,邮件就放到用户的家目录里面去了?(不对)(SMTP不是管理员(也许是管理员身份运行,但不是root组,这是为了安全起见的),,,,没有权限放到 用户(比如jerry)的家目录)(邮件员没有权限把邮件放到人家家里,只能放到邮筒里,用户拿钥匙从邮筒里取出来拿回家)


应该有一个位置,smtp服务器进程可以访问,每一个用户都可以访问自己的邮筒


每个用户都有邮筒(邮箱中转站,邮箱中转箱,邮箱)

每个用户的文件(邮筒)都与用户名相同,都是用户同名的文件

注意它是个文件不是目录

当又来一个文件时,可以向文件尾部追加

这是早期MailBox的方式 (当然也有目录的方式)


有一个脚本程序,会不定期的去检索,看看有没有属于自己的邮件,如果有新邮件的话,它会发一个通知给当前用户(假如这个用户登录的话)  当然当前用户也可以周期性的去邮筒里去看看有没有发给自己的邮件

image.png


用户用mail命令来取邮件,

从邮筒里取出来放到自己的家目录下,邮筒里就没有邮件了

(早期的邮件因为没有做复制功能,模拟现实中的)

看过的邮件都在家目录下

看过邮件后,在家目录下,会生成一个mbox的邮件(是个文件)

image.png


[root@localhost ~]# mail

Mail version 8.1 6/6/93.  Type ? for help.

"/var/spool/mail/root": 2 messages 2 new

>N  1 logwatch@localhost.l  Fri Jul 12 11:10  42/1589  "Logwatch "

 N  2 logwatch@localhost.l  Sat Jul 13 04:02 169/4867  "Logwatch "

&

image.png

1 打开一个邮件

q 退出



[root@localhost ~]# ls

image.png


好像以上的操作没有用到pop3  


image.png



把邮件从服务器端放到邮筒里面,就不是smtp来负责的,smtp仅负责邮件传输

邮件放到邮箱里面去,不是smtp负责完成的,是另外一个组件(叫邮件投递)来完成的


邮件传输:MT (Mail transfer)

邮件投递:MD (Mail Deliver)

image.png


Jerry回邮件给Tom怎么办?

原理一样,只是右边作为客户端,左边作为服务器端了

image.png

两台主机都要有客户端和服务器端

有服务器端的才能接收邮件,

有客户端的才能发送邮件(提请传输邮件)



如果本地tom发邮件到本地bob,仍然走的是邮件传输系统

本地客户端连接本地服务器端,本地服务器端直接把邮件送到本地的对应用户的邮筒里面去


服务器端负责:  (很简单,只分为本地和远程)

        本地邮件

        远程邮件

image.png

有发往上海的,发往广州的,


邮件要分拣

image.png


事实上 每个用户编辑的提交发送的工具就是个客户端,这个客户端是通过smtp协议将邮件送往本地服务器的(不是直接联系远程服务器)(而且这个机制不是smtp工具,用mail命令就可以发邮件)(mail邮件本身是专门让用户写邮件,而且能够试图将用户的邮件提交并向外发送的)

mail命令 (这个工具邮件用户: MU (mail user))

image.png


每个用户向外发邮件的时候,他首先得拿着一个可以让你去编写邮件并且能够发送邮件的工具

来向外发邮件的(这个工具叫 邮件用户代理 MUA (Mail User Agent) (邮件用户代理就是让用户能够编写邮件的) ) 这个人叫作邮件用户,这个人可以拿来编写发邮件的工具叫做MUA(邮件用户代理)

用户每一次试图向外发邮件就打开这个代理,这个代理同时会给我们提供一个编辑界面, (比如outlook里面有个编辑的地方可以写邮件的,outlook就是一个邮件用户代理)

在邮件代理里面写好邮件之后,邮件并不是直接发往目标服务器的,(任何一个邮件用户代理都有一个自己允许提交邮件的目标服务器,这个服务器通常都是本地的,)


image.png

首先发送到的邮件服务器通常是本地的,或者是邮件账号所在的那台服务器上的服务器,它不是直接传送给远程了,由邮件服务器分拣,来判定邮件到底是发往什么地方去的,(两类:本地(  smtpd直接发送到本地邮筒 lmtp (local mail transfer protocol 本地邮件传输协议)),远程( smtpd 调用smtp的客户端smtp,由smtp来连接远程的邮件服务器端))


image.png


MUA:(邮件用户代理)

MTA:(邮件传输代理) (Mail Transfer Agent) 也就是邮件服务器smtpd,它只是负责邮件传输的

   从MUA到SMTPD(邮件服务器不一定是本地的)的过程当中,它们的通信过程,是SMTP协议,

   假如是本地, 从SMTPD到本地的另一个用户的邮筒是通过lmtp协议?来传送的

   假如是远程 从SMTP到对方的STMPD服务器, 它们的通信过程,也是SMTP协议

   对方的STMPD服务器进行投递到邮筒,通过一个进程程序(MD)(投递)(MDA)投递到邮筒 

MDA: (Mail Delivery Agent)邮件投递代理

很复杂? SMTP本身没有相应的功能,只好一层一层的借助于其它的外围程序来完成

   远程用户如何查看自己收到的邮件?MUA(邮件用户代理 mail命令)

通过MUA,mail命令从邮筒里面接收邮件,进行查看,并保存在自己的家目录

   image.png

回复邮件,套路一样

image.png


假如对方的 SMTPD 不是最终的邮件服务器

对方的SMTPD再转交给自己的SMTP 再由SMTP转交给最终目的地SMTPD,

中间的SMTPD要 雁过拔毛,要盖个戳上去面

在最终目的地SMTPD看来是 a.org(中间商邮件服务器)发来的,但是发件人依然是 tom@magedu.com,(原始的MUA)

不过发来邮件的那台主机(中间商SMTP)是a.org,    发件人和主机(中间商SMTP)之间没有必然联系  这种方式大大的保证了就算邮件被误传了,也会到达真正的目的地

image.png


image.png


但是这种方式有极大坏处,世界上第一封垃圾邮件就这样诞生了

我建100万封邮件,没有建邮件服务器,把邮件都提交到你的服务器,你的服务器一看不是你自己的邮件,都一个个的转发出去了,人家会认为中间商(转发的邮件服务器)是垃圾邮件制造者

人家会拒收(转发的邮件服务器)发来的邮件

能够给别人随意转发邮件的服务器是有被滥用的风险的

当别人发过来,我们的服务器能够向外转发的机制称为Open Relay: ( 开放式中继 )

这是有着极大的被滥用的风险的,一般来讲,我们都不允许给别人中继了

一般我们要关闭开放式中继的功能

互联网上有很多反垃圾邮件的功能,可以把你加入黑名单,加到互联网上全球著名的邮件服务器黑名单列表,以后凡是来自你的邮件,通通都被服务器拒收


只要我们分拣,然后发现不是本地的,这就是中继

本地的SMTPD是不能区分MUA来的,还是远程的SMTP来的

本地的SMTPD收到邮件后,首先分拣,分拣后发现收件人不是本地的,就要向外发,(调用SMTP向外发,这个过程就叫中继),,,所以此时也是中继 (刚才说要关闭中继,关闭中继后本地邮件也就发不出去了)(所以要允许本地用户中继,这就是基于ip的认证了)

image.png


本地的内网,内部的用户就是本地用户,

家贼难防, 成功的攻击,70%是家贼,,监守自盗

任何一个人只要想办法进入内网,就可以通过邮件服务器向外发邮件,

有人带笔记本进公司发一大堆垃圾邮件,第二天就走了?怎么办?

想使用邮件服务器,得提供账号,密码,,,所以要基于用户来认证

SMTPD不管你是谁,只要往我发,它能中继,就中继;不能中继,就不中继,它可不管你发件人是谁(对于发件人,你说你是谁,SMTPD就认为你是谁) (它只管收件人是谁)

 所以在SMTP协议上,发件人是可以随意伪装的,,应该认证用户,谁要到我这边发邮件,都要提供账号密码 (提供账号密码后,你说你是谁,SMTPD还是认为你是谁)


SMTPD怎么能够实现用户认证

    SMTP可以给任何人发邮件,但可以借助于额外的认证工具来实现用户认证(通过一种协议来完成,这个协议叫SASL: Simple Authentication Secure Layer 简单认证安全层)

给我们的邮件服务器加了一个层次,基于这个层次,邮件服务器就可以实现认证功能了,,,它是一个协议,就有类似于客户端,服务端,中间要建立通信,借助于服务器端来实现某种特定的功能.所以 SASL 启动起来就意味着我们的邮件服务器上要有SASL的服务器,,, SMTPD内部有个小程序作为SASL的客户端,当某个用户通过MUA来发邮件的时候,它通过这个客户端把用户提供的邮箱账号提交给SASL服务器,由SASL来验证本地有没有这个用户,,如果有SASL服务器就返回告诉SMTPD服务器,这个账户是合法的(否则就告诉SMTPD服务器,这个账号来路不明,SMTPD服务器就拒绝发邮件了)

image.png

image.png


有了SASL以后,SMTPD服务器就不用防范用户是本地还是远程的了,只要有账号密码我都给你发邮件,于是来自内网和外网的用户都皆大欢喜了,公司员工出差了,也照样可以使用我们的SMTPD服务器来发邮件,(哪怕随机地址,只要能联网,有账号,有密码,我们都可以发邮件了)



现在每个人都有自己的电脑了,基本没人拿鼠标,终端连到大型机(服务器)上去运行了

写邮件都在PC机上写了,发邮件其实很简单,只要有邮件服务器就可以了

假如公司内部网络有一个A 邮件服务器SMTPD,这没有问题,

我们有一个pc机上有B MUA

B的 MUA 发邮件到 A上的SMTPD,A上的SMTPD发现是个远程邮件,就通地SMTP发送邮件到远程的 SMTPD

远程的 SMTPD上有邮件服务器C

远程的MUA也是在另外一个pc机D上

D上 MUA 没有登录C上的 SMTPD服务器,意味着在C上的  SMTPD服务器上 没有D上的MUA账号  ;;;很显然 C上的SMTPD 必须有这个人D的MUA账号

有邮筒 ,有家目录,,,,

D上的MUA想收邮件,(上面讲的是用户登录到服务器,通过本地的(服务器上的)MUA,到邮筒(邮箱)里面收邮件,查看后,保存到家目录里面 )(这样一来,就需要D上的PC机 就远程登录(使用ssh账号密码)进C上的SMTPD服务器,)(这意味D上的pc机上的MUA,每次看邮件都要远程登录进C上的SMTPD服务器)  事实上不是这样子的

image.png

没账号吧,邮件不可能接收下来,也不可能投递到用户的邮箱里面去,


邮件不能直接投递到MUA,因为相当于邮递员直接把信送到人家家里面,(因为MUA是PC机,不可能时时在线的)

image.png

你把本机PC机做成 邮件服务器,你能说天天24小时开机吗?

(你的PC机得有域名,得有MTA)

如果不能的话,人家邮件传过来的话,人家传邮件,老是不在线,人家不会联系你的

(人家发邮件,老是不在线,重试了两下之后,联系不上,就不再发了,邮件就被丢弃了)

(出差两天,一大堆邮件,就没有了)

必须要找一个24小时在线的服务器给我们收邮件

而且这个服务器上的确有这个账号,所以邮件都放到我们的邮箱(邮筒)里面去了


(我们不能允许用户登录到smtp服务器上去,我们从来没有远程ssh登录过126的服务器,雅虎的服务器)

所以为了避免用户登录进来才能收邮件,我们得再装一台服务器

这个服务器进程让用户来自远程pc上的客户端提供一个账号和密码

这个服务器在验证pc客户端过来的账号和密码后,通过后,负责帮忙把邮件从邮筒(邮箱)里面拿出来,再经过这个服务器,返还给客户端

由此我们的pc机上的客户端不用登录服务器,只需要把账户和密码告诉对方的服务器,而这个服务器能够负责帮我们去检索邮件,  (对于任何一个用户身份来讲,哪一个用户来找这个服务器,这个服务器就以谁的身份去找邮件)


所以jerry通过自己的账号和密码发给服务器了,这个服务器就拿着jerry的账户密码去找jerry的邮箱(邮筒)   如果是blare通过自己的账号和密码发给服务器了,这个服务器就拿着blare的账户密码去找blare的邮箱(邮筒) 

image.png


每一个用户来访问的时候,只要同时都能访问,我们每一个用户请求要用一个线程或进程来响应,(我们web服务器是这么做的 perfork模型下,多用户,只要有并发,都要涉及这种机制,只要有io并发,只要有多个用户同时连进来,要么是一个进程一个用户,要么是一个线程一个用户,要么一个线程多个用户) 一个线程多个用户可能在这里不太适合了?事实上它也是适合的,我们只要有机制合适就行?

image.png


由此我们的邮件取出来之后,MUA就可以收件了,从此用户再也不需要登录服务器了

这种能够代替用户到邮箱(邮筒)里面去检索出来邮件并传递给用户这样一个设备,这样一个程序叫做 MRA (邮件取回代理 邮件检索代理 Mail Retrieval  Agent) (也就是POP3或进IMAP吧)

image.png

邮件检索的时候 是邮件传递吗?

这个过程就叫做POP3协议 (也可以用IMAP协议)

image.png



image.png


outlook express,foxmail,Thunderbird (linux上的), evolution (ubuntu下自带)

等等都是专门帮我们收邮件的客户端

现在提倡瘦客户端,客户端越不要提供工具,能够完成任务,才更好,

一般是基于浏览器来实现的,大多数人是通过web来实现的

web服务能帮助我们收发邮件吗?显然不可以




为了避免用户收邮件每一次都得使用MUA,而是只要提供浏览器就能完成所有工作,我们客户端啥也不用运行,只要一打开主机就是个浏览器,就能够工作.只要输入一个网址,什么活都能干,谷歌出了个云笔记本,整个操作系统主是个chrome,开机后,整个界面就是个浏览器,啥别的都没有了,所有的任务都能够在浏览器中完成,所以这是个云笔记本,,,,因为你所有的工作,只要能连上网,所有的操作,对cpu的占用都能够通过远程主机来完成

以后弄个小笔记本,只要弄个显示器就行,只要有网线连到主机上,买2块钱的计算能力,就可以使用2块钱的计算能力,以后计算机的计算,也不要自己买cpu,买主板了, 用计算能力,就跟用电用水一样,开个龙头,就使用,不用的话,就关掉龙头,,,用多少钱,就买多少钱的,,,,,,来2斤,来5斤,,,,就叫云嘛 


没有MUA,只有浏览器,怎么收邮件?

在邮箱服务器上,建一个web服务器,

客户端通过浏览器连上来了,,,,,,

web服务器主要是给用户提供邮箱,收邮件,编写邮件,发邮件的界面的

所以要使用一个动态程序 ( php perl python 等 )开发一个能够跟用户的MUA一样的界面,提供一个编辑器,让你编写邮件,,,,点按扭,发送邮件,,,,

这个界面,当点发送的时候,它怎么办?它会提交给SMTP或者SMTPD服务器,

它会直接调用本地的SMTP的客户端(sendmail),由这个客户端去联系SMTPD服务端(有可能是本地,也有可能是远程的)(如果SMTP本身能够直接判定是远程还是本地的话,有可能直接连接远程SMTPD服务器去了) 

image.png


假如远程 回复一个邮件过来了,那就会把邮件投递到我们的邮筒(邮箱)里面去,

当用户的邮件放到邮筒里面去的时候,我们的web服务器本身能够借助于本地程序(POP3)

也能够直接到用户的邮筒(邮箱) 里面去检索邮件的

image.png

web服务器两种方法检索邮件:

1)借助于pop3到邮筒里面去

  web服务器作了pop3服务端的客户端,以哪个身份呢(登录web时的身份(账号密码))

  web服务器作了pop3服务端的客户端来联系pop3服务端,由pop3帮忙把邮件检索回来返回给web了,由web再让用户通过浏览器看到,,,,, 这种机制,叫做 WebMail

   

2)直接到邮筒里面去

image.png



为了保证邮件服务器的安全性,smtpd需要检索用户的账号密码,不过它要借助于 SASL

我们的POP3服务器要不要验证用户的账号密码?当然要,(如果不要的话,任何人都可以冒名顶替看别人的邮件了,所以POP3也要做身份验证)


比如126邮箱,公共邮箱有可能上亿个用户,应该不是系统用户吧,在 /etc/passwd 下建上亿个用户,不可能吧  登录服务器,为了验证用户在不在,有没有密码是否匹配,得多长时间?

如果有一种机制,能够快速帮我们去检索数据的话,就简单得多了,此时放在/etc/passwd 下不但不行,而且是不可行的,不是说你想放就放,不放就不放的


比如  /etc/shadow 当中放一亿个用户,这个文件太大,要检索用户,必须这个文件要全部载入内存去比较的,内存不够用啊

当数据量非常大的时候,简单的通过文件的方式来管理数据是不理想的,不合适的

就要靠专门的能够管理数据的系统就可以了,

Mysql就可以,所以我们可以把用户的账号放在Mysql的一个库里面的某个表里就可以了,检索有没有用户的时候,我们用数据库来完成,而不是把整个文件载入到内存中来完成的

数据库的检索机制是可以根据索引来检索的,这速度要快得多,而且不用载入所有数据,,,,,,,,

但是当用户量超大的时候,数据库的检索速度依然是慢的

有一种协议,实现用户检索的时候,它的速度是巨快无比,比Mysql这种数据库快至少一个数量级(快10倍左右),这就是LDAP协议


LDAP: 轻量级目录(服务)访问协议  轻量级目录访问协议 Lightweight Directory Access Protocol

重量级也有(比如 X509,只是一种标准 ),只不过很少见

LDAP把数据按照目录的格式进行组织,而且它的检索速度无与伦比的快,但是LDAP也有坏处,与Mysql相比,有缺陷,LDAP读的速度非常快,写的速度非常慢(写的速度比关系型数据库慢一个数量级)

所以LDAP最适合的场景:一次写入,多次读取,(比如用户账号,建立时建立一下就OK了,比后大量的时候,用户一登录就读取,用户一登录又读取)

如果量级不是特别的大,Mysql也足以能够完成所有的工作.Mysql管理起来比LDAP要简单

LDAP到今天为止,仍然不是特别的成熟

当我们一个非常大规模的系统,(用户账号系统,资源检索系统,服务信息检索系统)通常都要使用LDAP协议

到今天为止,我们操作系统上对LDAP这种协议实施的最好的是 Windows Server,因为它做的界面LDAP非常复杂,概念也非常复杂,用起来也很复杂

在红帽rhca当中,LDAP这一个服务就用了一本书来专门讲解,不到这种级别,其实是用不上的,,,,,,,,,,,

不到上亿个用户,像163邮箱里面这样的系统,一般是用不上的,或者跨国国际化大企业500强,一个公司内部就有几万个用户员工,每个员工都有一个账号,像这种管理起来,有可能会用到LDAP,否则的话是用不上的,,,

所以说我们要在量级不够的情况下布署LDAP没有必要,,但是 windows 本身在实现将这个非常困难的系统做成图形化的方式能够点下一步添加字符的方式就能够完成的工作上走到了linux的前面

所以 Windows Server 2003 ,  Windows Server 2008 里面 直接整合的就是LDAP服务,叫做windows域,( windows ad )(ad 就是active directory 活动目录),它本身就是LADP的服务的实现,

到今天为止,恐怕还有公司可能会用到 windows server,其实看重的就是它的LDAP

据说戴尔在用,戴尔马上要被黑石收购了,戴尔要挂掉了

,,,,,,,,,,,,所以珍惜生命,远离windows (指的是服务器上)  

(当然这不是windows的原因,是戴尔自身经营的原因)



我们要把用户账户放到 Mysql 上,( 就算量级不大,也要放 Mysql )

因为假如我们把每个账户都建为系统账号 ( /etc/passwd )的话,会有个坏处,因为别人拿着账号,可以尝试登进服务器,这相当的不安全  (我只要给你提供邮箱服务,最后发现我在给他提供登录linux的账号,密码, 他可能会根据账号,密码来攻击我们的服务器)

所以就算量级不是特别的大,也应该提供另外一种用户账号,就把账号放在跟我们的操作系统的账号无关的位置 比如放在Mysql的表里面 ( 注意跟我们的操作系统没有关系,这个表里的账号只是邮箱系统账号) 表里面只有两个字符串 (用户名 密码)

image.png


用户使用浏览器登录系统的时候,我们的pop3(还是web?马哥说是pop3) 到mysql里面去找用户名密码,看是否有匹配的账号密码,,这个账号密码仅能够拿来访问邮件服务,而不能拿来试图登录操作系统

(因为登录操作系统是到 /etc/shadow /etc/passwd 来找用户名密码的)

所以这里存在mysql表里面的邮箱用户叫做 虚拟用户,也就是说这个用户并不是一个存在的可以访问系统资源的用户,仅仅是访问某个服务的用户 (仅用于访问某服务的数字标识)

    用户: 字符串,凭证(可以是密码,也可以是其它东西,反正只有他自己知道,其他人不知道,所以密码本身一般来讲要加密存放)

image.png



POP3程序可以自己查Mysql数据库,找账号 密码的

很多POP3程序自己有Mysql的访问驱动,也有LDAP的访问驱动

,它可以自己去找Mysql服务器或者LDAP服务器去完成账号密码的验证的

image.png

SMTPD却没有这个功能,它要借助于SASL


SASL本来验证用户是到 /etc/passwd 中 找用户账号,也没办法到Mysql中找用户账户的,

还要给SASL附加额外的功能(给SASL添加一个组件驱动,由这个组件驱动来连接Mysql,从Mysql服务器中检索用户的)

image.png


 我们的反垃圾邮件

 垃圾邮件过滤器,对每一份通过它发的邮件作内容检索,

 你发的每一份邮件,其实126都有一份复制,人家还看过了

我们随便接入一个机站,通过一些技术,我们可以追踪任何一个手机号码

其实邮箱服务器上面的管理员可以相看任何一个人的邮件的

邮件太多,不可能人工审核,因为太慢,所以装了一个组件,叫垃圾邮件分拣器

垃圾邮件过滤器怎么过滤邮件的?  反垃圾邮件 防垃圾邮件

(就像杀毒软件怎么杀毒的? 提取特征码,比较你这个文件,作一下扫描运算,特殊运算,看一下里面的特征码相似率有多高? 有低级别安全(90%,必须非常像,才叫低级别) 中级别安全(80%) 高级别安全(60%,有一点像,就要把它杀死) ;;;;;;;;;;指的就是相似程度)

反垃圾邮件 对英文易实现, 对中文不容易实现(可以调过来说中文)

对方没有发垃圾邮件,在附件里面发了一个邮箱炸弹(病毒,能自动执行)

你一下载,一运行,它在你主机上运行起来,给你主机上种上木马

防火墙是防火的,不是杀毒的,所以用防火墙不起作用

还要装一个病毒邮件过滤器(杀毒软件),对于每一封来往的邮件要看看有没有病毒

对于来往的邮件,先使用垃圾邮件分拣器,抽拿一份,看看是不是垃圾邮件,如果不是,看看不是病毒邮件,如果再不是,才可以向外发送的



一个角色 ,一个主机来扮演,这样子可能一个邮件系统就需要几台或10几台主机,,,,像126这样的服务器,每个用户邮箱可以有5G到10G,一亿个用户要多少个G?不能简单的把收邮件的服务器和送邮件的服务器放在一起了,所以收发邮件有可能是不同的主机

真正构建邮件服务器的时候是非常麻烦的


装一个能够发邮件的服务器,在本机上实现一台主机上实现两个用户互相收发,

简单的扩展一下,怎么能够实现论证,至少基于IP认证,基于用户认证等等

一直到最后我们能够扩展到一个完整的邮件系统

除了不能杀病毒,不能杀垃圾邮件之外的一个完整意义上的邮件系统

当然杀病毒邮件,杀垃圾邮件,过程并不复杂,构建起来,互联网上有许多开源工具

等一会儿来讲讲能够给我们提供的服务器上 MUA MDA各有哪些,我们怎么真正去构建一个邮件服务器




普通分类: