选择显示字体大小

配置你的第一台e-mail服务器

作者 eric jorn seneca
翻译 superstar
这篇文章是帮你配置你的第一台e-mail服务器的。
随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,
很多公司和个人都把linux提供的服务作为满足这些需求的解决方案。

sendmail最初是1979年由eric allman编写而成。它起先运行在bsd 4.0平台上。但这个程序不够灵活,每次编译的时候都需要
重新配置。随着tcp协议和其他方面的发展,它本身的不灵活性已经明显不能满足日益增长的需求。eric allman决定重新编写sendmail,
从而诞生了现在的mta标准。这是对sendmail的简短介绍.我们这篇文章主要是示范如何在一台新装的redhat 7.1上用配置sendmail8.11.2
服务,构架你的e-mail服务器.

redhat7.1默认安装的时间已经安装了sendmail 8.11服务.因为redhat安装使用都非常的简单,我们这里就忽略安装过程,相关资料
请查阅redhat cd里的文档.
要使你的新e-mail服务器正常工作,必须先解决dns问题.把你的e-mail服务器的主机名和ip地址加入到dns中,并用nslookup来确认:
[root@testmail /root]# nslookup -sil testmail.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 -sil 192.168.100.134
server: 192.168.100.1
address: 192.168.100.1#53

134.100.168.192.in-addr.arpa name = testmail.blank.com.

正如你所看到的,dns服务工作正常,接下去就让我们动手来配置sendmail服务.redhat 7.1 默认安装已经可以使smtp服务在本机运行.
.netstat -nl可以看到所有后台程序监听的端口,注意这一行:127.0.0.1:25,这个表示sendmail服务已经在监听本机的25(smtp)
端口了:
[root@testmail /root]#.netstat -nl
active inte.net 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 127.0.0.1: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

但这个仅仅表示e-mail服务器只接收你本机的邮件.为了解决这个问题,你必须修改配置,告诉sendmail去监听你对外的网卡地址.假设你
服务器上只安装了一块网卡(eth0),并用ifconfig配置好你的ip地址.这个地址可以和dns解析的地址不一样,但你要保证dns可以正确
地解析邮件服务器的地址.这里我们使用的地址是一样的(推荐):
[root@testmail /root]# ifconfig
eth0 link encap:ethe.net hwaddr 00:60:97:de:e9:99
.net 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
.net 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 inte.net 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.
blank.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文件.

blank.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
blank.com relay

然后运行:

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

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

现在你可以收到所有来自外部的邮件.并且允许信赖的客户在远程传递信件.接下去你想要做的可能是如何在远程收取这些信件.要达到
这个目的,你需要安装imap 或者 pop. redhat 7.1 默认安装的时候并没有安装pop/imap,所以你需要安装imap-2000-9 rpm包.
要查看这个包的安装状态,可以用下面的命令:rpm -aq grep -i imap.如果发现没有安装,那就把redhat 7.1第二张安装光盘
放到光驱里.然后运行如下命令:
[root@testmail 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-2000-9.i386.rpm.

[root@testmail mail]# rpm -uvh /mnt/cdrom/redhat/rpms/imap-2000-9.i386.rpm
preparing... ########################################### [100%]
1:imap ########################################### [100%]

再运行一次 rpm -aq grep -i imap
imap 包就罗列出来了.

[root@testmail mail]# rpm -aq grep -i imap
imap-2000-9
[root@testmail mail]#

当正确的包被安装后你要打开pop3的连接端口,这需要修改/etc/x.netd.d/下面的ipop3文件,把disable的值改成no.这个文件
大致是这样的:
# 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
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += userid
log_on_failure += userid
disable = no
}


接下去重新启动x.netd来是它生效:
[root@testmail x.netd.d]# /etc/init.d/x.netd restart
stopping x.netd: [ ok ]
starting x.netd: [ ok ]
[root@testmail x.netd.d]#

现在就可以发送一封测试邮件到你的e-mail服务器,并且用你熟悉的收信工具来收取这封信.应该是没有问题的.

下面优化一下服务器的性能.或许你会收到这样的抱怨,说是当客户端程序运行在防火墙后面的话会发生连接pop端口速度变慢.
造成这个延时的原因是你的e-mail服务器初始一个ident会话来确认客户端的身份.如果这个询问没有反应,那服务器就会在5秒后发出
一个超时信号.这个值可以降低到1秒,从而减少ident产生影响.修改/etc/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.   


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons