邮件中继在Linux服务器上的应用

    昨天我接到徒弟的一个求助电话。他说他在Linux服务器上部署了Sendmail邮箱服务器。但是遇到了一个奇怪的问题。无法利用客户端软件来发送或者接收邮件。但是如果直接以Telnet的方式登录主机却可以正常的发送邮件。可见邮件服务器是部署正确的。那么到底是哪边出现问题了呢?这让他无从下手。

一、故障现象重现。

Sendmail服务器软件是Linux操作系统上使用的最广泛的邮件服务器,为此其与Linux操作系统的兼容性是很好的。所以这个故障不可能是邮件服务器的本身缺陷造成的。当部署好Sendmail邮件服务器之后,如果利用Outlook或者其他客户端软件来连接服务器的时候,客户端就会报错。根据客户端的错误提示信息,显示的是“登录邮件服务器时出错,用户名不对”。可是可以确性的是在配置客户端的时候,用户名与密码都是没有问题的。

那么难道是这个用户名在邮件服务器上被拉入了黑名单吗?我又新建了一个邮箱帐户进行测试,可是错误依旧。那就说明这个问题也是帐户无关。客户端软件提供的错误提示信息是对我们的一种误导。其实不仅邮件客户端,好多应用程序提供的错误信息都不怎么符合。为此对于这些错误提示信息,我们只能够拿来参考,而不能够百分之百的相信他们。后来我又以SSH的方式登录到邮件服务器,发现此时邮件发送正常。这说明邮件服务器的配置也没有问题。Telent由于其安全性不高,用户名与密码在网络中是以明文形式传送的。为此不建议大家采用。

二、问题原因分析。

经过一番努力的查找,终于发现原来是中继功能在作怪。原来在部署Sendmail服务器的时候,会关闭来自外部主机的邮件重件功能。换一句话说,此时邮件服务器之允许发送由本机发出去的电子邮件。而在客户端上发送邮件就会被遭到拒绝。其实在Sendmail服务器上做类似的限制,也是没有办法的事情。因为现在互联网上的广告邮件、病毒邮件太多。Sendmial的设计者本意是想通过这种方式来限制这些问题邮件对企业网络环境与操作系统的负面影响;但是没想到的是给用户部署邮件应用带来了麻烦。这是搬起石头砸自己的脚呀。因为关闭邮件中继功能后,用户在收发邮件的时候必须远程登录邮件主机,或者不使用邮件客户端来发送邮件,这都会引起用户的反感。因为会增加他们发送接收邮件的工作量。所以不管三七二十一,就把邮件中继功能禁用掉了,我认为这并不能够从根源来解决问题。

三、适度开发邮件中继功能。

在企业中部署邮件应用的时候,中继功能还是必须的。大家可以通过以下的方式来开启邮件服务器的中继功能。

1、 修改sendmail.cf配置文件。

利用命令“vi /etc/mail/sendmail.cf”打开配置文件,然后再文件中间会找到有一条记录:O DaemounPortOpti=Port=smtp,Addr=127.0.0.1.若在配置文件中发现这条记录,就表示只有邮件主机可以发送邮件。也就是说,除了本机之外的其他任何主机都无法利用这台邮件服务器来发送邮件。为此要允许部署在其他主机上的邮件客户端发送邮件的话,必须更改这条记录。更改的方法也很简单,只需要把这个IP地址改为主机合法的IP地址。注意这里最好不要把地址改为服务器的域名,而直接改为IP地址为好。这可以减少一些不必要的域名解析动作。

2、 修改ACCESS配置文件。

利用命令“vi /etc/mail/access”可以打开access配置文件。默认情况下,这个配置文件的内容如下图所示。从这个文件中我们可以看到在默认情况下,只允许本机的终极功能,而不允许其他主机利用中继功能。为此要让其他主机上的客户端也能够使用邮件服务器上的中继功能的话,就需要修改这个配置文件。具体修改的方法如下:

邮件中继在Linux服务器上的应用

一是要了解记录的格式。从上图中,我们可以看出这个配置文件记录的基本格式为 “允许中继功能的地址 允许中继功能的类型”。注意中间可以利用TAB符号来分根,而不用冒号等其他分隔符来分隔。这跟有些配置文件稍微有点不同。

相关推荐