设为首页 收藏本站
查看: 2097|回复: 0

[经验分享] Postfix邮箱(四):安装Cyrus-SASL使Postfix支持SMTP认证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-17 08:24:39 | 显示全部楼层 |阅读模式
说明:Postfix的SMTP认证需要透过Cyrus-SASL,连接到authdaemon获取认证信息;

      本节后面将讲解Postfix自带的限制、过滤功能。

一、安装配置Cyrus-SASL
1、系统已默认安装Cyrus-SASL:
1
2
3
4
5
6
[iyunv@mail ~]# rpm -aq|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




2、配置cyrus-sasl
1
2
3
4
5
6
7
8
[iyunv@mail ~]# vi /etc/sasl2/smtpd.conf
#pwcheck_method: saslauthd
#mech_list: plain login
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/var/spool/authdaemon/socket
[iyunv@mail ~]# chmod 755 /usr/local/var/spool/authdaemon



说明:有的系统authdaemond路径为/var/spool/authdaemon/socket。

3、配置postfix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[iyunv@mail ~]# vi /etc/postfix/main.cf
# SMTP 收件方限制
smtpd_recipient_restrictions =
        permit_mynetworks,      
        permit_sasl_authenticated,      
        reject_non_fqdn_hostname,
        reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
        reject_unauth_destination,
        reject_unauth_pipelining,
        reject_invalid_hostname      
# SMTP 发件方限制      
smtpd_sender_restrictions =
        permit_mynetworks,        
        reject_sender_login_mismatch,      
        reject_authenticated_sender_login_mismatch,
        reject_unauthenticated_sender_login_mismatch
# SMTP 用户登陆限制
smtpd_sender_login_maps =
        mysql:/etc/postfix/mysql_virtual_sender_maps.cf,
        mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# SMTP 认证配置
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous



1
[iyunv@mail ~]# service postfix restart



说明:以上限制方式是postfix自带的一种访问限制方式,下文会详细说明。

4、测试SMTP认证
    使用MIME::Base64将邮箱账号和密码进行Base64编码:
1
2
3
4
[iyunv@mail ~]# perl -e 'use MIME::Base64; print encode_base64("postmaster@yourmail.com")'
cG9zdG1hc3RlckB5b3VybWFpbC5jb20=
[iyunv@mail ~]# perl -e 'use MIME::Base64; print encode_base64("extmail")'
ZXh0bWFpbA==



    本地测试需要安装telnet工具:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[iyunv@mail ~]# yum install -y telnet
[iyunv@mail ~]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.eplantstore.com ESMTP Postfix - by eplantstore.com
ehlo localhost                        #输入hello内容
250-mail.eplantstore.com
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN                  #显示认证登陆表示Postfix成功
250-AUTH=PLAIN LOGIN                  #调用Cyrus-SASL进行SMTP认证
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login                            #输入认证登陆命令
334 VXNlcm5hbWU6
cG9zdG1hc3RlckB5b3VybWFpbC5jb20=      #输入账号的Base64编码
334 UGFzc3dvcmQ6
ZXh0bWFpbA==                          #输入密码的Base64编码
235 2.7.0 Authentication successful   #显示认证成功
quit
221 2.0.0 Bye
Connection closed by foreign host.




结论:以上信息表示postfix成功使用并通过SMTP认证(cyrus-sasl)



二、Postfix本身的邮件过滤
1、访问表
(1)访问表类型
  •     check_client_access maptype:mapname
      检查主机名和从属网域
      192.168.1.100
      10.188
  •     check_helo_access maptype:mapname
      检查HELO命令中显示的主机名
  •     check_recipient_access maptype:mapname
      检查收件地址
      user@example.com
      example.com
      user@
  •     check_sender_access maptype:mapname
      检查发件地址
      user@example.com
      example.com
      user@
(2)处理动作
  •     OK
      通过
  •     REJECT
      拒绝
  •     REJECT message-text
      messsage-text用来设置一条消息;
      消息会连同拒收邮件一起发给客户端,并记录在log中(下同)
  •     DUNNO
      暂停检查
  •     HOLD message-text
      保留在队列中
  •     DISCARD message-text
      postfix丢弃邮件,但让客户端误以为发送成功
  •     4.xx message-text
      返回指定的拒绝码与信息给客户端,暂时拒收
  •     5.xx message-text
      返回指定的拒绝码与信息给客户端,彻底拒收
(3)使用举例
    设置访问表限制:
1
2
3
4
[iyunv@mail ~]# vi /etc/postfix/main.cf
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client_access
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access
smtpd_recipien_restrictions = check_recipien_access hash:/etc/postfix/recipien_access



    创建访问表
1
2
3
4
5
6
7
[iyunv@mail ~]# vi /etc/postfix/client_access
10.188  REJECT
192.168.1.100 REJECT
[iyunv@mail ~]# vi /etc/postfix/sender_access
user@example.com
marketing@
abc.example.com



    转化为数据库格式 (只要修改了访问表都要进行转化)
1
2
[iyunv@mail ~]# postmap /etc/postfix/client_access
[iyunv@mail ~]# postmap /etc/postfix/sender_access




2、内置限制条件
  •   permit_auth_destination
    放行mydestinationinet_interfaces irtual_alias_maps irtual_mailbox_mapselay_domain
    设置的范围,不符合时返回DUNNO
  •   permit_mynetworks
    放行客户端IP位于mynetworks设置的范围
  •   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记录时拒绝

3、RBL实时黑名单
  •   reject_rbl_client rblprovider.domain
    客户端IP地址黑名单库
  •   reject_rhsbl_client rblprovider.domain
    客户端主机名称黑名单库
  •   reject_rhsbl_sender rblprovider.domain
    发件人黑名单库

4、内容过滤
(1)类型
  •     header_checks = /etc/postfix/header_checks
        检查标题
  •     body_checks = /etc/postfix/body_checks
        检查正文
  •     nested_header_checks
        检查附件标题
  •     mime_header checks
        检查标题的MIME字段
(2)动作
  •     REJECT message-text
      拒收
  •     WARN message-text
      不拒绝,记录message到log,可用于测试
  •     IGNORE
      删除符合模式的内容
  •     HOLD message-text
      保留到队列中
  •     DISCARD message-text
      偷偷丢弃邮件
(3)样例
    运用header_checks进行简单的病毒过滤
1
/name ?="?.*.(bat|scr|com|dll|exe|hta|pif|vbs)"?/  REJECT



    运用body_checks进行内容过滤
1
2
3
4
/increase your sales by /   REJECT
/in compliance (with|of) strict/  REJECT
/lowest rates.*!/  REJECT
/[:alpha:][:alpha:]/ REJECT



        第三个模式挑出任何含有lowest rates字样且其后跟着任何文字和!的字符串
        最后一个模式检查是否有HTML注释嵌在字句中间
        最好是使用外部内容过滤器spamassassin或DSPAM
wKiom1SPicPDPNe8AAINEKfDH4M829.jpg
   上图是SMTP对话过程以及各阶段对应的限制条件。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38125-1-1.html 上篇帖子: Outlook 2013“预约”会议室 下篇帖子: Postfix邮箱(五):安装Courier-IMAP以及TLS安全传输
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表