版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、RHCE课程-RH253Linux服务器架设笔记八-Postfix服务器配置2009-05-18 16:24:51标签:linux Postfix dovecot RHCE mutt版权声明:原创作品,谢绝转载!否则将追究法律责任。上次我们讲了sendmail邮件服务器的配置,还有pop3、imap的配置今天我们第一个任务就是postfix安装postfix安装完成以后,进入/etc/postfix目录修改postfix主配置文件 main.cf ,现在我们要修改配置文件了,主要修改七个地方第一和第二个是设置主机名和域名第一个需要修改的参数是myhost
2、name,指向真正的域名mydomain参数指向根域第三个是设置本机寄出去的邮件所使用的域名或主机名myorigin和mydestination都可以指向mydomain如果你的邮件服务器有ip和直接域名ip一样,就可以使用$mydomin,如果不一样最好使用$myhostname设置postfix监听的接口,这里使用监听所有接口Postfix默认只监听本地地址,如果要与外界通信,就需要监听网卡的所有IP可以接受的主机名或者域名的邮件,这里只能写自己的主机名和域名,比如写入,那么给发送邮件,自己就会收到 可转发哪些网络的邮件,一般都只转发信任网络的邮件Postfix默认将子网内的机器
3、设置为可信任机器,如果只信任本机,就设置为host:mynetworks_style = host配置哪些地址的邮件能够被Postfix转发,当然是mydomain的才能转发,否则其他人都可以用这台邮件服务器转发垃圾邮件了:relay_domains = $mydomain可转发哪些网络域的邮件,这个是函数mydestination,刚才我们设置过mydestination,也就是只转发本地域的邮件,这个是为了防止垃圾邮件的策略基本设置就这么多,然后保存退出由于我们的服务器现在正在运行sendmail,所以我们要关闭sendmail,这样postfix才能正常运行,切忌要使用kill命令杀掉s
4、endmail的进程,因为系统使用的sendmail来通知系统状态然后启动postfix 看看25号端口是不是被master监听起来了 开始测试,给51cto用户发了一封邮件。我们换成51cto用户接受试试 成功收到邮件启动dovecot服务service dovecot start然后我们使用win下的工具试试,首先修改dns服务器地址测试能不能解析解析成功测试postfix服务器25、110端口工作正常哈打开outlook我们用outlook给root发送邮件试试 邮件内容没有显示,看来是字符编码的问题了,服务器是没问题的,主要是服务器的编码显示不出
5、来,服务器是utf8的编码,WIN2003是gb2312的编码,但是client和client之间是没问题的,如果想在服务器上看邮件,需要修改下字符集也可以使用我们讲过的mutt工具使用mutt可以正常查看邮件内容哈下面说说postfix的访问控制和别名配置打开/etc/postfix/access文件这个文件的精华就在这里上面一句是需要加到/etc/postfix/main.cf中去,他已经说明。下面一句是client端描述方式把smtpd_client_restrictions = check_client_access hash:/etc/postfix/access这句加到main.c
6、f的最后面我们禁止192.168.8.88使用postfix邮件服务刚才我的outlook是可以收发邮件的,现在我们试试看还可以不修改了access后,需要使用这个命令更新数据库postmap /etc/postfix/access然后重新启动postfix不能发送了我们把刚才的设置取消试试正常发送了root用户也正常接收下面的内容是别名列表,这个别名列表和sendmail的别名列表一样,修改的文件也是一样/etc/aliases,修改完成使用posalias /etc/aliases 可以参考sendmail课程的内容,RHCE课程-RH253Linux服务器架设笔记七-Sendm
7、ail服务器配置 vim /etc/aliasespostalias /etc/aliases测试一下michael帐号正常接收51cto帐号正常接收查看配置信息postconf -n #Michael分割线#Postfix已经基本配置完成,我们需要对邮件的发送进行控制:对于外域到本域的邮件,必须接收,否则,收不到任何来自外部的邮件;对于本域到外域的邮件,只允许从本机发出,否则,其他人通过伪造本域地址就可以向外域发信;对于外域到外域的邮件,直接拒绝,否则我们的邮件服务器就是Open Relay,将被视为垃圾邮件服务器。先设置发件人的规则:smtpd_sender_restr
8、ictions = 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以上规则先判断是否是本域地址,如果
9、是,允许,然后再从recipient_access文件里检查收件人是否存在,允许存在的收件人,最后拒绝其他收件人。/etc/postfix/sender_access的内容: REJECT目的是防止其他用户从外部xx身份发送邮件,但登录到本机再发送则不受影响,因为第一条规则permit_mynetworks允许本机登录用户发送邮件。/etc/postfix/recipient_access的内容:michael OK 51cto OK因此,外域只能发送给以上两个Email地址,其他任何地址都将被拒绝。但本机到本机发送不受影响。最后用postmap生成hash格式的
10、文件:# postmap sender_access# postmap recipient_access发送正常现在我们来禁止发件人51cto,修改main.cf去掉permit_mynetworks设置为OK,51cto为REJECT测试一下而其他本域用户可以正常收发现在我们取消限制又可以发送了#Michael分割线#参考:4.1 postfix的配置文件结构postfix的配置文件位于/etc/postfix下,安装完postfix以后,我们可以通过ls命令查看postfix的配置文件:rootmail postfix# lsinstall.cf main.cf master.cf pos
11、tfix-script这四个文件就是postfix最基本的配置文件,它们的区别在于:mail.cf:是postfix主要的配置文件。Install.cf:包含安装过程中安装程序产生的postfix初始化设置。master.cf:是postfix的master进程的配置文件,该文件中的每一行都是用来配置postfix的组件进程的运行方式。postfix-script:包装了一些postfix命令,以便我们在linux环境中安全地执行这些postfix命令。4.2 postfix的基本配置postfix大约有100个配置参数,这些参数都可以通过main.cf 指定。配置的格式是这样的,用等号连接参
12、数和参数的值。如:myhostname 等号的左边是参数的名称,等号的右边是参数的值; 当然,我们也可以在参数的前面加上$来引用该参数,如:myorigin = $myhostname虽然postfix有100个左右的参数,但是postfix为大多数的参数都设置了缺省值,所以在让postfix正常为你服务之前,你只需要配置为数不多的几个参数。下面我们一起来看一看这些基本的postfix参数。需要注意的是,一旦你更改了main.cf文件的内容,则必须运行 postfix reload命令使其生效。1 myoriginmyorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user,则该
13、参数指定后面的域名。缺省地, postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 则我们可以这样指定myorigin:myorigin = 当然我们也可以引用其他参数,如:myorigin = $mydomain2 mydestinationmydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user, 也就是你的域为, 则你就需要接收所有收件人为user_name的邮件。与myorigin一样,缺省地,pos
14、tfix使用本地主机名作为 mydestination。如:mydestination = $mydomainmydestination = 3 notify_classes在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,只有这样,在用户遇到问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别:bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。2bounce:将两次不可投递的邮件拷贝发
15、送给postfix管理员。delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。缺省值为:notify_classes = resource, software4myho
16、stnamemyhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如:myhostname = 5mydomainmydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如:mydomain = 6mynetworksmynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR
17、(无类域间路由)地址来表示,如:192.168.1.0/24192.168.1.0/267inet_interfacesinet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如:inet_interfaces = allinet_interface = 192.168.1.14.3 postfix的UCE(unsolicited commercial email)控制所谓UCE控制就是指控制postfix接收或转发来自于什么地方的邮件。缺省地,postfix转
18、发符合以下条件的邮件:* 来自客户端ip地址符合$mynetworks的邮件。* 来自客户端主机名符合$relay_domains及其子域的邮件。* 目的地为$relay_domains及其子域的邮件。缺省地,postfix接受符合以下条件的邮件:* 目的地为$inet_interfaces的邮件。* 目的地为$mydestination的邮件。* 目的地为$virtual_maps的邮件。但是我们也可以通过下面的规则来实现更强大的控制功能。1 信头过滤通过header_checks参数限制接收邮件的信头的格式,如果符合指定的格式,则拒绝接收该邮件。可以指定一个或多个查询列表,如果新邮件的信头
19、符合列表中的某一项则拒绝该接收邮件。如:header_checks = regexp:/etc/postfix/header_checksheader_checks = pcre:/etc/postfix/header_checks缺省地,postfix不进行信头过滤。2客户端主机名/地址限制通过smtpd_client_restrictions参数限制可以向postfix发起SMTP 连接的客户端的主机名或ip地址。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:reject_unknown_client:如果客户端的ip地
20、址在DNS中没有PTR记录则拒绝转发该客户端的连接请求。可以用 unknown_client_reject_code参数指定返回给客户机的错误代码(缺省为450)。如果你有用户没有作DNS记录则不要启用该选项。permit_mynetworks:如果客户端的ip地址符合$mynetworks参数定义的范围则接受该客户端的连接请求,并转发该邮件。check_client_access maptype:mapname:根据客户端的主机名、父域名、ip地址或属于的网络搜索access数据库。如果搜索的结果为REJECT 或者 '45XX text' 则拒绝该客户端的连接请求;如果搜索
21、的结果为OK、RELAY 或数字则接受该客户端的连接请求,并转发该邮件。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为 554)。reject_maps_rbl:如果客户端的网络地址符合$maps_rbl_domains参数的值则拒绝该客户端的连接请求。可以用maps_rbl_reject_code参数指定返回给客户机的错误代码(缺省为554)。示例:smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rblsmtpd_client_restrictions = permi
22、t_mynetworks, reject_unknown_client该参数的缺省值为:smtpd_client_restrictions =也即接收来自任何客户端的SMTP连接。3. 是否请求HELO命令可以通过smtpd_helo_required参数指定客户端在SMTP会话的开始是否发送一个HELO命令。你可以指定该参数的值为yes或no。缺省值为:smtpd_helo_required = no4. HELO主机名限制可以通过smtpd_helo_restrictions参数指定客户端在执行HELO命令时发送给postfix的主机名。缺省地, postfix 接收客户端发送的任意形式的
23、主机名。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:reject_invalid_hostname:如果HELO命令所带的主机名参数不符合语法规范则拒绝客户机的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为501)。permit_naked_ip_address:RFC要求客户端的HELO命令包含的ip地址放在方括号内,你可以用permit_naked_ip_address参数取消该限制。因为有的mail客户端不遵守该RFC的规定。reject_unknown
24、_hostname:如果客户端执行HELO命令时的主机名在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为450)。reject_non_fqdn_hostname:如果客户端执行HELO命令时的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为504)。check_helo_access maptype:mapname:根据客户端HELO的主机名、父域名搜索access数据库
25、。如果搜索的结果为REJECT 或者 '45XX text' 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。示例:smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname5. RFC 821信头限制RFC 821对邮件的信头做了严格的规定,但是广泛使用的sendmail并不支持该规定,所以对于该参数我们只能说不,即:strict_rfc821_envelop
26、es = no6. 通过发件人地址进行限制可以用smtpd_sender_restrictions参数通过发件人在执行MAIL FROM命令时提供的地址进行限制。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:reject_unknown_sender_domain:如果MAIL FROM命令提供的主机名在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。check_sender_access maptype
27、:mapname:根据MAIL FROM命令提供的主机名、父域搜索access数据库。如果搜索的结果为REJECT 或者 '45XX text' 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。可以通过该参数过滤来自某些不受欢迎的发件人的邮件。reject_non_fqdn_sender:如果MAIL FROM命令提供的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用non_fqdn_reject_code 参数指定返回给客
28、户机的错误代码(缺省为504)。缺省地,postfix接受来自任何发件人的邮件。示例:smtpd_sender_restrictions = hash:/etc/postfix/access, reject_unknown_sender_domain7. 通过收件人地址进行过滤可以用smtpd_recipient_restrictions参数通过发件人在执行RCPT TO命令时提供的地址进行限制。缺省值为:smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains可以指定一个或多个参数值,中间用逗号隔开。限制规则是
29、按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:check_relay_domains:如果符合以下的条件,则接受SMTP连接请求,否则拒绝该连接,可以用relay_domains_reject_code 参数指定返回给客户机的错误代码(缺省为504)。* 客户端主机名符合$relay_domains及其子域* 目的地为$inet_interfaces、$mydestination或$virtual_mapspermit_auth_destination:不管客户端的主机名,只要符合以下的条件,就接受SMTP连接请求:* 解析后的目标地址符合$relay_domains及其子域
30、* 解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_mapsreject_unauth_destination:不管客户端的主机名,只要符合以下的条件,就拒绝该客户端SMTP连接请求:* 解析后的目标地址符合$relay_domains及其子域* 解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_mapscheck_recipient_access:根据解析后的目标地址、父域搜索access数据库。如果搜索的结果为REJECT 或者 '45XX text' 则拒绝该客户端的
31、连接请求;如果搜索的结果为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)。4.4 posftfi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国培培训汇报
- 放假安全教育主题班会
- 运用品管圈PDCA循环心血管内科降低介入患者术前焦虑率
- 如何做语文教学课件教学课件教学
- 课件资源管理方法介绍
- 血吸虫病诊治指南
- 重阳节主题班会-九九重阳节-浓浓敬老情
- 关于坡地建筑案例分析
- 2.5.4全等三角形判定AAS
- 北师大版版品德与社会五年级上册《寻根问祖》讲义
- 《国际关系学入门》课件第三章 国际关系理论
- 测量控制方案及方法
- DB61∕T 5016-2022 绿色建筑评价技术指南
- 冬季安全教育 课件(共17张PPT)
- 采区回风巷维修安全技术措施
- 保密协议(中英文版)
- 房屋建筑和市政工程施工作业安全隐患排查表
- 北京大学本科生毕业论文封面模板
- 主动脉球囊反搏操作规程及应急预案
- 太阳能定日镜项目可行性研究报告写作范文
- 《数字多媒体作品创作》教案
评论
0/150
提交评论