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

[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 [email protected]
 #删除用户
[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用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如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重新载入配置文件即可进行发信控制的效果测试了

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/200826.html<

(0)
运维的头像运维
上一篇2025-04-05 11:40
下一篇 2025-04-05 11:42

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注