随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,很多公司和个人都把linux提供的服务作为满足这些需求的解决方案。
SendMail最初是1979年由EricAllman编写而成。它起先运行在BSD4.0平台上。但这个程序不够灵活,每次编译的时候都需要重新配置。随着TCP协议和其他方面的发展,它本身的不灵活性已经明显不能满足日益增长的需求。EricAllman决定重新编写SendMail,从而诞生了现在的MTA标准。这是对SendMail的简短介绍.我们这篇文章主要是示范如何在一台新装的redhat7.1上用配置SendMail8.11.2服务,构架你的e-mail服务器。
redhat7.1默认安装的时间已经安装了SendMail8.11服务。因为redhat安装使用都非常的简单,我们这里就忽略安装过程,相关资料请查阅redhatCD里的文档.要使你的新e-mail服务器正常工作,必须先解决DNS问题.把你的e-mail服务器的主机名和ip地址加入到DNS中,并用nslookup来确认:
以下为引用的内容: [root@testmail/root]#nslookup-siltestmail.blank.com Server:192.168.100.1 Address:192.168.100.1#53 Name:testmail.blank.com Address:192.168.100.134 |
同样你也要试一下反向域名解析,这个对防止邮件延迟有很重要的作用。现在大部分的邮件服务器都是把反向域名解析作为邮件传送时认证的一部分。所以用的你ip地址来试一下反向域名解析是否正确。
以下为引用的内容: [root@testmail/root]#nslookup-sil192.168.100.134 Server:192.168.100.1 Address:192.168.100.1#53 134.100.168.192.in-addr.arpaname=TESTMAIL.blank.com. |
正如你所看到的,DNS服务工作正常,接下去就让我们动手来配置SendMail服务.redhat7.1默认安装已经可以使SMTP服务在本机运行。
你用netstat-nl可以看到所有后台程序监听的端口,注意这一行:127.0.0.1:25,这个表示SendMail服务已经在监听本机的25(SMTP)端口了:
以下为引用的内容: [root@testmail/root]#netstat-nl ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp000.0.0.0:327680.0.0.0:*LISTEN tcp000.0.0.0:1110.0.0.0:*LISTEN tcp000.0.0.0:220.0.0.0:*LISTEN tcp00127.0.0.1:250.0.0.0:*LISTEN udp000.0.0.0:327680.0.0.0:* udp000.0.0.0:6670.0.0.0:* udp000.0.0.0:1110.0.0.0:* ActiveUNIXdomainsockets(onlyservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[ACC]STREAMLISTENING1119/dev/gpmctl unix2[ACC]STREAMLISTENING1172/tmp/.font-unix/fs7100[page] |
但这个仅仅表示e-mail服务器只接收你本机的邮件。为了解决这个问题,你必须修改配置,告诉SendMail去监听你对外的网卡地址。假设你的服务器上只安装了一块网卡(eth0),并用ifconfig配置好你的ip地址,这个地址可以和DNS解析的地址不一样,但你要保证DNS可以正确地解析邮件服务器的地址。这里我们使用的地址是一样的(推荐):
以下为引用的内容: [root@testmail/root]#ifconfig eth0Linkencap:EthernetHWaddr00:60:97:DE:E9:99 inetaddr:192.168.100.134Bcast:192.168.100.255Mask:255.255.255.0 UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1 RXpackets:12421errors:0dropped:0overruns:0frame:0 TXpackets:5errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:100 Interrupt:10Baseaddress:0xe000 loLinkencap:LocalLoopback inetaddr:127.0.0.1Mask:255.0.0.0 UPLOOPBACKRUNNINGMTU:16436Metric:1 RXpackets:6errors:0dropped:0overruns:0frame:0 TXpackets:6errors:0dropped:0overruns:0carrier:0 collisions:0txqueuelen:0 |
可以看到这台主机的eth0的ip地址是192.168.100.134.现在修改/etc/SendMail.cf文件来配置SendMail的监听端口:
以下为引用的内容: #SMTPdaemonoptions ODaemonPortOptions=Port=smtp,Addr=127.0.0.1,Name=MTA 更改为 ODaemonPortOptions=Port=smtp,Addr=192.168.100.134,Name=MTA |
改完后保存退出,并且重新启动SendMail服务:
以下为引用的内容: [root@testmail/root]#/etc/init.d/SendMailrestart ShuttingdownSendMail:[OK] StartingSendMail:[OK] [root@testmail/root]# |
现在可以用netstat-nl来查看是不是已经更改了.如你所看到的,SendMail的监听端口现在是eth0的ip地址:192.168.100.134了。
以下为引用的内容: [root@testmail/root]#netstat-nl ActiveInternetconnections(onlyservers) ProtoRecv-Qsend-QLocalAddressForeignAddressState tcp000.0.0.0:327680.0.0.0:*LISTEN tcp000.0.0.0:1110.0.0.0:*LISTEN tcp000.0.0.0:220.0.0.0:*LISTEN tcp00192.168.100.134:250.0.0.0:*LISTEN udp000.0.0.0:327680.0.0.0:* udp000.0.0.0:6670.0.0.0:* udp000.0.0.0:1110.0.0.0:* ActiveUNIXdomainsockets(onlyservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[ACC]STREAMLISTENING1119/dev/gpmctl unix2[ACC]STREAMLISTENING1172/tmp/.font-unix/fs7100 [root@testmail/root]# /////////////////////////////////////////////////////////////// |
现在SendMail已经可以接收来自外部的连接了。我们还需要设定SendMail允许接收的域名。这个可以在/etc/mail/local-host-names文件中设定。就把域名输入进去就可以了:
以下为引用的内容: #local-host-names-includeallaliasesforyourmachinehere. blank.com |
保存退出后重新启动SendMail服务:/etc/init.d/SendMailrestart.这样SendMail就可以接收来自多个域的信件了。
如果你需要再增加新的域,只有修改这个文件就可以了。