Linux中Postfix邮件认证配置(五)
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工具去用户邮箱中取回邮件并下载到用户的客户端本地进行查看。
通过验证配置可以发现,如果想发送邮件给外部(中继邮件)基本配置只能在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”

除了在上面配置文件中使用的一些过滤指令外,管理员也可以使用访问表(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中Postfix邮件认证配置(五)的更多相关文章
- Linux中Postfix邮件安装配置(二)
本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍.在搭建过程中必须的参数解释以及原理都有告诉,这样才能更好地理解邮件系统. 卸载自带postfix ...
- Linux中Postfix邮件接收配置(四)
Dovecot介绍 MRA邮件取回代理也有很多如courier-imap,cyrus-imap和dovecot这三个个工具,下面重点介绍Dovecot: 1.高安全性.据 Dovecot 的作者声称, ...
- Linux中Postfix邮件WebMail配置(七)
Extmail Extmail 是一个以perl语言编写,面向大容量/ISP级应用,免费的高性能Webmail软件,主要包括ExtMail.Extman两个部分的程序套件.ExtMail套件用于提供从 ...
- Linux中Postfix邮件发送配置(三)
部署DNS服务器 postfix根据域名和地址做一个MX记录,A记录,PTR记录(一般在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件) $ service iptables stop $ ...
- Linux中postfix邮件服务器的搭建
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...
- Linux中Postfix邮件原理介绍(一)
邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 ...
- Linux中Postfix邮件安装Maildrop(八)
Postfix使用maildrop投递邮件 Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc).投递和磁盘限额(Quota)功能. Maildrop是一个使用C ...
- Postfix邮件系统安装配置视频
Postfix邮件系统安装配置视频(文字资料详见linux企业应用案例精解),全部视频分为四个部分,详情如下: http://115.com/file/be9j4dsj#postfix-1.rar h ...
- Linux中vim的简单配置
本文主要分享Linux中vim的简单配置 ★配置文件的位置 在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...
随机推荐
- MFC如何获取控件相对于窗口的左边,以及鼠标相对于控件的位置
CRect rect; CWnd *pWnd = GetDlgItem(IDC_STATIC_PIC); pWnd->GetWindowRect(&rect); ScreenToClie ...
- windows下gcc的安装
首先打开 www.mingw.org . www.mingw.org 直接点击右上方的 Download Installer 即可下载. 点击 Download Installer 进入下载页 ...
- Codeforces Round #435 (Div. 2)
A. Mahmoud and Ehab and the MEX 题目链接:http://codeforces.com/contest/862/problem/A 题目意思:现在一个数列中有n个数,每个 ...
- linux:用户及文件权限管理
学习内容来自实验楼.莫烦python.CSDN 一.Linux 用户管理 1. 查看用户 who am i 或者who mom likes who -a:打印所有能打印的 who -d :打印死掉的 ...
- cordova 加载HTML 资源的次序
ionic 开发的app再启动的时候不会很快,因为cordova 会加载html,css, js这些文件,读取这些文件内的代码之后,js代码才能和Native建立桥接. 这是一个初始化运行时环境的操作 ...
- android 量产软件改动信息(持续更新)
http://blog.csdn.net/xubin341719/article/details/8449352 关键词:android 4.0默认语言蓝牙名称 MTP名称默认时区关于平板电脑 内核版 ...
- bin/hdfs namenode -format 格式化失败
确认配置正确前提下,将name目录删除重建,再格式化: hadoop防止将已经存在的集群格式化
- Loadrunner解决启动浏览器后页面显示空白
Loadrunner解决启动浏览器后页面显示空白 2018年5月20日,今天照常打开Loadrunner准备学习,在录制的时候却出现了一个问题,浏览器可以启动,但是程序页面缺是加载不出来,主要症状体现 ...
- python count()
count() 描述 Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位置. 语法 count()方法语法: str.count(sub, st ...
- [adt]python实现栈-体验数据结构
经常使用py的一些数据结构,如list,及list的一些方法. 还有hash表等. 各类数据结构方法用的很6,然而不知道是底层是怎么实现的. 基于此,就开始研究一下py实现一些数据结构, 以便于对计算 ...