服务器 频道

Sendmail 8.9.3中的Mail Relay 规则简介

  【IT168 服务器学院】一.什么是第三方的Mail Relay? 

      当一台邮件服务器处理一封邮件时,该封邮件的发送者(the sender)和接收者(the recipient)都不是本地用户(local 

      user),即发送者和接收者都处于本地域之外,该邮件服务器对于这封邮件的传送完全属于不相关的第三方,因此Mail 

      Relay被sedmail默认禁止了。这阻止了Spammer利用你的服务器发送垃圾邮件。 

      二.为什么你要停止第三方的Mail Relay? 

      如果你的邮件服务器不能有效地控制第三方的mail relay,你应该立刻着手解决这个问题,不要等待spammer 来攻击你的邮件主机,主要是因为: 

      a.大量的垃圾邮件(junk email)可能会使你的邮件系统崩溃。它们占用你的磁盘空间,CPU资源,还可能引发Dos类型攻击(denial of 

      service attack). 

      b.你的组织可能被列入黑名单(backlist)。由于大量垃圾邮件从你的主机发出,其它一些组织或公司可能会不做任何更深的调查就更改设置阻止了从你的主机来的任何邮件,这也将同时阻止从你的站点发到它们的所有正常的商业性邮件,损失不可估量. 

      c.意识到这种攻击将会发生在你身上。不要因为它没有发生就意味着你是安全的。他们每天正用一些自动扫描的工具去扫描网络而寻找那些对他们打开relay功能的邮件主机。他们可能自己写了某个程序正每刻地进行扫描,如果你的邮件主机是易受攻击的,那么扫描到你就是迟早的事情。 

      三. Sendmail(8.9.3)如何relay你的邮件? 

      如果发送者和接收者都不属于本地域,sendmail将默认禁止mail relay. 要想使得sendmail relay 

      你的邮件,可以有下面两种途径,你必须确保发送者或者接收者其中至少有一个属于本地域. 

      a. 本地发送者到外部接收者(local sender to external recipient) 

      b. 外部发送者到本地接收者(external sender to local recipient) 

      ========== 

      c. 何为本地发送者(local sender)? 

      当邮件服务器接收到一封从其它机器(如windows pc)发来的邮件时,它首先检查连接进来的主机的域名和 IP地址,注意: 

      决不是检查这封邮件的信封里的发送者地址(not based on the envelope MAIL FROM address!) 

      (要了解一封邮件的全部信封头信息,参考(http://www.stopspam.org/email/headers/headers.html)) 

      如果你是拨号用户,IP地址当然是你拨到ISP所得到的动态IP地址,然后你的主机名/域名是由你的ISP对你的IP 

      地址作反向DNS解析出来的主机名/域名, 

      不过大多数ISP不作这个,因此,sendmail将仅仅记录你连接进来的IP地址,由此判断是否这个地址被允许relay mail.对sendmail 

      8.9.3来说,最通常的用来检查是否relay邮件的配置文件是/etc/mail/relay-domains,它能对IP地址或域名进行判断是否允许relay. 

      如果这一步不允许,再检查/etc/mail/access(它能被通过加FEATURE(access_db)到.mc文件再用m4生成/etc/sendmail.cf所激活 

      附:本文讨论的所有设置都是基于M4宏命令生成的/etc/sendmail.cf) 

      d. 何为本地接收者(local recipient )? 

      决定接收者邮件地址是否为本地的不是件轻松的事情,sendmail认为类w中的所有主机/域为本地接收者,也就是/etc/mail/sendmail.cw文件或者/etc/sendmail.cf中的Cw类定义后面列出的所有主机或域名。为了激活对/etc/mail/sendmail.cw的检查,使用特性Feature(use_cw_file)。但是这还不够,因为这个能被愚弄的,如. 

      因此sendmail用规则集(ruleset)先移走这个地址的本地部分( 

      @local.site)后,如果仍有一些域,则考虑是否能通过relay检查,另外,sendmail也还检查/etc/mail/access 

      决定是否有项目匹配接收者地址所在的域,根据相应标记确定是否被允许接收。 
0
相关文章