Postfix+Dovecot+Sasl工作原理

1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户端,就会去连接SASL。当SASL接受到验证请求时就会根据验证方式去进行验证,常用的有PAM,passwd等。验证成功后就会返回给Smtpd服务器。而smtpd就会允许A用户登陆发送邮件。

2.Smtpd服务器接受到邮件转发请求后,查看邮件是本域的还是外部域的,如果是本域内的用户,就会开启MDA进程并进行邮件投递到用户的邮箱。

3.B用户使用MUA客户端借助pop3协议登陆dovecot服务器,需要先进行用户和密码认证,而Dovecot服务器端本身就有sasl认证的功能,而根据设置的认证方式进行用户和密码的认证。认证成功之后用户登录,Dovecot就会用MDR工具去用户邮箱中取回邮件并下载到用户的客户端本地进行查看。

Postfix+SASL进行用户发邮件认证

通过验证配置可以发现,如果想发送邮件给外部(中继邮件)基本配置只能在mynetwork规定的ip范围内使用。这个方式在现实中也是不可行的。互联网上常用的方式是通过账号的认证方式允许中继邮件。但Postfix本身没有认证功能所以只能借助于第三方认证组件SASL来实现。与Postfix配合较好的SASL有:dovecot-SASL和cyrus-SASL,以及courier-authlib这几款组件。各有千秋,使用哪个根据实际选择即可。

①确定cyrus-sasl已安装

[root@localhost ~]# rpm -qa | grep  cyrus-sasl cyrus-sasl-gssapi-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64

②确定Postfix支持sasl认证

[root@localhost ~]# postconf -a cyrus dovecot  #默认支持cyrus和dovecot这两种认证方式

③Postfix主配置添加以下内容

[root@localhost ~]# vim /etc/postfix/main.cf ###################CYRUS-SASL################ broken_sasl_auth_clients = yes  #定义是否支持像outlook、foxmail等非标准协议认证 smtpd_sasl_auth_enable = yes  #开启sasl验证用户功能 smtpd_sasl_local_domain = $myhostname  #用于识别本地主机 smtpd_sasl_security_options = noanonymous  #不支持匿名用户 smtpd_sasl_path = smtpd  #指定使用sasl的程序名 smtpd_banner = welcome to smtp.ywnds.com  #定义telnet连接时显示信息 smtpd_client_restrictions = permit_sasl_authenticated  #用于限制客户端连接服务器 smtpd_sasl_authenticated_header = yes  #从头信息查找用户名 smtpd_sender_restrictions = permit_mynetworks,reject_sender_login_mismatch  #定义发件人规则 smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated, reject_invalid_hostname,reject_unauth_destination  #定义收件人规则  #permit_mynetworks:允许本地网络  #permit_sasl_authenticated:允许sasl认证过的用户发送邮件  #reject_unauth_destination:拒绝没有经过认证的目标地址(这个一定要放在最后)  #reject_invalid_hostname:HELO命令中的主机名称无效时返回501  #reject_non_fqdn_hostname:HELO命令中的主机名称不是FQDN形式则返回504  #reject_non_fqdn_recipient:收件地址不是FQDN则返回504  #reject_non_fqdn_sender:发件地址不是FQDN则返回504  #reject_unauth_pipelining:拒绝不守规定的流水线操作  #reject_unknown_client:DNS查不出客户端IP的PTR记录时拒绝  #reject_unknown_hostname:HELO命令中的主机名称没有A和MX记录时拒绝  #reject_unknown_recipient_domain:收件人地址的网域部分查不出有效的A或MX记录时拒绝  #reject_unknown_sender_domain:发件人地址的网域部分查不出有效的A或MX记录时拒绝

④查看SASL支持哪些认证机制

[root@localhost ~]# saslauthd -v saslauthd 2.1.23 authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

⑤Postfix开启基于SASL用户认证

这里介绍2种认证方式,saslauthd和auxprop,一个是使用系统的账号来做认证,一个使用外部的账户来做认证,对于安全性来说,当然是使用外部的账号更安全了,这里介绍的使用sasldb2数据库,mysql的方式暂不介绍。2种方式人选其一即可。 Saslauthd [root@localhost ~]# vim /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: PLAIN LOGIN #登录方式 Auxprop [root@localhost ~]# vim /usr/lib64/sasl2/smtpd.conf pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM #登录方式

⑥SASL配置文件/etc/sysconfig/saslauthd

SASL只是个认证框架,实现认证的是认证模块,而pam是sasl默认使用的认证模块。如果使用shadow做认证的话直接修改就可以不需要做其他任何配置了。 Saslauthd [root@localhost ~]# vim /etc/sysconfig/saslauthd SOCKETDIR=/var/run/saslauthd #MECK= pam MECK = shadow Auxprop [root@localhost ~]# vi /etc/sysconfig/saslauthd #MECH= FLAGS=sasldb [root@localhost ~]# saslpasswd2 -c -u 'ywnds.com' redis  #执行之后输入2次密码就可以了 [root@localhost ~]# sasldblistusers2  #查看添加的用户 [root@localhost ~]# saslpasswd2 -d redis@ywnds.com  #删除用户 [root@localhost ~]# chown postfix:postfix /etc/sasldb2 [root@localhost ~]# chmod 640 /etc/sasldb2  #数据库权限修改

⑦重启服务

[root@localhost ~]# /usr/sbin/postfix reload [root@localhost ~]# service saslauthd restart [root@localhost ~]# chkconfig saslauthd on 测试账号 [root@localhost ~]# testsaslauthd -u hadoop -p hadoop 0: OK “Success”

SMTP认证指令

Postfix内部邮件过滤

除了在上面配置文件中使用的一些过滤指令外,管理员也可以使用访问表(access map)来自定义限制条件,自定义访问表的条件通常使用check_client_access, check_helo_access, check_sender_access, check_recipient_access进行,它们后面通常跟上type:mapname格式的访问表类型和名称。其中,check_sender_access和check_recipient_access用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如admin@magedu.com;也可以只使用域名,如magedu.com;还可以只有用户名的部分,如marion@

案例

1.这里以禁止172.16.100.66这台主机通过工作在172.16.100.1上的postfix服务发送邮件为例演示说明其实现过程。访问表使用hash的格式

(1)首先编辑/etc/postfix/access文件,以之做为客户端检查的控制文件,在里面定义如下一行: 172.16.100.66          REJECT (2)将此文件转换为hash格式产生一个access.db文件 postmap /etc/postfix/access (3)配置postfix使用此文件对客户端进行检查编辑/etc/postfix/main.cf文件添加如下参数: smtpd_client_restrictions = check_client_access hash:/etc/postfix/access (4)让postfix重新载入配置文件即可进行发信控制的效果测试了

2.这里以禁止通过本服务器向microsoft.com域发送邮件为例演示其实现过程访问表使用hash的格式

(1)首先建立/etc/postfix/denydstdomains文件(文件名任取)在里面定义如下一行: microsoft.com          REJECT (2)将此文件转换为hash格式 postmap /etc/postfix/denydstdomains (3)配置postfix使用此文件对客户端进行检查编辑/etc/postfix/main.cf文件添加如下参数: smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/denydstdomains, permit_mynetworks, reject_unauth_destination (4)让postfix重新载入配置文件即可进行发信控制的效果测试了

让您学习到的每一节课都有所收获

《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。荣获双11、双12购物狂欢节IT品类书籍销量冠军,2017年、2018年国内读者增速最快的技术书籍,您可以在京东、当当、亚马逊及天猫搜索书名后购买,亦可加刘遄老师微信交流学习(手指按住下图3秒钟即可自动扫描)~

刘遄老师QQ:5604215

☀ Linux技术交流群:560843(新群,火热加群中……)

☀ 官方站点:www.linuxprobe.com

☀ 书籍在线学习(电脑在线阅读效果更佳):

http://www.linuxprobe.com/chapter-00.html

《Linux就该这么学》是一本基于最新Linux系统编写,面向零基础读者的技术书籍。从Linux基础知识讲起,然后渐进式地提高内容难度,详细讲解Linux系统中各种服务的工作原理和配置方式,以匹配真实生产环境对运维人员的要求,突显内容的实用性。想要学习Linux系统的读者可以点击按钮了解这本书,同时这本书也适合专业的运维人员阅读,作为一本非常有参考价值的工具书!

sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)相关推荐

  1. sybase的sysprocesses中的hostname显示不全_房颤伴肾功能不全患者,使用利伐沙班同样安全...

    房颤患者通常伴有血栓栓塞风险,因此抗凝治疗必不可少.然而,抗凝获益的同时往往带来出血风险,尤其对伴肾功能不全的患者,其出血风险本身就高于一般人群.因此,抗凝治疗在保证获益的同时,还需考虑安全性.近年来 ...

  2. linux中mysql不显示中文_linux中解决mysql中文乱码方法

    改默认编码: /etc/init.d/mysql start (stop) 为启动和停止服务器 /etc/mysql/ 主要配置文件所在位置 my.cnf /var/lib/mysql/ 放置的是数据 ...

  3. Word中的公式显示不全,或许是这个原因

    作为好用的公式编辑器,但是偶尔也存在一些问题.比如用MathType编辑的公式放在Word中有时会显示不全,仅显示其中一部分.那么如何才能解决该问题呢? MathType公式编辑器正在搞新春特惠活动, ...

  4. 插入MathType公式行距变大的解决方法解决Word中MathType公式显示不全问题

    一.插入MathType公式行距变大的解决方法 Word文档中插入用MathType编辑的公式后,经常会发现行距明显变大,就好像插入的公式把行与行之间给撑开了一样. 设置页面格式 在Word文档状态下 ...

  5. word表格中部分文字显示不全文字右侧或底部不能完整显示

    文字上面好像被削了一样 缩小字体,段落--行距--固定值 调整一下就ok,这个就是段落的问题,调整一下行距就好了. 插入表格--在"自动调整"操作中--点上根据内容调整表格就可以了 ...

  6. postfix mysql_Linux中Postfix邮件安装配置(二)

    原标题:Linux中Postfix邮件安装配置(二) 本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍.在搭建过程中必须的参数解释以及原理都有告诉, ...

  7. word文档中插入图片显示不全解决办法

    在windows下写word文档,正常情况下,我们应该不会遇到插入图片显示不全的问题,好像是如果在已有的文档中插入图片,比如文档中间插入,图片没办法自动扩展空间,这就导致了显示不全的问题. 这个问题也 ...

  8. word2013中插入图片显示不全

    有时候,在word里面插入图片后,发现显示不全,对图片右击选择"设置对象格式"---"版式"---"环绕方式"各种尝试也没法解决,如下图所示 ...

  9. word中对话框文本显示不全

    问题 因为对话框的尺寸是限死的,内容的高度超过了对话框的高度就会显示不全.但不会影响内容. 解决 可以修改题注的格式(注意之前要插入过题注才有题注的样式),修改为图中或比原来的段落行距小解决问题. 然 ...

最新文章

  1. android smack源码分析——接收消息以及如何解析消息
  2. java字符串切割_java字符串常用操作方法(查找、截取、分割)
  3. FPGA学习之路—接口(3)—SPI详解及Verilog源码分析
  4. Oracle入门(九)之用户、角色与权限之间关系
  5. C语言 十进制和二进制相互转换 - C语言零基础入门教程
  6. centos mysql 5.5 art_Linux CentOS6.5下编译安装MySQL 5.5.51''''
  7. One River CEO:从长远来看比特币可能达到每枚50万美元
  8. 【转】处事22计、心态24条、伤心50句、礼仪73、学会长大20!
  9. mysql客户端登陆提示client option 'secure_auth' enabled错误
  10. android实现Materia Design风格APP(四):ViewPager同时显示3个item及设置切换动画
  11. IB网卡驱动安装以及Infiniband连接带宽测试
  12. 申请并部署阿里云SSL免费证书详细流程
  13. 计算机启用远程桌面连接失败,解决办法:如何处理win10远程桌面连接失败?
  14. 局域网,手机与电脑文件共享
  15. 从中国的山水画谈谈游戏场景设计该有的状态
  16. Android DEX安全攻防战
  17. FPV救援四足机器人设计(1)
  18. 清爽的空气中流动着一种微熏的温情
  19. 计算正方体、圆柱体的表面积、体积
  20. excel模糊查找公式_Excel查找公式挑战20171026

热门文章

  1. 对话框中加入标签页的5种方法
  2. v8-su-root
  3. Xamarin+vs2010部署错误:error MSB6004: 指定的任务可执行文件位置\sdk\\tools\zipalign.exe”无效...
  4. centos下添加的端口不能访问(防火墙关闭)
  5. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
  6. UVA 11259 Coin Changing Again
  7. 关于工资的三个秘密【转载】
  8. 70.ER模型转化成关系模型是在数据库设计的第几个阶段?
  9. Linux系统查看分区文件系统类型
  10. 干货整理!深度学习相关的面试考点