DNS设置(配置文件)
# cat /etc/named.rfc1912.zones
zone "example.com" IN {
type master;
file "example.zone";
allow-update { none; };
};
zone "111.168.192.in-addr.arpa" IN {
type master;
file "example.loopback";
allow-update { none; };
# cat /var/named/chroot/var/named/example.zone
$TTL 1D
@ IN SOA @ root (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS www.example.com.
@ IN A 192.168.111.111
@ IN MX 10 mail.example.com.
www IN A 192.168.111.111
mail IN A 192.168.111.111
# cat /var/named/chroot/var/named/example.local
$TTL 1D
@ IN SOA @ root (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS www.example.com.
IN MX 10 mail.example.com.
111 IN PTR www.example.com.
111 IN PTR mail.example.com.
[root @localhost postfix]# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.181.111
nameserver 202.96.69.38
二。Postfix设置
1.安装Postfix
# yum install postfix
在CentOS系统一般都自带sendmail的,如果你不需要了,可以使用以下命令删除:
# rpm -e sendmail
更改默认邮件传输代理(MTA)
我们先来检查默认的MTA
# alternatives --display mta
"mta - status is manual.
"
link currently points to /usr/sbin/sendmail.sendmail
我们从以上看出,现在默认的MTA是sendmail。所以我们需要键入以下命令更新MTA为Postfix。
# /usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
"再次检查看MTA是不是改为Postfix了。
"
# alternatives --display mta
2.配置postfix 比较简短的重要配置解释
# mv /etc/postfix/main.cf /etc/postfix/main.cf.bak 这里分别涉及了/etc/postfix/main.cf里的三个设定项:
# touch /etc/postfix/main.cf mydestination: 设置可收信的地址(用于收信)
建立一个空文件。默认这个文件是可以使用的,mynetwork_style的值默认为subnet mynetworks: 设置可信任的客户端(用于中继)
然后再空文件中填入几个在这里必须用到的最少设置 relay_domains: 设置可信任的域(用于中继)
# cat /etc/postfix/main.cf
mydomain = mail.example.com
myorigin = $mydomain mydomain: email服务器的域名
mydestination = example.com, root@example.com #可写成$myhostname, localhost.$mydomain, localhost, $mydomain 一样 myhostname: 参数是指系统的主机名称
mynetworks = 127.0.0.1,192.168.111.0/24 myorigin:指定本地发送邮件中来源和传递显示的域名,在我们的例子中,mydomain是example.com,也是我的域名
配置到这里,使用telnet你可以在本机,以及一个网段内使用此postfix进行发信服务。(可发送至外网)
然后开始配置用户收发信文件配置
在/etc/postfix/main.cf后面添加
smtpd_restriction_classes = local_only #SMTP服务受限制的类型,后边自己定义
local_only = check_recipient_access regexp:/etc/postfix/local_domains,reject #正则类型的配置文件,申明目前系统的信任域,可以改成hash,直接填写用户:
smtpd_recipient_restrictions = check_sender_access regexp:/etc/postfix/local_senders, #该文档里的用户是被禁止对外发送邮件
check_recipient_access regexp:/etc/postfix/local_recipients, #注意这里往下左边有空格,是一个列表形式 #该文档里的用户是被禁止接收外来邮件
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_rhsbl_sender,
reject_unknown_sender_domain,
reject_invalid_hostname
然后创建三个与配置文件相匹配的三个文件
# vi /etc/postfix/local_domains
/.*@example.com/ OK #自己的域为信任域
#添加新条目另起行
# /etc/postfix/local_senders
# /etc/postfix/local_recipients
你可以把你想限制的用户填写在/etc/postfix/local_senders
例如:
# vi /etc/postfix/local_senders
/test@example.com/
然后你想限制他的信任域在/etc/postfix/local_domains,reject 这个表里
那么
# vi /etc/postfix/local_senders
#/test@example.com/ local_only
这样符合这个正则的用户即只能向这个文件的信任域发送邮件。
如果我想让test1用户只能向example1.com域发信,而test2用户只能向example2.com域发信,那么
修改main.cf文件,添加local_only2,用逗号隔开
smtpd_restriction_classes = local_only,local_only2
local_only2 = check_recipient_access regexp:/etc/postfix/local_domains2,reject
然后创建/etc/postfix/local_domains2文件
# vi /etc/postfix/local_domains2
/.*@example2.com/ OK
再编辑/etc/postfix/local_senders
# vi /etc/postfix/local_senders
/^test1@example.com$/ local_only
/^test2@example.com$/ local_only2