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

发表于:2009-5-20 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

#
Linux

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

  一、故障现象重现。

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

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

  二、问题原因分析。

  经过一番努力的查找,终于发现原来是中继功能在作怪。原来在部署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配置文件。默认情况下,这个配置文件的内容如下图所示。从这个文件中我们可以看到在默认情况下,只允许本机的终极功能,而不允许其他主机利用中继功能。为此要让其他主机上的客户端也能够使用邮件服务器上的中继功能的话,就需要修改这个配置文件。具体修改的方法如下:

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

  二是要了解地址表示方式。在这个配置文件中,前面的地址有多种表达方式。如在地址处,可以加入特定用户的电子邮件地址。那么以后只要客户使用的邮件地址在这个列表内,就可以使用客户端软件来发送邮件。如可以使用特定主机的IP地址,那么以后就可以在特定的主机上采用Outlook等客户端软件发送邮件等等。但是如果当用户数量或者主机数量比较多的情况下,需要一条一条的进行配置,工作量会很大。其实这里还有一些比较简便的配置方法。如通常情况下,企业在部署邮件服务器的时候,都会有一个统一的后缀名。如像126邮箱,其后缀都为126.com。在这个配置文件中,也可以利用后缀名来进行配置。如在这里加入126ABC.com,则就允许所有以126ABC.com结尾的帐号使用这台邮件主机上的中继功能。即所有的帐户都可以在其他主机上通过客户端来发送邮件。

  三是需要了解中继功能的类型。如上面的关键字RELAY,则是允许发送来自这个地址的电子邮件。另外还有一些关键字。如REJECT,则表示禁止发送火花则接收来自这个地址的电子邮件;如DISCARD则表示邮件服务器会自动删除来自这个地址的电子邮件,或者说发送到这个地址的电子邮件会自动过滤掉不会返回任何信息给客户端。另外如果要实现复杂一点的空置,则可以使用信息代号+信息字符串的方式。此时服务器会对来自前面定义的地址的电子邮件和发送到这个电子邮件地址的邮件响应信息代号和信息字符串。通过这个功呢功能,系统管理员可以自定义错误信息,以提高错误代码的价值。

  不过在配置启用这个中继功能的时候,还是需要谨慎。如对所有的客户端都开启了中继功能,则如果有一个客户端中毒了,那么其就有可能对所有的用户发送垃圾邮件。此时由于其通过客户端发送邮件,为此可能企业内部的所用用户都会中招。这会在很大程度上给惬意的网络与邮件服务器带来很大的负面影响。如可能会消耗邮件服务器的硬盘空间;会占用企业网络的带宽等等。所以最好在保障企业用户邮件正常使用的情况下,在最小范围内容启用这个中继功能。为了达到这个目的,就需要在上面这个配置文件中动脑精了。如发现某个地址老是发垃圾邮件,那么系统管理员就有理由怀疑这个客户端可能已经中毒了。此时系统管理员就可以在这个配置文件中,把这个邮件地址或者客户端IP地址列入黑名单,利用Reject把这些有问题的地址的中继功能禁用掉。如此的话,他们就无法继续发垃圾邮件了。但是此时他仍然可以通过其他方式来阅读相关的邮件。可见,这比暂时禁用用户的邮件帐户要合理的多。因为帐户一旦禁用,原先的邮件如果保存在服务器上,那么将无法阅读。而利用中继功能来暂时限制其发送垃圾邮件,则还允许其查看以前的邮件。毕竟用户中毒也不是他们所希望的。这可以减少用户为此带来的损失。

  另外需要说明的是,这两个配置文件修改后,并不能够马上生效。而是需要使用命令来手工启用这些配置文件。如access配置文件Sendmial邮件服务器无法直接读取。而需要利用makemap命令把这个文件转换为邮件服务器系统可以识别的db文件格式。否则的话,服务器系统将无法辨认修改后的access配置文件。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • savey2mail
    2013-4-24 13:58:07

    很多用户不具备邮件中继的技术支持,可以选则专业公司来代理完成
    邮件中继  相对比较复杂,可以登陆  www.mailsys.cn   详细了解;如果你在深圳的话,可以到 思迈威 (mailsys)现场咨询;致电 4006005970     专业客服为你解答   

    13302915204

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号