分享
 
 
 

企业sendmail的架构

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

人们在Internet上最常使用的就是电子邮件,很多企业用户也经常使用电子邮件系统。在Unix系统中,Sendmail是应用最广的电子邮件服务器。本文将比较详细地介绍如何建立一个Sendmail电子邮件服务器,以满足企业的基本需求。

一. Sendmail的工作模式

Sendmail是最重要的邮件传输代理程序。理解电子邮件的工作模式是非常重要的。一般情况下,电子邮件系统可分为用户代理、传输代理和投递代理几个部分。用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如Outlook Express和Foxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如Procmail。

当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器,再通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。

显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。 有许多程序可以作为信件传输代理。在Unix系统中,Sendmail是其中应用最广泛的一个,它是一个免费软件,可以支持数千甚至更多的用户,而且占用的系统资源相当少。不过,Sendmail的配置十分复杂,因此,也有人使用另外的一些工具,如Qmail或Postfix等等。

当Sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的。例如一封邮件的目标地址是ideal@linuxaid.com.cn,那么Sendmail首先确定这个地址是用户名(ideal)+机器名(linuxaid.com.cn)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。

DNS数据中,与电子邮件相关的是信件交换(Message eXchange,MX)记录,例如在linuxaid.com.cn这个域的dns数据文件中有如下设置:

IN MX 10 mail

IN MX 20 mail1

mail IN A 202.99.11.120

mail1 IN A 202.99.11.121

显然,在DNS中说明linuxaid.com.cn有2个MX服务器,于是,Sendmail试图将邮件发送给两者之一。一般来说,排在前面的MX服务器的优先级别比较高,因此服务器将试图连接mail.linuxaid.com.cn的25端口,试图将信件报文转发给它。如果成功,SMTP服务器的任务就完成了。在这以后的任务,将由mail.linuxaid.com.cn来完成。在一般情况下,MX服务器会自动把信件内容转交给目标主机。不过,也存在这样的情况,目标主机(比如linuxaid.com.cn)可能并不存在,或者不执行SMTP服务,而是由其MX服务器来执行信件的管理,这时候,最终的信件将保存在MX机器上,直到用户来查看它。

如果DNS查询无法找出对某个地址的MX记录(通常因为对方没有信件交换主机),那么Sendmail将试图直接与来自邮件地址的主机对话并且发送邮件。例如,test@aidgroup.linuxaid.com.cn,DNS中没有对应的MX记录,因此Sendmail在确定MX服务器失败后,将从DNS取得对方的IP地址并直接和对方对话试图发送邮件。

二. 工作环境

本文假设用户希望在企业网环境中创建一个电子邮件服务器,为本企业用户提供邮件服务。该服务器拥有一个合法的IP地址202.99.11.200和一个合法的域名mail.linuxaid.com.cn,并且DNS的MX记录也指向该域名(注:这里示例域名和IP地址均为伪造域名和地址)。为了满足域名需求,DNS的域数据文件应该包含以下内容:

IN MX 10 mail

mail IN A 202.99.11.200

试验环境为RedHat 6.2、Sendmail 8.11.4和Qpopper 4.0.3,可分别从http://www.Sendmail.org/current-rel...Popper_general/ 下载Sendmail和Qpopper。

三. Sendmail的安装

当前Sendmail最新的稳定版本为8.11.4,下载得到tar.gz格式的压缩包以后,将其存放在/usr/src目录下。

1.解压软件包

[root@email src]# tar xvfz Sendmail.8.11.4.tar.gz

[root@email src]# cd Sendmail-8.11.4

2.编译安装

[root@email Sendmail-8.11.4]# cd Sendmail

[root@email Sendmail]# sh Build

3.生成配置文件

[root@email Sendmail]#cd /usr/src/Sendmail-8.11.4/cf/cf/

一般该目录下应该有config.mc的文件,如果没有则创建新文件

config.mc,内容如附图所示。

然后运行:

[root@email cf]# sh Build config.cf

该命令将在该目录下生成config.cf文件。

4.安装Sendmail

[root@email Sendmail]# sh Build install

将config.cf拷贝到/etc/mail目录下,并改名为Sendmail.cf:

[root@email mail]#cp /usr/src/Sendmail-8.11.4/cf/cf/

config.cf /etc/mail/Sendmail.cf

四. Sendmail的配置

配置Sendmail的步骤如下。

1.在/etc/mail目录下创建access文件,内容如下:

127.0.0.1 RELAY

202.99.11 RELAY

这里表示允许本机和202.99.11.0网段中的机器通过该邮件服务器的转发邮件。其中202.99.11应该是您拥有的局域网络IP网段的IP地址,只需要写网络部分即可。比如说您的用户有多个网段,只需要在其中设置多个网段即可:

127.0.0.1 RELAY

202.99.11 RELAY

200.200.201 RELAY

2.对access文件生成易于检索的库文件格式:

[root@email mail]# makemap hash access.db 创建文件/etc/mail/local-host-names,其内容为本机的拥有的域名信息,因为在上面的DNS配置文件中该服务器有一个域名: email.linuxaid.com.cn,并且MX记录也指向该域名,因此该服务器就有2个域名,分别为email.linuxaid.com.cn和linuxaid.com.cn,这样用户才可以使用someone@linuxaid.com.cn这样的地址收发邮件,故该文件应该包含入下内容:linuxaid.com.cn.mail.linuxaid.com.cn.3.创建别名数据库。在/etc/mail/aliases目录下创建文件aliases,内容如下:MAILER-DAEMON: postmasterpostmaster: rootbin: rootdaemon: rootnobody: root然后生成aliases库:[root@email mail]# newaliases然后,就可以按如下方式启动Sendmail了:[root@email mail]# /usr/sbin/Sendmail -bd -q20m在第一次启动时可能出现如下的错误信息:554 5.0.0 /etc/mail/Sendmail.cf: line 41: unknownconfiguration line ""554 5.0.0 /etc/mail/Sendmail.cf: line 60: unknownconfiguration line ""不要紧张,只需要使用vi编辑器将这些行删除即可,其实41和60等行都是空白行而已。删除以后再重新启动就应该没有问题了。五. QPopper的安装配置QPopper是Unix/Linux环境下的POP3服务器,该软件配合Sendmail使用。其主要功能是实现支持用户通过POP3接收信件。安装和配置Qpopper的主要步骤如下:1.创建从/usr/mail指向/var/spool/mail/的链接[root@email src]# ln -s /var/spool/mail/ /usr/mail2.解压QPopper软件包[root@email src]# tar xvfz QPopper4.0.3.tar.gz[root@email src]# cd QPopper4.0.33.编译安装QPopper[root@email QPopper4.0.3]# ./configure[root@email QPopper4.0.3]# make[root@email QPopper4.0.3]# make install安装成功以后,QPopper将会被安装在/usr/local/sbin/目录下。设置inetd启动QPopper。编辑/etc/inetd.conf,查找pop内容的一行,在其前面添加#号,然后在改行后面添加如下内容:pop-3 stream tcp nowait root /usr/local/sbin/popperQPopper -s然后查找inetd进程ID号:[root@email QPopper4.0.3]# ps ax|grep inetd336 ? S 0:00 inetd16872 pts/0 S 0:00 grep inetd找到inetd进程号为226。然后重新启动inetd进程,重新读取配置文件:[root@www QPopper4.0.3]# kill -HUP 336这时候查看系统服务端口号:[root@email QPopper4.0.3]# netstat -ln|grep 110tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN则说明110端口已经开始正常服务。六. 测试邮件服务器接下来是测试邮件服务器的邮件发送/接收功能。注意,在测试时,不要在只对本地用户进行测试。例如,用户的域为abc.com,测试时,不要只在邮件服务器上通过mail、elm等程序测试user1@abc.com用户。因为,此时user1是本地用户,所以邮件服务器可以对其进行Relay。用户应该从局域网上的另一台机器使用Outlook等邮件客户端对服务器进行收发测试。这种配置对于IP固定用户没有问题,只需要在access文件中指定其固定IP即可,而对于需要支持流动用户,如拨号用户的应用则不大适合,因为如果完全打开RELAY功能可能导致邮件服务器的称为垃圾邮件的转发站。解决用户IP不固定问题有2种方案,一种为采用SMTP认证,即用户发送邮件以前,邮件服务器进行用户身份认证,通过则服务器为其发送邮件,否则拒绝发信;第二种方案是采用动态转发授权控制(Dynamic Relay Authorization Control,DRAC),其工作原理为: 拨号用户拨号上网后,首先收邮件,如果用户能正确收邮件,则DRAC自动在access.db中加入刚才收邮件用户的IP,并允许此IP可以发信。不过,30分钟内,此IP不发/收邮件的话,DRAC将从access.db中删除此IP。此种机制保证拨号用户在没有SMTP认证的情况下,也可以通过远程邮件服务器发送电子邮件。,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有