2024年4月2日发(作者:)

第一部份 mail relay 规则详解

一. 环境:Sendmail 8.9.3

二. 默认情况下的relay规则

在默认情况下,也就是安装完系统(Sendmail)不做任何设置的情况下,则只能在本机上

收发邮件,网络上(局域网或Inter)的任何其它主机不能向该SMTP发送邮件,若希望能实现

发送,则需满足下面的任何一个条件即可(不需要同时满足):

1. 发送者身份属于“本地或者被允许的发送者”。

2. 接收者身份属于“本地或者被允许的接收者”。

也就是说,不管是邮件的发送者还是邮件接收对象只要其中之一属于本地或被允许的

时候,Sendmail邮件才允许relay你的邮件.那么什么是“本地/被允许的发送者”呢?

实际上只有一种,就是列在文件/etc/mail/relay-domains(默认安装后无此文件,你

可以创建它)或者/etc/mail/access中的域名或者IP地址行,如:

(/etc/mail/relay-domains)

relay (/etc/mail/access)

注:

1

a.我们假定某公司域名为

b.上面的两行含义相同,只是在不同的文件中所要求的语法不同而已,在

/etc/mail/access文件中需要加上relay.

===先讨论域名的情况:

回到前面所说的何谓“本地/被允许的发送者”,如果在relay-domains/access文件

中列出的是域名,则对发送者的IP地址先查找/etc/hosts文件(一般是如此,因为默认情

况下对Linux来说,查找DNS是先查找/etc/hosts文件看是否有此IP地址对应的主机域

名,如无再做反向DNS查找,如果能够反向查找出来,且查找出来的主机的域部分属于

上面两个文件中列出的域名,再对该主机名做正向DNS查找出的IP地址(主机的A记录)

与发送者IP地址相同,则允许relay邮件,这表明发送者属于被允许的发送者。

也就是说,先看/etc/文件中的定义,一般是这样:

order hosts,bind

multi on

其中的order行指明先查/etc/hosts,再找DNS。现在举个例子:

如下图:

内部LAN ¦ Inter

2