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

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

快速配置Postfix邮件服务器

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

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

(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 = test.net

mydestination = $accept_domain

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

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

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

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

mynetworks = 172.168.96.0/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参数值设置为test.net,则表示任何由域test.net发来的邮件都会被认为是信任的,Postfix会自动对这些邮件进行转发,如下所示:

relay_domains = test.net

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

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

patterson.test.net. IN  A  172.168.96.254

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

mail.test.net. IN CNAME  patterson.test.net.

//定义优先级别

test.net.  IN MX  10 mail.test.net.

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

配置Postfix使用SMTP安全认证

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

默认情况下,Postfix并没有启用SMTP认证机制。要让Postfix启用SMTP认证,就必须对Postfix的主配置文件/etc/postfix/main.cf进行修改。用户需要在main.cf文件中添加如下有关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/init.d/postfix reload

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

/etc/init.d/postfix restart

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

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

pwcheck_method: saslauthd

1 组建两台邮件服务器A与B与一台DNS,其中

A 192.168.100.102/24 有域名mail.rhce.com

B 192.168.100.101/24 有域名mail.example.com

DNS 192.168.100.98则A上有如下配置

/etc/mail/local-host-names 用于定义收发邮件的主机别名

# local-host-names - include all aliases for your machine here.

rhce.com #注:不可少,否则收不到邮件,虽然可以发

mail.rhce.com #注:可不要/etc/mail/access #该文件用于限制哪些客户端可以使用此邮件服务器来转发邮件 (也可全不配,默认即是转发的)

rhce.com RELAY

example.com RELAY

192.168.100. RELAY

192.168.10. REJECT #设置拒绝转发192.168.10网段的邮件注:可以设置的选项还有 OK/REJECT/DISCARD/ERROR:550

B上有如下配置

/etc/mail/local-host-names (也可不配)

# local-host-names - include all aliases for your machine here.

example.com

mail.example.com/etc/mail/access

rhce.com RELAY

example.com RELAY

192.168.100. RELAY A和B均打开sendmail/dovecot服务 注:只有使用了dovecot才能使用Foxmail/OutLokk等通过POP3/IMAP协议接受邮件改/etc/mail/sendmail.cf 设置

O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA

service sendmail restart 注:要在0.0.0.0上监听

service dovecot restart 注:此时查看是否打开了110/143端口,实际上还打开了993(IMAP-SSL)/995(POP3-SSL)端口

双方分别设置192.168.100.98为dns的IP

此外双方均要用makemap hash access.db<access 生成访问许可库文件

另外双方的hostname与/etc/sysconfig/network中的域名均要设为相应的域名DNS中的设置如下

如果DNS服务器也作为网关的话,DNS首先要打开ip转发功能

named.confoptions {

directory "/var/named"

dump-file "/var/named/data/cache_dump.db"

statistics-file "/var/named/data/named_stats.txt"

}

include "/etc/rndc.key"zone "." {

type hint

file "named.ca"

}zone "example.com" {

type master

file "example.com.zone"

allow-transfer {

192.168.1.177

192.168.7.17

}

}

zone "rhce.com" {

type master

file "rhce.com.zone"

allow-transfer {

192.168.1.177

192.168.7.17

}

}example.com.zone$ttl 38400

example.com. IN SOA dns.example.com. admin.example.com. (

2005090503 Serial

10800 Refresh

3600 Retry

604800 Expire

38400 ) Negative Cache TTL

example.com. IN NS dns.example.com.

rhel4 IN CNAME dns

bbs IN CNAME www

samba IN CNAME www

example.com. IN MX 5 mail

mail IN A 192.168.100.101

rhce.com.zone$ttl 38400

rhce.com. IN SOA dns.rhce.com. admin.rhce.com. (

2005090503 Serial

10800 Refresh

3600 Retry

604800 Expire

38400 ) Negative Cache TTL

rhce.com. IN NS dns.rhce.com.

www.rhce.com. IN A 192.168.100.29

rhel4 IN CNAME dns

bbs IN CNAME www

samba IN CNAME www

rhce.com. IN MX 5 mail

mail IN A 192.168.100.102注:linux默认是不让用户用root用户登录邮箱的,可以换为alading或其它用户

可以用 host -t mx example.com可以查询出example.com的MX记录 设置POP3S和IMAPS服务器都必须生成相应的密钥和证书pop3端口110,imap端口143,pop3s端口995,imaps端口993

服务器使用私钥加密邮件,客户端收邮件时,使用证书中的公钥对邮件进行解密,才能够正常读邮件

制作私钥和自签名证书

cd /etc/pki/tls/certs/

make dovecot.pem #该文件保存邮件服务器的私钥和公钥信息

vi /etc/dovecot.conf

ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem

ssl_key_file = /etc/pki/dovecot/private/dovecot.pem

改为

ssl_cert_file = /etc/pki/tls/certs/dovecot.pem

ssl_key_file = /etc/pki/tls/certs/dovecot.pem

service dovecot restart关于Foxmail的使用

1 默认情况下不可以登录到root的邮箱,但可以用于发送

2 如果普通用户不能登录到邮箱,用passwd 设置密码后,再打开foxmail的邮箱账户设置,设置邮件服务器里头的高级设置,点中SMTP与POP3的SSL连接再试试TLS Transport Layer Security

PKI Public Key Infrastructure


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8927697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存