第一部分 :,也就是安装完系统(Sendmail服务器)不做任何设置的情况下,则只能在本机上收发邮件,网络上()的任何其它主机不能向该SMTP服务器发送邮件,若希望能实现发送,则需满足下面的任何一个条件即可(不需要同时满足):“本地或者被允许的发送者”。“本地或者被允许的接收者”。也就是说,不管是邮件的发送者还是邮件接收对象只要其中之一属于本地或被允许的时候,“本地/被允许的发送者”呢?实际上只有一种,就是列在文件/etc/mail/relay-domains(默认安装后无此文件,你可以创建它)或者/etc/mail/access中的域名或者IP地址行,如:(/etc/mail/relay-domains)relay(/etc/mail/access)注:,只是在不同的文件中所要求的语法不同而已,在/etc/mail/access文件中需要加上relay.===先讨论域名的情况:回到前面所说的何谓“本地/被允许的发送者”,如果在relay-domains/access文件中列出的是域名,则对发送者的IP地址先查找/etc/hosts文件(一般是如此,因为默认情况下对Linux服务器来说,查找DNS是先查找/etc/hosts文件看是否有此IP地址对应的主机域名,如无再做反向DNS查找,如果能够反向查找出来,且查找出来的主机的域部分属于上面两个文件中列出的域名,再对该主机名做正向DNS查找出的IP地址(主机的A记录)与发送者IP地址相同,则允许relay邮件,这表明发送者属于被允许的发送者。也就是说,先看/etc/,一般是这样:orderhosts,bindmultion其中的order行指明先查/etc/hosts,再找DNS数据库。现在举个例子:如下图: 内部LAN ¦ ¦windowsPC¦----------->¦sendmailserver¦ ()SMTP ()¦() (A) 发送邮件 (B) jephe. sh. (图一)在内部LAN上有一台windowsPC,简称机器A,,简称机器B发送邮件,,..,机器B既是SMTP服务器也是DNS服务器,在此我们不考虑防火墙的设置,(.)。如果在机器B的/etc/mail/relay-domains或者/etc/mail/relay当A向B发送邮件时,若B能在它的/etc/,也就是接收从A发来的所有邮件,不管是去向哪里,因为这种情况符合第一种relay规则,即发送者是被允许的发送者。此时不需要再查找DNS了,到此为止。邮件已经被接收。如果在/etc/(发送者IP地址)对应的行,则再查找DNS,,,且找出来的主机名再从DNS中正向查找若两者一致,则允许relay,跟上面的情况一样,属于第一种被允许的relay规则。如:..且又在@,则满足条件。发送者属于本地域,即被允许的发送者。需要注意的是,必须正反向解析都需要能解析且一致才行,否则不允许relay,且会在/var/log/maillog中记录一行警告信息说"ed"(可能被伪造的)但也并非所有记录"ed"信息到/var/log/maillog文件中的情况都不允许relay,也有的情况下虽然记录了一条警告消息说"ed",但邮件仍然被接收了,是在下面的情况下:例如:在B机上/etc/mail/relay-[注:在此不再累述关于/etc/mail/access,因为前面已经说了在/etc/mail/relay-相当于/etc/mail/relay故在下文中不再累述,只提/etc/m
mail relay 规则详解 来自淘豆网www.taodocs.com转载请标明出处.