快速业务通道

sendmail问题小结

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-27
发出去的邮件被当成垃圾邮件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> sendmail很容易安装和运行,起先,向我的gmail邮箱发送邮件时,总是要到垃圾邮件中找,检查发现发件人的地址是 xxx@localhost.localdomain.显然是邮件服务器的主机名配置不合理.经过研究,结论是sendmail启动时会从多个地方获得本机名和别名,他们是:
  1. RedHat操作系统的/etc/hosts文件
  2. RedHat操作系统的/etc/sysconfig/network
  3. sendmail的配置文件/etc/mail/sendmail.cfCw的值
  4. sendmail的配置文件/etc/mail/local-host-names(如果在sendmail.cf中声明使用该文件)
这些名字既用在发送过程,也用在接收过程.接收过程后面说明. 如果,使用sendmail命令向外发送一个邮件,例如: /usr/sbin/sendmail who@domain.com < message-in-file 服务器要决定在发送的邮件中的From头应该怎样填写,它的格式是account@hostname,account就是当前Linux用户的帐号,容易确定,hostname部分我感觉到它是这样确定的:系统判断这是本地用户发起的邮件,/etc/hosts中将127.0.0.1行中的第一个名字选定为hostname.如果第一个名字是localhost或者localhost.localdomain,对方一般会认为这是垃圾邮件. 于是有个办法,将真是的邮件服务器名字放在127.0.0.1这行的第一个位置,这个方法有效解决了From头的地址问题. 但是,这种解决方法仍然是不正确的,将会在http://cbl.abuseat.orgCBL上有个很不好的评级,后来,我根据http://cbl.abuseat.org/hostname.html的建议,将127.0.0.1这行恢复成只有localhostlocalhost.localdomain两个名字,而另加一行,说明实际地址和实际主机名字的对应关系.参见http://cbl.abuseat.org/hostname.html.同时在sendmail.cf中声明Dj的值为真正的主机名. 使用以下方法检验主机名配置是否合理: /usr/sbin/sendmail helocheck@cbl.abuseat.org < message-in-file 即给上述地址发个邮件,看它返回的信息里面是否包含了真正的IP地址或者真正的主机名,不应该是127.0.0.1或者localhost之类.
无法接收外部邮件的问题 系统已经能够向外发送邮件了,但是接不到外来邮件,这个问题困扰了我整整一天,后来体会到sendmail为了提高安全性,做了很多判断,收不到邮件会有多种原因:
  • 上节讲sendmail启动时获取了很多名字,这些名字用来过滤对方发的邮件,如果发来的邮件的目的地址的主机名部分不能被识别,将拒绝这个邮件,,在上节所将的配置主机名的地方一定要将所有可能的名字包含在内.
  • SMTP

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号