邮件服务之POSTFIX 邮件服务之POSTFIX_休闲

 
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liwanhong.blog.51cto.com/794431/314641
一. postfix概述
 
  postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。下面一段话摘自postfix的官方站点(http://www.postfix.org):“postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真实一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。”--摘至百度百科.
二.    POSTFIX实现过程
环境:
需要搭建DNS服务做MX解析;
POSTFIX实现SMTP功能;
DOVECOT 提供pop3与imap服务;
CYRUS-SASL 提供SMTP认证;
DNS:
mail.example.com (邮件主机)
邮件服务之POSTFIX_邮件_02
mail.sina.com (邮件主机)申明:此为实验环境。
邮件服务之POSTFIX_POSTFIX_03
POSTFIX:
邮件服务之POSTFIX_服务_04
配置前行备份:
邮件服务之POSTFIX_服务_05
#postconf -d     查看postfix default设置
#postconf -n     查看用户自定义设置
#postconf -e      修改用户自定义设置
MTA的选择:
邮件服务之POSTFIX_服务_06
启动postfix :
邮件服务之POSTFIX_服务_07
设置监听接口:(默认只监听在本地,ALL为监听所有接口)
邮件服务之POSTFIX_休闲_08
这个设置只有重启服务才能生效:(已经监听在所有接口了)
邮件服务之POSTFIX_服务_09
查看当前用户设置:
邮件服务之POSTFIX_服务_10
使用TELNET工具测试:
邮件服务之POSTFIX_休闲_11
发信流程:(借用鸟哥的图.感谢鸟哥:这张图让我的理清了思路)
邮件服务之POSTFIX_邮件_12
这里分别涉及了/etc/postfix/main.cf里的三个设定项:
mydestination:        设置可收信的地址(用于收信)
mynetworks:           设置可信任的客户端(用于Relay)
relay_domains:        设置可信任的域(用于Relay)
现在来看图作文吧:
第一步:信件进来ehlo握手阶段,传递邮件头部信息也就是mail from: mail to:之类的.
邮件主机根据传递来的头部信息分析邮件是不是传给我自己的,也就是看Mail To的地址是不是与我的邮件主机地址匹配.如果是,再看是否符合mydestination的设定,如果符合则放入mailbox,如果不符合则丢弃或退回.
以上是针对于邮件目标地址是邮件主机本身的处理过程
第二步:Mail To 的地址不是给邮件主机的,我们称为Relay部分.
这时,邮件主机会查看邮件来源IP地址(注意是IP地址而不是什么Mail from:,因为mail from是可以伪装的.)是否符合mynetworks设定(postfix 默认只信任本机所在的网络)
如果符合则放入邮件队列中等待转发.如果不符合,则看来源或者目的是否符合relay_domans的设定,如果符合则转发,不符合则丢弃或退回.
注:mynetworks与relay_domains都是用来设定可信任的客户端,只是一个是基于IP地址,一个是基于域名的设定而已.
测试整个流程:
第一步:example.com 是邮件本机的,接收邮件,放入mailbox
邮件服务之POSTFIX_休闲_13
邮件日志信息(状态:发送并放入mailbox)
邮件服务之POSTFIX_POSTFIX_14
收件人地址拒绝: (目标是邮件主机主机的,但不符合mydestination设定)
邮件服务之POSTFIX_邮件_15
邮件日志信息:本地收信列表中不存在,reject (拒绝!!)
邮件服务之POSTFIX_休闲_16
来源不符合mynetworks与relay_domains设定.拒绝!!
邮件服务之POSTFIX_邮件_17
postfix默认只信任本地域.重新设定:信任sina.com这个域.
邮件服务之POSTFIX_休闲_18
来源IP不符合mynetworks设定(此邮件主机mynetworks设定只信任主机.).但目标地址符合relay_domains设定,转发成功!!
邮件服务之POSTFIX_邮件_19
说明:因为两台邮件主机处于同一网段的情况下,为了区分效果之前mynetworks设定为只信任自己,现在改为信任本网段.而relay_domains还原为默认的,即取消之前信任的sina.com域.
邮件服务之POSTFIX_休闲_20
虽然不符合relay_domains设定,但来源符合mynetworks设定,为信任网络,转发.!!
邮件服务之POSTFIX_职场_21
日志信息说明的很清楚~~!!
邮件服务之POSTFIX_休闲_22
SMTP控制:
控制文件: /etc/postfix/access  (sendmail的无标签版本)
可控制行为: client , sender , recipient (分别是客户端,发信者与收信者.)
执行动作: DISCARD(严厉拒绝,丢弃),REJECT(拒绝,退回信息),RELAY(转发),OK(允许,可以在一个拒绝范围内无条件允许个别.)
使用postmap /etc/postfix/access 进行重散列 (重要的一步!!)
/etc/postfix/access文件本身都带有配置实例,可以参考它的步骤~!
邮件服务之POSTFIX_职场_23
实例:
在/etc/postfix/main.cf主配置文件中加入以下内容.
smtp的客户端控制,先检查/etc/postfix/access/里有没有相应匹配的动作,没有匹配的全部reject (拒绝!!)
邮件服务之POSTFIX_休闲_24
编辑/etc/postfix/access文件,此例只允许192.168.1.254这一个IP地址的访问.
邮件服务之POSTFIX_服务_25
#postmap /etc/postfix/access  (使用hash进行重散列!!)
使用192.168.1.254这个IP地址测试发送成功~~!
邮件服务之POSTFIX_职场_26
使用192.168.1.111这个IP地址给example.com这个邮件主机的本地域发邮件仍然拒绝!!
邮件服务之POSTFIX_邮件_27
日志内容:
邮件服务之POSTFIX_邮件_28
改动一下,首先允许mynetworks(这里是192.168.1.0/24这个信任网段!),再做后面的动作.
邮件服务之POSTFIX_POSTFIX_29
现在邮件发送成功了~!!
邮件服务之POSTFIX_职场_30
上面的mynetworks已经是允许了!下面再做一条发信策略,检查/etc/postfix/sender_access 文件,不匹配则执行后面的permit (允许!!)
邮件服务之POSTFIX_POSTFIX_31
如下图,拒绝了sina.com这个域.我们看一下,发信..
邮件服务之POSTFIX_服务_32
如下图,已经对发信人做了控制!!
邮件服务之POSTFIX_POSTFIX_33
做user2这个用户做例外!!
邮件服务之POSTFIX_POSTFIX_34
user2@sina.com这个用户可以通过mail.example.com这个邮件主机发信了!!
邮件服务之POSTFIX_邮件_35
下面再增加一条收信控制:
先检查recipient_access这个文件里的策略,不匹配则允许mynetworks,再拒绝没有被定义为可收信的主机名.
邮件服务之POSTFIX_职场_36
定义example.com这个域的user2这个用户收信拒绝!!注意不要和上面的那个user2@sina.com搞混淆了~!!
邮件服务之POSTFIX_POSTFIX_37
如下图,给user2发信被拒绝了~~! 给其他人发信ok~~!
邮件服务之POSTFIX_休闲_38
日志信息..
邮件服务之POSTFIX_POSTFIX_39
以上情况只针对于在同一局域网内固定IP地址的行为控制,如果是不固定的IP地址想要通过这个邮件主机收发邮件而又不想让我的邮件主机open relay 成为垃圾邮件中转站.那么SMTP认证能够很好的解决这一问题.
cyrus-sasl认证:
先确定下以下软件包是否被安装
#saslauthd -v 可查看该论证版本以及可支持的认证方式.
这里我选择shadow验证机制.
邮件服务之POSTFIX_职场_40
#/usr/sbin/saslauthd -a shadow  执行,并写入开机脚本.
分别编辑以下配置文件,内容如图:
/etc/sysconfig/saslauthd 这是sasl认证的全局配置,定义socketdir与认证方式.
/usr/lib/sasl2/smtpd.conf  smtp的认证配置
在/etc/postfix/main.cf配置文件中开启smtp认证,并进行相关设置.
邮件服务之POSTFIX_POSTFIX_41
sasl 测试: 分别测试saslauthd 这个功能是否开启和smtp认证是否生效!成功了!
邮件服务之POSTFIX_POSTFIX_42
使用Dovecot 提供POP3与imap服务:
安装dovecot软件:
邮件服务之POSTFIX_邮件_43
启用服务查看监听的端口110 143分别是pop3 ,imap监听的端口,993 995则是pop3s与imaps啦.
邮件服务之POSTFIX_POSTFIX_44
因为pop3与imap不够安全,这里我只提供加密的pop3s 与imaps,所以客户端要只能在他的MUA软件上设置为安全的连接.
编辑/etc/dovecot.conf  去掉imap与pop3
邮件服务之POSTFIX_服务_45
重启服务,现在只提供imaps与pop3s 了.
邮件服务之POSTFIX_职场_46
设置开机启动;自制证书
邮件服务之POSTFIX_邮件_47
如下图: dovecot.pem  已经产生了.
邮件服务之POSTFIX_服务_48
dovecot是用的是对称加密的算法,所以公钥与私钥使用的都是dovecot.pem
这里将dovecot.pem放入一个/etc/pki/dovecot/serts这个目录里.(目录并不是特定的哦!)
邮件服务之POSTFIX_服务_49
编辑/etc/dovecot.conf
开启SSL的功能,并指定钥匙的路径,只需要对应刚才存放的路径就行了~!
邮件服务之POSTFIX_服务_50
测试~~!
邮件服务之POSTFIX_休闲_51
邮件服务之POSTFIX_休闲_52
测试ok~~!
使用MUA工具: Thunderbird
邮件服务之POSTFIX_邮件_53
询问是否信任该证书..
邮件服务之POSTFIX_邮件_54
如果你不确定请先查看该证书的相关细节部分,再决定是否信任,这里我当然要信任了.
邮件服务之POSTFIX_POSTFIX_55
邮件服务之POSTFIX_邮件_56
邮件服务之POSTFIX_职场_57
postfix 其他功能:
使用always_bcc监控邮件~!注意开启这个功能必须经过授权.
此功能是将经过本邮件主机的邮件都抄送一份给某个用户.
邮件服务之POSTFIX_邮件_58
这里是将邮件抄送给admin@sina.com这个用户~!
邮件服务之POSTFIX_邮件_59
看一下,给test@sina.com的用户也送了一份给admin@sina.com
邮件服务之POSTFIX_POSTFIX_60
日志信息:
邮件服务之POSTFIX_职场_61
虚拟别名:
编辑/etc/postfix/main.cf主配置文件
virtual_alias_domains = example.com baidu.com 这里指定了两个的虚拟域.
virtual_alias_maps = hash:/etc/postfix/virtual   (配置文件里有相关配置说明)
编辑/etc/postfix/virtual这个文件.编辑完也记得postmap一下~~!
邮件服务之POSTFIX_POSTFIX_62
通常用在公司域名变更之后,无须通知原来的客户邮件联系方式,使用别名就好了.
如图,发给admin@example.com的邮件最终发给admin@sina.com了.
日志信息:
邮件服务之POSTFIX_邮件_63
用户别名:
alias_database = hash:/etc/aliases 在/etc/postfix/main.cf里指定用户别名文件.
使用的是/etc/aliases 这个文件.编辑完记得用postalias /etc/aliases 与postmap很相似~!
邮件服务之POSTFIX_服务_64
用户别名的功能可以用于群发,而且有效的保证的系统帐号不被泄漏~!
邮件服务之POSTFIX_POSTFIX_65
看一下群发的效果吧~!
邮件服务之POSTFIX_邮件_66
邮件服务之POSTFIX_职场_67
邮件服务之POSTFIX_邮件_68
邮件服务之POSTFIX_邮件_69
地址重编:
邮件服务之POSTFIX_服务_70
邮件服务之POSTFIX_POSTFIX_71
测试一下..~
邮件服务之POSTFIX_休闲_72
日志信息:
邮件服务之POSTFIX_职场_73
接收查看: Mail From: admin.alias@sina.com  测试ok~!
邮件服务之POSTFIX_服务_74
回信~~!
邮件服务之POSTFIX_服务_75
邮件服务之POSTFIX_职场_76
admin收到~!
邮件服务之POSTFIX_休闲_77
重新看了一下日志信息,有点儿疑惑,好像是之前做的bcc 还是别名的实验没有被清除,才收到了信件,因为在日志里出现了收信地址拒绝与bounced的状态,
邮件服务之POSTFIX_邮件_78
解决:在/etc/aliases 添加以下内容就可以正常收信了。
admin.alias  admin
附:
mail.example.com邮件主机配置:
邮件服务之POSTFIX_职场_79
mail.sina.com邮件主机配置:
邮件服务之POSTFIX_休闲_80
其它测试方式:
邮件服务之POSTFIX_邮件_81
 
推荐文档:
 
完结~~!
 

本文出自 “李万红的博客” 博客,请务必保留此出处http://liwanhong.blog.51cto.com/794431/314641