Linux中Postfix邮件认证配置(五)

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已安装

[[email protected] ~]# 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认证

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

③Postfix主配置添加以下内容

[[email protected] ~]# 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支持哪些认证机制

[[email protected] ~]# saslauthd -v
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

⑤Postfix开启基于SASL用户认证

这里介绍2种认证方式,saslauthd和auxprop,一个是使用系统的账号来做认证,一个使用外部的账户来做认证,对于安全性来说,当然是使用外部的账号更安全了,这里介绍的使用sasldb2数据库,mysql的方式暂不介绍。2种方式人选其一即可。

Saslauthd

[[email protected] ~]# vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
#登录方式

Auxprop

[[email protected] ~]# 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

[[email protected] ~]# vim /etc/sysconfig/saslauthd
SOCKETDIR=/var/run/saslauthd
#MECK= pam
MECK = shadow

Auxprop

[[email protected] ~]# vi /etc/sysconfig/saslauthd
#MECH=
FLAGS=sasldb
[[email protected] ~]# saslpasswd2 -c -u ‘ywnds.com‘ redis
  #执行之后输入2次密码就可以了
[[email protected] ~]# sasldblistusers2
  #查看添加的用户
[[email protected] ~]# saslpasswd2 -d [email protected]
  #删除用户
[[email protected] ~]# chown postfix:postfix /etc/sasldb2
[[email protected] ~]# chmod 640 /etc/sasldb2
  #数据库权限修改

⑦重启服务

[[email protected] ~]# /usr/sbin/postfix reload
[[email protected] ~]# service saslauthd restart
[[email protected] ~]# chkconfig saslauthd on

测试账号

[[email protected] ~]# 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用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如magedu.com;还可以只有用户名的部分,如[email protected]

案例

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重新载入配置文件即可进行发信控制的效果测试了

原文地址:https://www.cnblogs.com/flytor/p/11448035.html

时间: 2024-10-15 16:56:38

Linux中Postfix邮件认证配置(五)的相关文章

Linux中Postfix邮件接收配置(四)

Dovecot介绍 MRA邮件取回代理也有很多如courier-imap,cyrus-imap和dovecot这三个个工具,下面重点介绍Dovecot: 1.高安全性.据 Dovecot 的作者声称,从 Dovecot 的设计和实现,安全性都是被高度关注和强调的.这里的安全性不单单指传统意义的安全漏洞,也包括软件的可靠性.而 Dovecot 高安全性的最佳佐证,就是"悬赏".Dovecot 作者从 2006 年开始,对于第一个能够发现"remotely exploitable

Linux中Postfix邮件WebMail配置(七)

Extmail Extmail 是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件,主要包括ExtMail.Extman两个部分的程序套件.ExtMail套件用于提供从浏览器中登录.使用邮件系统的Web操作界面,提供给普通邮件用户使用.而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面,提供给邮件系统的管理员使用.它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发.改进和升级,适应能力强的we

Linux中Postfix邮件原理介绍(一)

邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.跟名字一样smtp非常简单,无法做到认证,邮件存放等功能. POP3(Post Office Protocol)邮局协议第3版,工作在TCP的110端口.本协议主要用于支持使用客户端远程管理在服务器上的电子邮件.POP 协议支持“离线”邮件处理.其具体过程是:邮件发送到服务器上,电子邮件客户端调用

Linux搭建Postfix邮件服务

Postfix为何物,详见:http://zh.wikipedia.org/wiki/Postfix 0.关于Postfix postfix的产生是为了替代传统的sendmail.相较于sendmail,postfix在速度,性能和稳定性上都更胜一筹.现在目前非常多的主流邮件服务其实都在采用postfix. 当我们需要一个轻量级的的邮件服务器是,postfix不失为一种选择. 1. postfix是免费的: postfix想要作用的范围是广大的Internet用户,试图影响大多数的Interne

Linux中tomcat开机启动配置脚本【参考其他文章的总结备忘录】

参考文章http://blog.sina.com.cn/s/blog_a57562c80101ic47.html http://blog.csdn.net/cheng168520/article/details/4312828 http://blog.sina.com.cn/s/blog_7f395ece0100ti5y.html 以前在自己本机上安装过一个Linux,后台应为系统崩溃,以前配置的开机启动脚本.数据库主从双备份.负载均衡等都没了,所以现在在重新配置一次,赶紧做个笔记防止自己以后又

Linux中vim的简单配置

本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:".vimrc". 1.从root切换到用户. 2.设置语法高亮 syntax on(用vim打开.vimrc进行写入) 3.显示行号 set nu(用vim打开.vimrc进行写入) 4.设置所进的空格数为4 set shiftwidth=4(用vim打开.

在Linux中DHCP服务器的配置

前提:设置为DHCP服务器,则将该机子的IP地址设置将于分配的地址范围处于同一网段 1.             查看是否安装DHCP服务器 # rpm -qa | grepdhcp 2.             若没安装则安装 # yum install dhcp 3.             安装了之后再查看安装文件,即重复第一步操作 4.             找到要复制的文件 # cat /etc /dhcpd.conf 将会出现以下文件: See / usr /share/doc/d

Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)

1 PHP简介 PHP(PHP: Hypertext Preprocessor的缩写,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域.PHP的文件后缀名为php. 2 下载地址 1)libmcrpyt ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz 2) php http://ww

linux中Zabbix邮件报警设置配置步骤

使用外部邮箱账号发送报警邮件设置 配置Zabbix服务端外部邮箱 vi /etc/mail.rc #编辑,添加以下信息 set [email protected] smtp=smtp.163.com set [email protected] smtp-auth-password=123456 set smtp-auth=login :wq! #保存退出 配置Zabbix服务端邮件报警 1. 管理-示警媒介类型-创建媒体类型 名称:Sendmail 类型:脚本 脚本名称:sendmail.sh