忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 4067 | 回复: 10

[Mail] 如何禁止postfix在未经过sasl认证的情况下发信 [复制链接]

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-07 19:55 |显示全部楼层
本帖最后由 balthild 于 2015-10-07 21:07 编辑

环境:Debian 7.9 wheezy, Postfix 2.9,Cyrus-SASL,

目的是搭建一个纯虚拟用户的邮件服务器,而且仅允许可以登录的虚拟用户收发信。

在telnet 连接25端口后,EHLO 后输出的有 250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5 这样一行,SASL认证进测试可以正常登陆

但是,即使没有登录(没有AUTH LOGIN这一步),也可以执行 MAIL FROM: , RCPT TO: ,并且发信

这是我的配置文件中相关的内容:
  1. smtpd_sender_restrictions = permit_mynetworks,
  2.     permit_sasl_authenticated,
  3.     warn_if_reject,
  4.     reject_non_fqdn_sender,
  5.     reject_unknown_sender_domain,
  6.     reject_unauth_pipelining,
  7.     permit

  8. smtpd_recipient_restrictions = permit_mynetworks,
  9.     permit_sasl_authenticated,
  10.     reject_invalid_hostname,
  11.     reject_non_fqdn_hostname,
  12.     reject_unknown_sender_domain,
  13.     reject_non_fqdn_sender,
  14.     reject_non_fqdn_recipient,
  15.     reject_unknown_recipient_domain,
  16.     reject_unauth_pipelining,
  17.     reject_unauth_destination,
  18.     permit

  19. smtpd_sasl_security_options = noanonymous
复制代码
相关的教程都说这样配置能启用SASL认证发信,却无一提到如何禁止匿名发信。并且,无论baidu、google,都无法寻找到相关的配置方法

我还搜索了Postfix官方的配置文件描述文档中所有和anonymous有关的选项,都没找到明确禁止不登录直接发信的配置选项

所以来发帖问一下,如何配置才能使得postfix不允许(包括且不仅限于telnet中)未登录的发信行为?

论坛徽章:
23
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2015-11-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2015-10-10 08:00 |显示全部楼层
配置正确sasl 就可以防止匿名发信了和你上面一堆问题。

自己这个没配置正确而已,你最后加了一个permit,我佩服你
smtpd_recipient_restrictions

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-10 21:39 |显示全部楼层
回复 2# woxizishen


    原来是这样啊,感谢版主的回复

    那 smtpd_sender_restrictions 最后的 permit 需不需要也去掉?

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-12 14:01 |显示全部楼层
回复 2# woxizishen


    我尝试了一下您说的,去掉了permit,但是还是可以不登录而直接服务器内部互相发邮件,只是向外发送被禁止了。

    我查了一下,发现收信是在不登录的情况下连接服务器自身的SMTP类内部发信,但是我尝试了其他邮箱的SMTP,比如QQ邮箱,发现它是没有登录无法操作的。请问,如果想要达到这种效果,需要如何配置?

论坛徽章:
8
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-03-13 15:26:06CU大牛徽章
日期:2013-03-13 15:26:47CU大牛徽章
日期:2013-03-14 14:18:04CU大牛徽章
日期:2013-03-14 14:18:06CU大牛徽章
日期:2013-03-14 14:18:09CU大牛徽章
日期:2013-03-14 14:18:10CU大牛徽章
日期:2013-03-14 14:18:12
发表于 2015-10-12 15:21 |显示全部楼层

smtpd_sasl_security_options = noanonymous   这一句就是禁止采取匿名登陆方式的,这个问题可能出在Cyrus-SASL,你可以参考一下这个帖子:
http://bbs.chinaunix.net/forum.p ... mp;fromuid=24035263

论坛徽章:
23
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2015-11-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2015-10-12 18:03 |显示全部楼层
回复 4# balthild

permit_mynetworks

你登陆到邮件服务器的那个电脑网段是不是允许的? 自己看下mynetworks

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-12 21:24 |显示全部楼层
本帖最后由 balthild 于 2015-10-12 21:29 编辑

回复 6# woxizishen


    不是,我的 mynetwork = 127.0.0.1,而我是在家里直接 telnet SMTP的

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-12 21:28 |显示全部楼层
回复 5# laozhu168


    感觉不太可能是库或者程序自身的问题。我先后在Debian 7.9 wheezy 上 apt-get安装 和 CentOS 6.5上 yum 安装,测试都是这样的问题。不过没有尝试过编译安装。

论坛徽章:
23
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2015-11-23 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2015-10-13 07:59 |显示全部楼层
回复 8# balthild

不想多说,你的sasl验证就是没配置正确,配置正确的你在家里绝对不可能直接登录到服务器发邮件,一定得先经过sasl验证,才允许你发邮件,否则你的邮件服务器配置的就是OPEN RELAY.

1.要想postfix支持sasl
1.实现的smtp认证功能需要在编译postfix时编译进sasl支持(先确认你安装的postfix版本是否支持sasl      postconf –a  )

2.并在main.cf中将smtpd_sasl_auth_enable设置为yes  启动sasl认证

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-10-15 06:20:00
发表于 2015-10-13 13:13 |显示全部楼层
回复 9# woxizishen


两次在不同的服务器上配置,用的 postfix 都是 apt-get/yum 软件源的版本,而不是手动编译的

postconf -a 输出:
cyrus
dovecot


也确定 smtpd_sasl_auth_enable = yes

现在的问题是,telnet连接SMTP后,不经登陆可以向 同一服务器内的 邮箱账户发送邮件, 但确实无法向外部邮箱发送,说明这个邮件服务器不是 open relay.

比如我配置的邮箱域名是 sora.hk(以虚拟域方式配置),存在邮箱账户 admin@ sora.hk,于是我连接上SMTP后可以任意向 admin@ sora.hk 发送邮件,而且 mail from: 可以任意填写以伪造发件人。我的目的现在是想要阻止这种情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP