用linux系统搭建postfix邮件服务器,但是局域网可以实现互发邮件,不能给其他的公网邮箱互发邮件,求解

用linux系统搭建postfix邮件服务器,但是局域网可以实现互发邮件,不能给其他的公网邮箱互发邮件,求解,第1张

快速配置Postfix邮件服务器

Postfix最被人称道的地方就在于其配置文件的可读性很高。Postfix的主配置文件是/etc/postfix/maincf。

在maincf文件中,参数都是以类似变量的设置方法来设置的,这些参数的使用主要包含两部分的内容:

(1)定义和声明变量:例如definename = good-better-best。等号左边是变量的名称,等号右边是变量的值。

(2)引用变量:可以在变量的前面加上符号“$”来引用该变量,如:myname = $ definename(相当于definename = good-better-best)。

需要注意的是:等号两边需要有空格字符。此外,如果变量有两个以上的设置值,就必须用逗号“,”或者空格符“ ”将它们分开。

在熟悉了上述变量的定义和引用方法后,下面详细介绍如何安全、高效地配置Postfix服务器的相关选项。

1.设置Postfix服务监听的网络接口

默认情况下,inet_interfaces参数的值被设置为localhost,这表明只能在本地邮件主机上寄信。如果邮件主机上有多个网络接口,而又不想使全部的网络接口都开放Postfix服务,就可以用主机名指定需要开放的网络接口。不过,通常是将所有的网络接口都开放,以便接收从任何网络接口来的邮件,即将inet_interfaces参数的值设置为“all”,如下所示:

inet_interfaces = all

2.安全设置可接收邮件的主机名称或域名

mydestination参数非常重要,因为只有当发来的邮件的收件人地址与该参数值相匹配时,Postfix才会将该邮件接收下来。通过该选项的设置可以过滤掉许多没有经过认证和授权的邮件,从而节省服务器的存储空间,以及节省用户的邮件处理时间。

举一个简单的例子,用户可以将该参数值设置为如下:

accept_domain = testnet

mydestination = $accept_domain

这就表明无论来信的收件人地址是X@testnet(其中X表示某用户在testnet域中的邮件账户名),Postfix都会接收这些邮件。而除此之外的邮件,Postfix都不会接受。

3.安全设置可转发邮件的网络(IP设置)

有关安全设置可转发邮件的网络可以使用mynetworks参数来设置。可将该参数值设置为所信任的某台主机的IP地址,也可设置为所信任的某个IP子网或多个IP子网(采用“,”或者“ ”分隔)。

比如,用户可以将mynetworks参数值设置为172168960/24,则表示这台邮件主机只转发子网172168960/24中的客户端所发来的邮件,而拒绝为其他子网转发邮件:

mynetworks = 172168960/24

除了mynetworks参数外,还有一个用于控制网络邮件转发的参数是mynetworks-style,它主要用来设置可转发邮件网络的方式。通常有以下三种方式:

(1)class:在这种方式下,Postfix会自动根据邮件主机的IP地址得知它所在的IP网络类型(即A类、B类或是C类),从而开放的它所在的IP网段。

(2)subnet:这是postfix的默认值,postfix会根据邮件主机的网络接口上所设置的IP地址、子网掩码来得知所要开放的IP网段。

(3)host:在这种方式下,postfix只会开放本机。

通常,用户一般不需要设置mynetworks-style参数,而直接设置mynetworks参数。如果这两个参数都进行了设置,那么mynetworks参数的设置有效。

4.设置可转发邮件的网络(域名设置)

上面介绍的mynetworks参数是针对邮件来源的IP来设置的,而relay_domains参数则是针对邮件来源的域名或主机名来设置的,其实从原理上来说是一致的,不过是区分了IP地址和域名而已,不过,relay_domains还需要依赖DNS这个基础设施。

例如,用户可以将relay_domains参数值设置为testnet,则表示任何由域testnet发来的邮件都会被认为是信任的,Postfix会自动对这些邮件进行转发,如下所示:

relay_domains = testnet

那么,要使它能在实际网络中更好地转发邮件,还必须进行相应的DNS设置。那么,需要在该网络的DNS服务器上定义了一个主区域testnet,并在该区域配置文件中定义了以下记录:

//定义邮件服务器的IP地址

pattersontestnet IN  A  17216896254

//定义邮件服务器的别名

mailtestnet IN CNAME  pattersontestnet

//定义优先级别

testnet  IN MX  10 mailtestnet

上述记录只对邮件服务器进行了定义,还有诸如SOA、NS等的定义,在这里就不再赘述。

配置Postfix使用SMTP安全认证

Postfix默认不会对外开放转发功能,而仅对本机(localhost)开放转发功能。但是,在实际应用中,必须在Postfix主配置文件中通过设置mynetworks、relay_domains参数来开放一些所信任的网段或网域,否则该邮件服务器几乎没有什么用处。在开放了这些所信任的网段或网域后,还可以通过设置SMTP认证,对要求转发邮件的客户端进行用户身份(用户账户名与密码)验证。只有通过了验证,才能接收该用户寄来的邮件并帮助转发。同样,Postfix中目前比较常用的SMTP认证机制是通过Cyrus SASL包来实现的。

默认情况下,Postfix并没有启用SMTP认证机制。要让Postfix启用SMTP认证,就必须对Postfix的主配置文件/etc/postfix/maincf进行修改。用户需要在maincf文件中添加如下有关SMTP认证的设置部分:

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = ''

smtpd_recipient_restrictions = permit_mynetworks

permit_sasl_authenticated, reject_unauth_destination

broken_sasl_auth_clients=yes

smtpd_client_restrictions = permit_sasl_authenticated

smtpd_sasl_security_options = noanonymous

其中,每个选项的具体含义如下:

(1)smtpd_sasl_auth_enable:指定是否要启用SASL作为SMTP认证方式。默认不启用,这里必须将它启用,所以要将该参数值设置为yes。

(2)smtpd_sasl_local_domain:如果采用Cyrus-SASL版进行认证,那么这里不做设置。

(3)smtpd_recipient_restrictions:表示通过收件人地址对客户端发来的邮件进行过滤。通常有以下几种限制规则:

permit_mynetworks:表示只要是收件人地址位于mynetworks参数中指定的网段就可以被转发邮件。

permit_sasl_authenticated:表示允许转发通过SASL认证的邮件。

reject_unauth_destination:表示拒绝转发含未信任的目标地址的邮件。

(4)broken_sasl_auth_clients:表示是否兼容非标准的SMTP认证。有一些Microsoft的SMTP客户端采用非标准的SMTP认证协议,只需将该参数设置为yes就可解决这类不兼容问题。

(5)smtpd_client_restrictions:表示限制可以向Postfix发起SMTP连接的客户端。如果要禁止未经过认证的客户端向Postfix发起SMTP连接,则可将该参数值设置为permit_sasl_authenticated。

(6)smtpd_sasl_security_options:用来限制某些登录的方式。如果将该参数值设置为noanonymous,则表示禁止采用匿名登录方式。

在完成上述设置后,必须使用

/etc/initd/postfix reload

重新载入配置文件,或使用

/etc/initd/postfix restart

重新启动Postfix服务,以使该配置生效。这两个命令的具体使用需要根据不同的Linux版本来选用。

此外,由于当Postfix要使用SMTP认证时,会读取/usr/lib/sasl2/smtpdconf文件中的内容,以确定所采用的认证方式,因此如果要使用saslauthd这个守护进程来进行密码认证,就必须确保/usr/lib/sasl2/smtpdconf文件中的内容为:

pwcheck_method: saslauthd

首先你得有一台服务器服务器,推荐sindns的Linux服务器比较稳定

Postfix搭建Linux下的邮件服务器。目标服务器是RedHat Enterprise Linux 4,首先需要停止Sendmail:

# /etc/initd/sendmail stop

并从启动组里移除:

# chkconfig sendmail off

然后,通过rpm包安装Postfix:

# rpm -Uvh postfix-2xxxxxrpm

Postfix只有一个/etc/postfix/maincf需要修改,其他配置文件可以直接使用默认设置。

第一个需要修改的参数是myhostname,指向真正的域名,例如:

myhostname = mailsindnscom

mydomain参数指向根域:

mydomain = sindnscom

myorigin和mydestination都可以指向mydomain:

myorigin = $mydomain

mydestination = $mydomain

Postfix默认只监听本地地址,如果要与外界通信,就需要监听网卡的所有IP:

inet_interfaces = all

Postfix默认将子网内的机器设置为可信任机器,如果只信任本机,就设置为host:

mynetworks_style = host

配置哪些地址的邮件能够被Postfix转发,当然是mydomain的才能转发,否则其他人都可以用这台邮件服务器转发垃圾邮件了:

relay_domains = $mydomain

现在,Postfix已经基本配置完成,我们需要对邮件的发送进行控制:

对于外域到本域的邮件,必须接收,否则,收不到任何来自外部的邮件;

对于本域到外域的邮件,只允许从本机发出,否则,其他人通过伪造本域地址就可以向外域发信;

对于外域到外域的邮件,直接拒绝,否则我们的邮件服务器就是Open Relay,将被视为垃圾邮件服务器。

先设置发件人的规则:

smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/postfix/sender_access, permit

以上规则先判断是否是本域地址,如果是,允许,然后再从sender_access文件里检查发件人是否存在,拒绝存在的发件人,最后允许其他发件人。

然后设置收件人规则:

smtpd_recipient_restrictions = permit_mynetworks, check_recipient_access hash:/etc/postfix/recipient_access, reject

以上规则先判断是否是本域地址,如果是,允许,然后再从recipient_access文件里检查收件人是否存在,允许存在的收件人,最后拒绝其他收件人。

/etc/postfix/sender_access的内容:

sindnscom REJECT

目的是防止其他用户从外部以xxx@sindnscom身份发送邮件,但登录到本机再发送则不受影响,因为第一条规则permit_mynetworks允许本机登录用户发送邮件。

/etc/postfix/recipient_access的内容:

postmaster@sindnscom OK

webmaster@sindnscom OK

因此,外域只能发送给以上两个Email地址,其他任何地址都将被拒绝。但本机到本机发送不受影响。

最后用postmap生成hash格式的文件:

# postmap sender_access

# postmap recipient_access

启动Postfix:

# /etc/initd/postfix start

设置到启动组里:

# chkconfig postfix on

现在就可以通过telnet来测试了:(红色是输入的命令)

220 mailsindnscom ESMTP Postfix

helo localhost

250 mailsindnscom

mail from:test@gmailcom

250 Ok

rcpt to:webmaster@sindnscom

250 Ok

data

354 End data with<CR><LF><CR><LF>

hello!!!!!!

250 Ok: queued as D68E41407D0

mail from:test@gmailcom

250 Ok

rcpt to:haha@sindnscom

554<haha@sindnscom>: Recipient address rejected: Access denied

quit

221 Bye

如果配置了SMTP认证,就可以让用户远程发送时能通过认证后再发送邮件,目前还没有配置,准备继续研究后再配置。需要注意的是,配置SMTP认证后,设置规则应该是:

外域->本域:不需认证,允许,否则将接受不到任何外部邮件;

本域->外域:需要认证,否则拒绝。

因为我们作为发送服务器的MTA和转发的MTA实际上是由一个MTA完成的,所以需要以上规则。对于大型邮件服务商,发送服务器的MTA和转发的MTA是分别部署的,例如,sina的发送服务器是smtpsinacom,需要经过用户认证,而转发服务器是mxsinacom,不需要认证,否则无法转发邮件。

最后不要忘了在DNS的MX记录中将域名mailsindnscom添上。

sendmail的功能强大,配置起来也十分繁琐。本例仅介绍如何架设小型的局域网电子邮局。

1、设置sendmail 作为守卫进程(daemon)启动

可以使用以下命令来确认 sendmail 是否已经启动:ps –A|grep sendmail

如果启动了 sendmail,那么这个命令将显示出它的相关信息。如果没有启动,则需要在/etc/rcd/rcnet 文件中加上如几行代码:

if [-f /usr/lib/sendmail ];

then(cd /usr/spool/mqueue;rm –f if )

/usr/lib/sendmail-bd-qlh;echo –n ‘sendmail’>/dev/console

fi

2、设置sendmailcf

sendmailcf是sendmail的配置文件。在安装了 Linux 系统之后,它将自动生成一个适合本系统使用的 sendmailcf 文件,位于/etc/sendmailcf

3、开启SMTP、POP 端口

在默认情况下,SMTP 端口是打开的,而 POP端口是关闭的,我们必须将它打开:

1)用 root(超级权限)登录到服务器上;

2)编辑文件/etc/inetdconf;

3)找到描述 POP 端口的语句:#pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/inpop3d

4)将 POP3的描述语句那一行的注释号“#”去掉。

5)如果没有找到,就手工补上这一行;(另外,我们还可以验证一下是否存在 SMTP端口的描述语句) ;

6)存盘后退出。

7)运行 inetd 命令,使得设置生效。

8)用以下命令验证,看 POP3 端口是否打开(生效):netstat –a |grep pop

如果打开的话,可以看到以下信息:tcp 0 0 :pop3 : LISTEN

4、为新用户开E-Mail 帐号

在 Linux 中开设 E-Mail 帐号十分简单,只要在 Linux 系统中新增一个用户即可。该用户帐号和密码就是E-Mail 的帐号和密码。如:为新用户 guest 开一个E-Mail帐号,用以下命令即可:

adduser guest passwd guest

这样,该新用户的 E-Mail 地址就是:guest@fddu2000com ;密码为:guest

5、为E-Mail 帐号设置别名

如果某个用户想使用多个 E-Mail 地址,可通过设置别名的方法来实现。比:用户“杜

方冬”想同时拥有 E-Mail 地址:dfd@fddu2000com ;fddu@fddu2000com ;fddu2000@fddu2000com

就可通过以下步骤来实现这样的别名设置:

1)以 root 登录服务器;

2)新增一个账号 dfd;

3)编辑文件/etc/aliases,加上两行:

fddu:dfd

fddu2000:dfd

4)存盘退出;

5)执行命令: newaliases

这样,用户杜方冬就拥有三个邮件地址,杜方冬只需使用一个E-Mail 帐号:dfd@fddu2000com就可以接收所有寄给以上三个E-Mail 邮件地址的电子邮件。

6、邮箱空间的限定

如果你想控制用户邮箱空间的大小,可以对它进行限定。实现方法是利用磁盘限额功能来实现的。电子邮件的暂存空间是在/var/spool/mail 目录下,只要通过磁盘限额设定每一个用户在这个目录下能使用的最大空间就可以了。

一安装Sendmail 完全安装Red Hat Linux 90时,Sendmail就会自动内置,版本号为8128-4。如果你不确定Linux是否已经安装有sendmail,可以输入以下命令查看: [root@ahpeng root] rpm–qa grep sendmail 如果确定没有安装,请在图形界面下依次选择单击“主菜单-系统设置-添加删除应用程序”,然后在打开的“软件包管理”窗口里选中“邮件服务器”选项,点“更新”后按照提示安装即可。 另一种办法是:直接插入Linux第1张安装光盘,选择/RedHat/RPMS目录下的sendmail-8128-4i386rpm安装包,之后运行[root@ahpeng RPMS] # rpm -ivh sendmail-8128-4i386rpm即可开始安装,再用此方法在第3张安装光盘的同目录下依次安装sendmail-cf8128-4i386rpm、sendmail-doc 8128-4i386rpm。 二启动Sendmail服务系统 笔者建议使用带参数的Sendmail命令控制邮件服务器的运行: [root@ahpeng root]# sendmail -bd –q12h -b:设定Sendmail服务运行于后台。 -d:指定Sendmail以Daemon(守护进程)方式运行。 -q:设定当Sendmail无法成功发送邮件时,就将邮件保存在队列里,并指定保存时间。上面的12h表示保留12小时。 此外,要检测Sendmail服务器是否正常运行,可以使用命令行: [root@ahpeng root]#/etc/rcd/initd/sendmail status。 三配置Sendmail sendmailcf的配置语法比较难懂,一般资料上都是采用m4宏处理程序来生成所需的sendmailcf文件(使用m4编译工具一般不容易出错,还可避免某些带有安全漏洞的宏对服务器造成的破坏)。其配置文件位于/etc/mail/sendmailcf,在创建的过程中还需要一个模板文件,Linux自带有一个模板文件,位于/etc/mail/sendmailmc。故可以直接通过修改sendmailmc模板来达到定制sendmailcf文件的目的,而不必去死啃哪些难理解的配置命令。配置步骤为: 第一步:用模板文件sendmailmc生成sendmailcf配置文件,并导出到/etc/mail/目录下,使用命令行:m4 /etc/mail/sendmailmc >/etc/mail/sendmailcf 第二步:再用[root@ahpeng root] /etc/rcd/initd/sendmail restart命令行重启sendmail。 至此,邮件服务系统配置完成,已经正常工作。接下来就是创建具体的帐户了。

企业采用的操作系统不一,在部署邮件系统时,难免遇到系统平台的问题,除了大家所熟知的Windows/Linux,还有FreeBSD/Solaris/AIX/HP-UX等各种操作系统,所以企业在部署邮件系统是要考虑多平台转换的问题,寻找一款跨平台的邮件系统很重要,像是国内Richmail邮件系统是唯一支持跨平台部署的邮件服务器品牌。

下面以Richmail邮件系统为案例,说明如何构建部署邮件系统。 1 邮件服务器软件。无论从功能性、稳定性、易用性还是高端的API支持、跨平台兼容等方面,Richmail邮件系统软件都表现出独特优势。

2 硬件服务器。Richmail对硬件服务器的要求不高,中小型企业的邮箱用户一般是是数百人或以下,因此双核CPU 2G内存的普通服务器已经完全满足要求。

3 域名。

4 网络。不少企业没有拉光纤,还是使用ADSL上网,Richmail邮件系统也支持ADSL。

Richmail邮件系统是一款完全自主开发的底层架构先进的自建邮件系统,相对于租用企业邮箱有着无法比拟的优势。 方案 自建邮件系统(以Richmail邮件系统举例) 租用企业邮箱 维护度 企业需要配备人员管理维护邮件系统,专业性要求较高;但是Richmail提供简易的纯Web图形化管理后台和实时在线技术支持服务,不会对管理员造成额外的工作负担。 系统界面简易,系统配置由运营商完成;企业IT人员只需要进行用户管理即可。 功能 Richmail邮件系统提供全套功能模块:反垃圾、反病毒、安全防范、海外邮件、邮件监控、邮件审核、邮件归档、手机邮箱、短信提醒、网络硬盘、日程安排等。 只提供简单的邮件收发、网络硬盘等功能,企业管理员权限低,受限制大,不能针对各项系统配置进行调整。 空间 每个用户的空间可以灵活授权,总邮箱空间无限制。 每个用户只有限定的空间大小,邮箱使用受到限制。若需扩大邮箱空间,需要向服务商购买。 数据安全 邮件数据存储在企业内部的邮件服务器上,企业自主维护,非常安全。针对邮件数据,可做异地增量备份、全量备份或者启动归档系统,非常方便。 邮件存储在运营商的服务器,存在泄密的风险、数据管理和备份权限低,数据管理权限受到多方限制,存在安全隐患。 售后服务 Richmail针对每个客户配备专业的技术工程师,系统提供永久使用和永久免费升级,服务期内提供24小时电话服务、工作日内远程等技术服务,提供高级中继和反垃圾规则库更新等。 国内品牌租用邮箱大多数都通过代理商做,客户很难找到厂家的技术进行咨询。系统维护必须依靠自己的技术力量进行。 价格 一次性采购邮件系统,后续只会产生技术服务费,对于已经具备服务器、网络资源并准备长期使用的企业而言,实际成本低。 成本高,对于长期使用的企业,每年需要支付相当的企业邮箱租用费用,长期以往,成本高。 1 在服务器上安装操作系统。Richmail邮件系统是支持跨平台的,由于操作系统的稳定性推荐使用Linux操作系统,但出于操作简单小企业使用Windows版本居多。

2 下载安装Richmail邮件系统。直接选择安装包下载;如是Windows版本,则下载完毕直接点击安装,按照操作点击3分钟内完成安装;如是Linux版本,则下载完毕执行1条解压命令3条启动命令即安装启动邮件系统。

3 在路由器或者交换机开发邮件系统使用的端口: 25 邮件服务SMTP端口 110 邮件服务POP3端口 143 邮件服务IMAP4端口 8080 WebMail端口 4 做域名解析。在购买的域名的管理后台配置域名解析,将MX记录指向服务器所在公网IP,将WebMailL的A记录指向服务器所在公网IP。

5 进入Richmail邮件系统的管理员后台,添加域以及用户,进行域的功能的授权与用户权限的授权。

通过以上四个步骤,一套可以进行内部和外部收发的邮件系统就已经搭建完毕,建好的用户凭着自己的邮箱名与密码就可以使用自己的公司邮箱。Richmail也支持POP功能,如用户们习惯使用Outlook、Foxmail等邮件客户端,直接在客户端里面配置即可。

可以使用U-Mail邮件服务器

步骤如下:

1、下载U-Mail邮件系统 for CentOS(6X) 一体盘

请去http://wwwcomingchinacom/html/downloads/ 下载U-Mail邮件服务器最新版本。

 2、解析好域名,将域名的MX记录和的A记录解析到邮件服务器的IP地址。

MX记录和A记录解析方法参考: http://wwwcomingchinacom/html/faq/anzhuangzhongzhuangbeifen/954html

如果是将邮件服务器放置在内网,通过端口映射的方式将外网IP的服务端口映射到内网,那么必须映射端口:25、110、80等。

3、将BIOS启动方式设置为光驱启动,并放入U-Mail for CentOS(6X) 一体盘光盘

4、出现安装界面后,按回车键 

5、设置TCP/IP参数(使用Tab键切换,空格键选择),选择如下图,按“OK”按钮。

6、设置IP地址、子网掩码、网关和DNS等参数(请根据自己的网络环境设置这些参数),如下图。按“OK”按钮。

7、点击“Yes,discard any data”按钮进行初始化磁盘(如磁盘中有重要数据,请先备份再操作),如下图:

8、设置root密码,点击“下一步” 

9、设置分区,这里我们选择自动分区(用户可以自定义分区,一般建1个boot分区,1个swap分区和1个根分区),点击“下一步”,如下图:

10、直接点击“下一步”,如下图:

11、直接点击“下一步”: 

12、选择默认的GRUB引导装载程序,并点击“下一步”,如下图:

13、开始安装系统 

14、出现安装完成界面,点击“重新引导”重启服务器

 15、重启好后,输入root帐号和密码登录系统,如下图:

强烈建议你使用postfix,目前大多数linux教程书上都会提到postfix的安装方法,可想而知postfix是主留。postfix的主要特点有:

1 postfix是免费的:

  postfix想要作用的范围是广大的Internet用户,试图影响大多数的Internet上的电子邮件系统,因此它是免费的。

  2 更快:

  postfix在性能上大约比sendmail快三倍。一部运行postfix的台式PC每天可以收发上百万封邮件。

  3 兼容性好:

  postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/forward 文件。

  4 更健壮:

  postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加。

  5 更灵活:

  postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。

  6 安全性

  postfix具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用linux系统搭建postfix邮件服务器,但是局域网可以实现互发邮件,不能给其他的公网邮箱互发邮件,求解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情