邮件服务器的架设方法,第1张

用 Win2003 架设邮件服务器

很多企业局域网内都架设了邮件服务器,用于进行公文发送和工作交流。但使用专业的企业邮件系统软件需要大量的资金投入,这对于很多企业来说是无法承受的。其实我们可以通过Windows Server 2003提供的POP3服务和SMTP服务架设小型邮件服务器来满足我们的需要。

一、安装POP3和SMTP服务组件

Windows Server 2003默认情况下是没有安装POP3和SMTP服务组件的,因此我们要手工添加。

1安装POP3服务组件

以系统管理员身份登录Windows Server 2003 系统。依次进入“控制面板→添加或删除程序→添加/删除Windows组件”,在弹出的“Windows组件向导”对话框中选中“电子邮件服务”选项,点击“详细信息”按钮,可以看到该选项包括两部分内容:POP3服务和POP3服务Web管理。为方便用户远程Web方式管理邮件服务器,建议选中 “POP3服务Web管理”。

2安装SMTP服务组件

选中“应用程序服务器”选项,点击“详细信息”按钮,接着在“Internet信息服务(IIS)”选项中查看详细信息,选中“SMTP Service”选项,最后点击“确定”按钮。此外,如果用户需要对邮件服务器进行远程Web管理,一定要选中“万维网服务”中的“远程管理(HTML)”组件。完成以上设置后,点击“下一步”按钮,系统就开始安装配置POP3和SMTP服务了。

二、配置POP3服务器

1创建邮件域

点击“开始→管理工具→POP3服务”,弹出POP3服务控制台窗口。选中左栏中的POP3服务后,点击右栏中的“新域”,弹出“添加域”对话框,接着在“域名”栏中输入邮件服务器的域名,也就是邮件地址“@”后面的部分,如“rtjnet”,最后点击“确定”按钮。其中“rtjnet”为在Internet上注册的域名,并且该域名在DNS服务器中设置了MX邮件交换记录,解析到Windows Server 2003邮件服务器IP地址上。

2创建用户邮箱

选中刚才新建的“rtjnet”域,在右栏中点击“添加邮箱”,弹出添加邮箱对话框,在“邮箱名”栏中输入邮件用户名,然后设置用户密码,最后点击“确定”按钮,完成邮箱的创建。

三、配置SMTP服务器

完成POP3服务器的配置后,就可开始配置SMTP服务器了。点击“开始→程序→管理工具→Internet信息服务(IIS)管理器”,在 “IIS管理器”窗口中右键点击“默认SMTP虚拟服务器”选项,在弹出的菜单中选中“属性”,进入“默认SMTP虚拟服务器”窗口,切换到“常规”标签页,在“IP地址”下拉列表框中选中邮件服务器的IP地址即可。点击“确定”按钮,这样一个简单的邮件服务器就架设完成了。

完成以上设置后,用户就可以使用邮件客户端软件连接邮件服务器进行邮件收发工作了。在设置邮件客户端软件的SMTP和POP3服务器地址时,输入邮件服务器的域名“rtjnet”即可。

四、远程Web管理

Windows Server 2003还支持对邮件服务器的远程Web管理。在远端客户机中,运行IE浏览器,在地址栏中输入“https://服务器IP地址:8098”,将会弹出连接对话框,输入管理员用户名和密码,点击“确定”按钮,即可登录Web管理界面。

效果截图

Sendmail :sendmail 是最古老的 MTA(Mail Transfer Agent,电子邮件系统)之一,最早它诞生的时候,Internet 还没有被标准化,当时主机之间使用的是 UUCP 技术来交换邮件。它被设计得比较灵活,便于配置和运行于各种类型的机器。

Qmail :qmail 是新生一代的 MTA 代表,它以速度快、体积小、易配置安装等特性而著称。作者 DJBernstein 是一个数学教授,富有传奇色彩。他于 1995 年开发 qmail,1996 年发布 070 版,并使用了多种当时比较先进的 技术,包括 Maildir,与 sendmail 单个 binary 不同的模块化设计,权限分离,以及使用了大量由他编写的配套工具,如 daemontool,ucsip-tcp 等。qmai迅速成为了 Internet 上最有名的  MTA,使用者众。

postfix :postfix如今已经独树一帜,流水线、模块化的设计,兼顾了效率和功能。灵活的配置和扩展,使得配置 postfix 变得富有趣味。其主要的特点是速度快、稳定,而且配置/功能非常强大,并和 sendmail 类似,提供了与外部程序对接的 API/protocol。尤其是配置部分,postfix 另一个优势是至今依然保持活跃的开发工作,而且稳步发展,适合高流量大负载的系统,扩充能力较强。本实验也是基于 postfix 服务器软件来实现。

邮件服务器基本的工作原理

MUA(Mail User Agent):向外发送邮件,以及提供用户浏览与编写邮件的功能。

MTA(Mail Transfer Agent):(可以理解为 smtpd 服务器)帮忙将用户的邮件传递出去或接收进来。

MDA(Mail Delivery Agent):将接收下来的邮件存放到对应用户邮筒当中的程序。通过分析 MTA 所收到邮件的表头或内容,来判断此邮件是属于哪个用户,然后决定将此邮件投递给哪个用户的邮筒里。

MRA(Mail Retrieval Agent):通过 MRA 服务器提供的邮政服务协议(POP)来接收自己的邮件。

邮件中继:

SMTPD 要支持邮件路由功能,需要打开 Open Relay 开放式中继。

SMTPD 是根据收件人判断邮件是否需要中继,而且只给指定的客户端中继。

注:当 DNS 上存在多个 MX 记录的主机这时就是根据 DNS 的邮件级判断了。DNS 上定义的值越小,其优先级越高。辅助交换器接受到邮件并不能保存邮件。而是这个辅助交换器会等到主邮件交换器空闲的时候把代替它接受下来的邮件在转给主邮件交换器。所以任何邮件处理都是主邮件交换器处理的。所以我们实际情况下,如果有 2 台服务器做邮件交换器,性能比较高的应该为主的。

安装配置过程中,postfix 通过 Internet 发送和接收 email,并存储在用户邮箱里。同时客户也可以通过 IMAP 或者 POP3 恢复他们的邮件。其中的客户认证是通过  Courier Authdaemon 模块的。下图表示出了这个过程:

出现安装界面时,首先按下 <tab> 键切换到确定,然后按下回车。

安装 postfix 的时候会问你安装的服务器类型,对于我们的需要,我们选择默认的 Internet Site,这是最符合我们的服务器类型,然后按下回车确认。

使用 vim 编辑配置文件:

大概在第 31 行,编辑 myhostname,修改为 myhostname = shiyanloucom。

然后我们把 alias_map 参数修改为 alias_maps = hash:/etc/postfix/virtual,之后会讲解 virtual 里面填写什么。

之后设置 mynetworks 段落,它定义可以使用这台服务器的主机,我们这里就用默认的本地地址。你也可设置为其他地址。

编辑完成后按下 Esc 键,输入 :wq 保存退出。

此命令创建了一个用户 master,其中 -d 和 -m 选项用来为登录名 master 产生一个主目录 /usr/master(/usr 为默认的用户主目录所在的父目录)。

我们编写之前设置的  virtual文件,这些邮箱地址是用来传送邮件的。

在这个文件里,我们将设置一个表,对应相关的邮件地址。

完成后保存关闭文件。

我们可以通过调用下面这个命令来实现我们的映射:

接着我们重启 postfix,完成我们的修改:

我们可以用 shiyanlou 这个账号给 master 这个账号发一封邮件。首先我们需要安装一个命令行收发邮件的软件 mailutils 。

写一封邮件

输入如下内容:

其中 -s 参数是指邮件的标题,< 后面是将要发送的邮件内容从 hellotxt 中重定向。这个命令如果正确执行不会有输出。

然后我们切换到 master 用户,查看我们的邮件。

按下回车建可以查看邮件内容,输入 quit 即可退出邮箱。

Linux 邮件服务器原理介绍,编译安装 Postfix 实现本地的邮件服务

Ubuntu 服务器指南-邮件服务-Postfix

how-to-run-your-own-mail-server-with-mail-in-a-box-on-ubuntu-14-04

postfix的安装过程

31原始码包的安装

1. 获取postfix的原始码包

从postfix官方站点wwwpostfixorg取得postfix的原始码包postfix-19991231-pl08targz。将其拷贝到/tmp

2.解开原始码包,将生成/tmp/ postfix-19991231-pl08目录。

tar xvzf postfix-19991231-pl08targz

3.编译原始码包

cd /tmp/ postfix-19991231-pl08

make

4.建立一个新用户“postfix”,该用户必须具有唯一的用户id和组id号,同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程式和可用的用户宿主目录。我们能先用adduser postfix 添加用户再编辑/etc/passwd文件中的相关条目如下所示:

postfix::12345:12345:postfix:/no/where:/no/shell

5.确定/etc/aliases文件中包含如下的条目:

postfix: root

6. 以root用户登录,在/tmp/ postfix-19991231-pl08目录下执行命令:

/installsh

7. 启动postfix

# postfix start

8.关于maildrop目录权限的说明:

postfix能使用一个所有用户都可写的(也即目录权限为1773)的maildrop

目录来让本地用户提交邮件。这种方法避免了使用set-uid 或 set-gid 软件,并且在邮件系统不可用时,用户仍然能提交邮件。其他用户没有访问该目录中的队列文件的权限。接收来自网络的邮件时postfix不使用maildrop目录。不过,由于该目录的权限是733,其他用户能建立一个硬连接到该目录中的文件从而导致该邮件被投递多次或无法删除,也就是说这将导致安全性问题。如果你想要使用这种方式来让用户提交邮件,就要在installsh 脚本问你是否需要set-gid 时回答no。

如果你的系统有多个用户的话,最佳取消以上的方式而采用利用set-gid 用

户权限提交邮件的方式。这时,我们首先需要建立一个组id唯一的组"maildrop" 并且确定该组中没有用户成员。然后在installsh 问你是否需要set-gid 时指定"maildrop"。

提示:在安装postfix之前,请删除已安装的sendmail。

32 rpm包的安装

1. 获取postfix的rpm软件包。

我们能从http://wwwalltradinges/postfix/rpms/i386/ 获得postfix的rpm软件包。当前的最新版本是postfix-20000531-2i386rpm。

2. 备份你的/etc/aliases和/etc/aliasesdb,因为postfix要使用该别名数据库。

3. 用以下命令查看系统是否安装了sendmail:

[root@mail /root]# rpm -qa |grep sendmail

sendmail-doc-893-15

sendmail-893-15

sendmail-cf-893-15

4. 用以下命令强行卸载sendmail:

[root@mail /root]# rpm -e sendmail sendmail-cf sendmail-doc --nodeps

5. 用以下命令杀死运行中的sendmail进程:

[root@mail /root]# killall sendmail

6. 安装postfix:

7. 启动postfix

[root@mail /root]# /etc/rcd/initd/postfix start

33 设置系统每次启动时自动启动postfix

1如果你安装的是postfix的原始码包,能在/etc/rcd/rclocal文件中加入如下的语句让系统每次启动时自动启动postfix:

if [ -f /usr/libexec/postfix ]; then

/usr/libexec/postfix start

fi

2如果你安装的是postfix的rpm包,能通过setup命令来设置在系统启动时启动postfix。

四、 postfix的设置详解

41 postfix的设置文件结构

postfix的设置文件位于/etc/postfix下,安装完postfix以后,我们能通过ls命令查看postfix的设置文件:

[root@mail postfix]# ls

installcf maincf mastercf postfix-script

这四个文件就是postfix最基本的设置文件,他们的差别在于:

mailcf:是postfix主要的设置文件。

installcf:包含安装过程中安装程式产生的postfix初始化设置。

mastercf:是postfix的master进程的设置文件,该文件中的每一行都是用来设置postfix的组件进程的运行方式。

postfix-script:包装了一些postfix命令,以便我们在linux环境中安全地执行这些postfix命令。

42 postfix的基本设置

postfix大约有100个设置参数,这些参数都能通过maincf 指定。设置的格式是这样的,用等号连接参数和参数的值。如:

myhostname = mailmydomaincom

等号的左边是参数的名称,等号的右边是参数的值; 当然,我们也能在参数的前面加上$来引用该参数,如:

myorigin = $myhostname

虽然postfix有100个左右的参数,不过postfix为大多数的参数都设置了缺省值,所以在让postfix正常为你服务之前,你只需要设置为数不多的几个参数。下面我们一起来看一看这些基本的postfix参数。需要注意的是,一旦你更改了maincf文件的内容,则必须运行postfix reload命令使其生效。

1. myorigin

myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domaincom,则该参数指定@后面的域名。缺省地,postfix使用本地主机名作为myorigin,不过建议你最佳使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为maildomaincom则我们能这样指定myorigin:

myorigin = domaincom

当然我们也能引用其他参数,如:

myorigin = $mydomain

2. mydestination

mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就

是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user@domaincom, 也就是你的域为domaincom, 则你就需要接收所有收件人为user_name@domaincom的邮件。和myorigin相同,缺省地,postfix使用本地主机名作为mydestination。

3. notify_classes

在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,

只有这样,在用户遇见问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别:

bounce:将不能投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。

2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。

delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。

policy:将由于uce规则限制而被拒绝的用户请求发送给postfix管理员,包含整个smtp会话的内容。

protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个smtp会话的内容。

resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。

software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。

缺省值为:

notify_classes = resource, software

4.myhostname

myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也能指定该值,需要注意的是,要指定完整的主机名。如:

myhostname = maildomaincom

5.mydomain

mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也能自己指定该值,

6.mynetworks

mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来差别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你能用标准的a、b、c类网络地址,也能用cidr(无类域间路由)地址来表示,

7.inet_interfaces

inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听

所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。

43 postfix的uce(unsolicited commercial email)控制

所谓uce控制就是指控制postfix接收或转发来自于什么地方的邮件。

缺省地,postfix转发符合以下条件的邮件:

来自客户端ip地址符合$mynetworks的邮件。

来自客户端主机名符合$relay_domains及其子域的邮件。

目的地为$relay_domains及其子域的邮件。

缺省地,postfix接受符合以下条件的邮件:

目的地为$inet_interfaces的邮件。

目的地为$mydestination的邮件。

目的地为$virtual_maps的邮件。

不过我们也能通过下面的规则来实现更强大的控制功能。

1. 信头过滤

通过header_checks参数限制接收邮件的信头的格式,如果符合指定的格式,则拒绝接收该邮件。能指定一个或多个查询列表,如果新邮件的信头符合列表中的某一项则拒绝该接收邮件。

2.客户端主机名/地址限制

通过smtpd_client_restrictions参数限制能向postfix发起smtp 连接的客户端的主机名或ip地址。能指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。

3 是否请求helo命令

能通过smtpd_helo_required参数指定客户端在smtp会话的开始是否发

送一个helo命令。你能指定该参数的值为yes或no。

4 helo主机名限制

能通过smtpd_helo_restrictions参数指定客户端在执行helo命令时发送

给postfix的主机名。缺省地,postfix接收客户端发送的任意形式的主机名。能指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。

5 rfc 821信头限制

rfc 821对邮件的信头做了严格的规定,不过广泛使用的sendmail并不支

持该规定,所以对于该参数我们只能说不,

6 通过发件人地址进行限制

能用smtpd_sender_restrictions参数通过发件人在执行mail from命令时提供的地址进行限制。能指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。

reject_unknown_sender_domain:如果mail from命令提供的主机名在dns中没有相应的a 或 mx 记录则拒绝该客户端的连接请求。能用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

check_sender_access maptype:mapname:根据mail from命令提供的主机名、父域搜索access数据库。如果搜索的结果为reject 或 "[45]xx text" 则拒绝该客户端的连接请求;如果搜索的结果为ok、relay 或数字则接受该客户端的连接请求。能用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。能通过该参数过滤来自某些不受欢迎的发件人的邮件。

reject_non_fqdn_sender:如果mail from命令提供的主机名不是rfc规定的完整的域名则拒绝客户端的连接请求。能用non_fqdn_reject_code 参数指定返回给客户机的错误代码(缺省为504)。

缺省地,postfix接受来自所有发件人的邮件。

7 通过收件人地址进行过滤

能用smtpd_recipient_restrictions参数通过发件人在执行rcpt to命令

时提供的地址进行限制。缺省值为:

smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains

能指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序

进行的,第一条符合条件的规则被执行。可用的规则有:

check_relay_domains:如果符合以下的条件,则接受smtp连接请求,否则拒绝该连接,能用relay_domains_reject_code 参数指定返回给客户机的错误代码(缺省为504)。

客户端主机名符合$relay_domains及其子域

目的地为$inet_interfaces、$mydestination或$virtual_maps

permit_auth_destination:不管客户端的主机名,只要符合以下的条件,就

接受smtp连接请求:

解析后的目标地址符合$relay_domains及其子域

解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_maps

reject_unauth_destination:不管客户端的主机名,只要符合以下的条件,

就拒绝该客户端smtp连接请求:

解析后的目标地址符合$relay_domains及其子域

解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_maps

check_recipient_access:根据解析后的目标地址、父域搜索access数据库。如果搜索的结果为reject 或 "[45]xx text" 则拒绝该客户端的连接请求;如果搜索的结果为ok、relay 或数字则接受该客户端的连接请求。能用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

reject_unknown_recipient_domain:如果收件人的邮件地址在dns中没有相应的a 或 mx 记录则拒绝该客户端的连接请求。能用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

reject_non_fqdn_recipient:如果发件人在执行rcpt to命令时提供的地址

不是完整的域名则拒绝其smtp连接请求。能用the non_fqdn_reject_code参数指定返回给客户机的错误代码(缺省为504)。

目前全球市场上有许多邮件安全网关产品,主要提供防垃圾邮件、防钓鱼邮件、防安全威胁和集成数据保护等功能,基本上都是基于对明文邮件内容的分析来做出相应的安全防护处理,这些产品对于邮件安全非常重要。

但是,明文邮件内容在互联网上流转本身就是一个极不安全的信息传输机制安全问题,如同互联网的网页信息http明文传输一样不安全。而目前全球互联网都已经把不安全的http信息传输逐步转变为安全的https加密传输,但是邮件仍然是明文传输,虽然有些邮件服务器采用了https类似的SSL/TLS

SMTP/IMAP实现传输加密,但是这依赖于双方邮件服务器都必须部署了SSL/TLS加密传输措施,只要有一方没有部署SSL/TLS证书,邮件内容仍然是明文在互联网上流动,无法保证邮件机密信息的全程安全。即使所有邮件服务器都实现了SSL/TLS加密传输,邮件内容仍然是明文存放在云端邮件服务器中,这也是一个大的安全隐患。

密信推出电子邮件全自动加密和签名解决方案,用户可以免费使用密信App实现电子邮件全自动端到端加密,不仅实现邮件流转传输安全不再依赖于邮件服务器是否部署了SSL/TLS加密传输,而且实现了邮件内容加密存放在云端邮件服务器中,真正保护了邮件机密信息安全。

密信技术致力于为用户提供可实施的邮件全自动加密解决方案,为了解决以上两个实施邮件加密中遇到的实际问题,提供了两个解决方案:

(1) 部署密信邮件加解密网关,由密信网关对接现有的邮件安全网关,负责解密已加密邮件和加密需要加密的邮件。

(2) 部署密信邮件安全网关,无需更换邮件客户端软件,实现全自动邮件加密和解密。

          

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 邮件服务器的架设方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情