教学之友,学习之友。

站长教学网

如何在linux下安装和配置sendmail(2)

时间:2012-03-25 22:15来源:未知 作者:ken 点击:

  但这个仅仅表示e-mail服务器只接收你本机的邮件.为了解决这个问题,你必须修改配置,告诉SendMail去监听你对外的网卡地址.假设你的服务器上只安装了一块网卡(eth0),并用ifconfig配置好你的ip地址.这个地址可以和DNS解析的地址不一样,但你要保证DNS可以正确地解析邮件服务器的地址.这里我们使用的地址是一样的(推荐):

  [root@testmail /root]# ifconfig
  eth0 Link encap:Ethernet HWaddr 00:60:97:DE:E9:99
  inet addr:192.168.100.134 Bcast:192.168.100.255 Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  RX packets:12421 errors:0 dropped:0 overruns:0 frame:0
  TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:100
  Interrupt:10 Base address:0xe000

  lo Link encap:Local Loopback
  inet addr:127.0.0.1 Mask:255.0.0.0
  UP LOOPBACK RUNNING MTU:16436 Metric:1
  RX packets:6 errors:0 dropped:0 overruns:0 frame:0
  TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0

  可以看到这台主机的eth0的ip地址是192.168.100.134.现在修改/etc/SendMail.cf文件来配置SendMail的监听端口:

  # SMTP daemon options
  O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

  更改为

  O DaemonPortOptions=Port=smtp,Addr=192.168.100.134, Name=MTA

  改完后保存退出,并且重新启动SendMail服务:

  [root@testmail /root]# /etc/init.d/SendMail restart
  Shutting down SendMail: [ OK ]
  Starting SendMail: [ OK ]
  [root@testmail /root]#

  现在可以用netstat -nl来查看是不是已经更改了.如你所看到的,SendMail的监听端口现在是eth0的ip地址:192.168.100.134了.
  [root@testmail /root]# netstat -nl
  Active Internet connections (only servers)
  Proto Recv-Q send-Q Local Address Foreign Address State
  tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
  tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
  tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
  tcp 0 0 192.168.100.134:25 0.0.0.0:* LISTEN
  udp 0 0 0.0.0.0:32768 0.0.0.0:*
  udp 0 0 0.0.0.0:667 0.0.0.0:*
  udp 0 0 0.0.0.0:111 0.0.0.0:*
  Active UNIX domain sockets (only servers)
  Proto RefCnt Flags Type State I-Node Path
  unix 2 [ ACC ] STREAM LISTENING 1119 /dev/gpmctl
  unix 2 [ ACC ] STREAM LISTENING 1172 /tmp/.font-unix/fs7100
  [root@testmail /root]#

  ///////////////////////////////////////////////////////////////

  现在SendMail已经可以接收来自外部的连接了.我们还需要设定SendMail允许接收的域名.这个可以在/etc/mail/local-host-names文件中设定.就把域名输入进去就可以了:

  # local-host-names - include all aliases for your machine here.
  eduyo.com

  保存退出后重新启动SendMail服务:/etc/init.d/SendMail restart .这样SendMail就可以接收来自多个域的信件了.

  如果你需要再增加新的域,只有修改这个文件就可以了.

  现在的e-mail服务器在本机上已经可以完全正常的工作.它已经可以接收来自任何地方的信件(允许的域),但如果想要发送和传递邮件,则必须在这台电脑上执行.如果你的用户都直接登录到你的服务器上来发送邮件,则不需要更改任何配置,如果你希望大部分或者所有的用户可以在远程主机上使用该e-mail服务器,例如利用KMail和Outlook Express等客户端工具,则你必须更改配置来允许这些主机使用你的e-mail服务器.你需要在/etc/mail/access文件中加入下面一行,保存后运行make access.db 的命令来生成access.db文件.

  eduyo.com RELAY

  改完后的access文件应该是这样的:

  # Check the /usr/share/doc/SendMail-8.11.2/README.cf file for a
  description
  # of the format of this file. (search for access_db in that file)
  # The /usr/share/doc/SendMail-8.11.2/README.cf is part of the
  SendMail-doc
  # package.
  #
  # by default we allow relaying from localhost...
  localhost.localdomain RELAY
  localhost RELAY
  127.0.0.1 RELAY
  eduyo.com RELAY

  然后运行:

  [root@testmail mail]# make access.db
  [root@testmail mail]#

  这个make access.db命令把你的新的设定添加到SendMail的hash数据库里.SendMail用它来判断允许那些主机通过你的e-mail服务器来传递邮件.而且这样还可以通过设定子网(例如:192.168)来限制该域.但你要注意,这样设定就对外开放了,可能会有人发大量的垃圾信件来攻击你的系统.

(责任编辑:ken)

TAG标签: sendmail mail.linux
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容