当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > RedHatLinux AS3中配置sendmail服务器

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

Unix/Linux 中的 RedHatLinux AS3中配置sendmail服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-16   浏览: 639 ::
收藏到网摘: n/a

这篇文章主要是示范如何在一台新装的RedHatLinux AS3上用配置sendmail-8.12.10-1服务,构架你的e-mail服务器.
1.sendmail的安装
若用户在RedHatLinux AS3默认安装时已经安装了sendmail 8.12服务.可忽略安装过程,相关资料请查阅redhat CD里的文档.
若没有安装,安装sendmail服务,操作如下:
//查看是否安装了sendmail
#rpm –qa|grep sendmail
//将RedHatLinux AS3的第一张安装光盘放入光驱后挂载
#cd /mnt/cdrom
//进入光盘的RedHat/RPMS目录
#cd/mnt/cdrom/RedHat/RPMS
//安装所需的软件包
#rpm –ivh sendmail-8.12.10-1.i386.rpm
//将RedHat Linux9的第3张安装光盘放入光驱后挂载
#cd /mnt/cdrom
//进入光盘的RedHat/RPMS目录
#cd/mnt/cdrom/RedHat/RPMS
//安装所需的软件包
#rpm –ivh sendmail-cf-8.12.10-1.i386.rpm
#rpm –ivh sendmail-doc-8.12.10-1.i386.rpm
//弹出光盘
#cd;eject
2.检验DNS SERVER的正反向解析是否成功
要使你的新e-mail服务器正常工作,必须先解决DNS问题.把你的e-mail服务器的主机名和ip地址加入到DNS中,并用nslookup来确认:
[root@AS3 / ]#  nslookup -sil mail.supermaster.com
Server:         192.168.0.111
Address:        192.168.0.111#53
Name:   www.supermaster.com
Address: 192.168.0.111
同样你也要试一下反向域名解析,这个对防止邮件延迟有很重要的作用.现在大部分的邮件服务器都是把反向域名解析作为邮件传送时
认证的一部分.所以用的你ip地址来试一下反向域名解析是否正确.
[root@AS3 / ]# nslookup -sil 192.168.0.111
Server:         192.168.0.111
Address:        192.168.0.111#53
111.0.168.192.in-addr.arpa      name = www.supermaster.com.
111.0.168.192.in-addr.arpa      name = mail.supermaster.com.
111.0.168.192.in-addr.arpa      name = ftp.supermaster.com.
111.0.168.192.in-addr.arpa      name = ssL.supermaster.com.
3.配置sendmail服务
>>1.监听本机的smtp端口
RedHatLinux AS3 默认安装已经可以使SMTP服务在本机运行.
你用netstat -nl可以看到所有后台程序监听的端口,注意这一行:127.0.0.1:25,这个表示sendmail服务已经在监听本机的25(SMTP)
端口了:
[root@AS3 / ]# 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 127.0.0.1:32769         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:32770           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:931             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:110             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:6000            0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:913             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.111:53        0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:32768           0.0.0.0:*                          
udp        0      0 0.0.0.0:2049            0.0.0.0:*                          
udp        0      0 0.0.0.0:32769           0.0.0.0:*                          
udp        0      0 0.0.0.0:32770           0.0.0.0:*                          
udp        0      0 192.168.0.111:137       0.0.0.0:*                          
udp        0      0 0.0.0.0:137             0.0.0.0:*                          
udp        0      0 192.168.0.111:138       0.0.0.0:*                          
udp        0      0 0.0.0.0:138             0.0.0.0:*                          

udp        0      0 0.0.0.0:910             0.0.0.0:*                          
udp        0      0 0.0.0.0:928             0.0.0.0:*                          
udp        0      0 192.168.0.111:53        0.0.0.0:*                          
udp        0      0 127.0.0.1:53            0.0.0.0:*                          
udp        0      0 0.0.0.0:710             0.0.0.0:*                          
udp        0      0 0.0.0.0:111             0.0.0.0:*                          
udp        0      0 0.0.0.0:631             0.0.0.0:*                          
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     2456   /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     2634   /tmp/.gdm_socket
unix  2      [ ACC ]     STREAM     LISTENING     2496   /tmp/.font-unix/fs7100
unix  2      [ ACC ]     STREAM     LISTENING     2644   /tmp/.X11-unix/X0
但这个仅仅表示e-mail服务器只接收你本机的邮件.为了解决这个问题,你必须修改配置,告诉sendmail去监听你对外的网卡地址.
>>2.解决对外smtp端口的监听
假设你的服务器上安装了一块网卡(eth0),并用ifconfig配置好你的ip地址.这个地址可以和DNS解析的地址不一样,但你要保证DNS可以正确
地解析邮件服务器的地址.这里我们使用的地址是一样的(推荐):
[root@AS3 / ]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:C8:DC 
          inet addr:192.168.0.111  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:661 errors:0 dropped:0 overruns:0 frame:0
          TX packets:399 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:68152 (66.5 Kb)  TX bytes:50136 (48.9 Kb)
          Interrupt:10 Base address:0x1400
可以看到这台主机的eth0的ip地址是192.168.0.111.现在修改/etc/mail/sendmail.cf文件来配置sendmail的监听端口:
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
更改为
O DaemonPortOptions=Port=smtp,Addr=192.168.0.111, Name=MTA
改完后保存退出,并且重新启动sendmail服务:
[root@AS3 / ]# service sendmail restart
Shutting down sendmail:                                    [  OK  ]

Shutting down sm-client:                                   [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]
[root@mail /root]#
现在可以用netstat -nl来查看是不是已经更改了.如你所看到的,sendmail的监听端口现在是eth0的ip地址:192.168.0.111了.
[root@AS3 / ]# 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 127.0.0.1:32769         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:32770           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:931             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:110             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:6000            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:913             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.111:53        0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     

tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 192.168.0.111:25        0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:32768           0.0.0.0:*                          
udp        0      0 0.0.0.0:2049            0.0.0.0:*                          
udp        0      0 0.0.0.0:32769           0.0.0.0:*                          
udp        0      0 0.0.0.0:32770           0.0.0.0:*                          
udp        0      0 192.168.0.111:137       0.0.0.0:*                          
udp        0      0 0.0.0.0:137             0.0.0.0:*                          
udp        0      0 192.168.0.111:138       0.0.0.0:*                          
udp        0      0 0.0.0.0:138             0.0.0.0:*                          
udp        0      0 0.0.0.0:910             0.0.0.0:*                          
udp        0      0 0.0.0.0:928             0.0.0.0:*                          
udp        0      0 192.168.0.111:53        0.0.0.0:*                          
udp        0      0 127.0.0.1:53            0.0.0.0:*                          
udp        0      0 0.0.0.0:710             0.0.0.0:*                          

udp        0      0 0.0.0.0:111             0.0.0.0:*                          
udp        0      0 0.0.0.0:631             0.0.0.0:*                          
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     2456   /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     2634   /tmp/.gdm_socket
unix  2      [ ACC ]     STREAM     LISTENING     2496   /tmp/.font-unix/fs7100
unix  2      [ ACC ]     STREAM     LISTENING     2644   /tmp/.X11-unix/X0
>>3.设置允许接受的域名
现在sendmail已经可以接收来自外部的连接了.我们还需要设定sendmail允许接收的域名.这个可以在/etc/mail/local-host-names
文件中设定.就把域名输入进去就可以了:
# local-host-names - include all aliases for your machine here.
supermaster.com //add
保存退出后重新启动sendmail服务:/etc/init.d/sendmail restart .这样sendmail就可以接收来自多个域的信件了. 如果你需要再增加新的域,只有修改这个文件就可以了.
>>4.client 端的设置
现在的e-mail服务器在本机上已经可以完全正常的工作.它已经可以接收来自任何地方的信件(允许的域),但如果想要发送和传递邮 件,则必须在这台电脑上执行.如果你的用户都直接登录到你的服务器上来发送邮件,则不需要更改任何配置,如果你希望大部分或者所有的用户可以在远程主机上使用该e-mail服务器,例如利用KMail和Outlook Express及Mozilla Mail等客户端工具,则你必须更改配置来允许这些主机使
用你的e-mail服务器.你需要在/etc/mail/access文件中加入下面一行,保存后运行make access.db 的命令来生成access.db文件.
supermaster.com RELAY
改完后的access文件应该是这样的:
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/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
supermaster.com                 RELAY //add
然后运行:
[root@AS3 mail ]# make access.db
[root@AS3 mail ]#
这个make access.db命令把你的新的设定添加到sendmail的hash数据库里.sendmail用它来判断允许那些主机通过你的e-mail服务器来传递邮件.而且这样还可以通过设定子网(例如:192.168)来限制该域.但你要注意,这样设定就对外开放了,可能会有人发大量的垃圾 信件来攻击你的系统.
现在你可以收到所有来自外部的邮件.并且允许信赖的客户在远程传递信件.接下去你想要做的可能是如何在远程收取这些信件.要达到 这个目的,你需要安装IMAP 或者 POP. RedHatLinux AS3默认安装的时候并没有安装POP/IMAP,所以你需要安装imap-2002d-2包.
要查看这个包的安装状态,可以用下面的命令:rpm -aq | grep -i imap.如果发现没有安装,那就把RedHatLinux AS3第二张安装光盘
放到光驱里.然后运行如下命令:
[root@AS3 mail ]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
(Successful Mount of Read-Only Media)
mount上光盘后运行这个命令来安装这个包:rpm -Uvh /mnt/cdrom/RedHat/RPMS/ imap-2002d-2.i386.rpm.
[root@AS3 mail ]# rpm -Uvh /mnt/cdrom/RedHat/RPMS/ imap-2002d-2.i386.rpm
Preparing... ########################################### [100%]
1:imap ########################################### [100%]
再运行一次 rpm -aq | grep -i imap
IMAP 包就罗列出来了.
[root@AS3 mail ]# rpm -aq | grep -i imap
imap-2002d-2
[root@AS3 mail ]#
>>5.ipop3的设置
当正确的包被安装后你要打开POP3的连接端口,这需要修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成yes.这个文件
大致是这样的:
# default: off
# description: The POP3 service allows remote users to access their mail \
#              using an POP3 client such as Netscape Communicator, mutt, \

#              or fetchmail.
service pop3
{
        disable = no //change
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/ipop3d
        log_on_success  += HOST DURATION
        log_on_failure  += HOST
}
接下去重新启动xinetd来是它生效:
[root@AS3 xinetd.d]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@AS3 xinetd.d]#
建议将ipop3 设置成自动启动,操作如下:
#redhat-config-services或setup或ntsysv
OK,至此sendmail的配置完成,发送一封测试邮件到你的e-mail服务器,并且用你熟悉的收信工具来收取这封信.
4.sendmail的性能优化
或许你会收到这样的抱怨,说是当客户端程序运行在防火墙后面的话会发生连接pop端口速度变慢.
造成这个延时的原因是你的e-mail服务器初始一个IDENT会话来确认客户端的身份.如果这个询问没有反应,那服务器就会在5秒后发出
一个超时信号.这个值可以降低到1秒,从而减少IDENT产生影响.修改/etc/mail/sendmail.cf文件,把timeout的值改成你想要的值.
# timeouts (many of these)
#O Timeout.ident=5s
change to
O Timeout.ident=1s
现在你的e-mail服务器可以给你的用户提供服务了.当然还有更多的配置可以用来提高服务器性能,在这篇文章中就不多提了.
Linux将会为你的e-mail服务提供一个稳定的,高效的平台.如果想了解更多的关于sendmail的知识,请访问www.sendmail.org.
注:笔者建议大家在第一测试sendmail时,把fireware 服务关闭。