如何禁止postfix在未经过sasl认证的情况下发信
本帖最后由 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: ,并且发信
这是我的配置文件中相关的内容:smtpd_sender_restrictions = permit_mynetworks,
permit_sasl_authenticated,
warn_if_reject,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unauth_pipelining,
permit
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
permit
smtpd_sasl_security_options = noanonymous相关的教程都说这样配置能启用SASL认证发信,却无一提到如何禁止匿名发信。并且,无论baidu、google,都无法寻找到相关的配置方法
我还搜索了Postfix官方的配置文件描述文档中所有和anonymous有关的选项,都没找到明确禁止不登录直接发信的配置选项
所以来发帖问一下,如何配置才能使得postfix不允许(包括且不仅限于telnet中)未登录的发信行为?
{:qq18:}配置正确sasl 就可以防止匿名发信了和你上面一堆问题。
自己这个没配置正确而已,你最后加了一个permit,我佩服你
smtpd_recipient_restrictions 回复 2# woxizishen
原来是这样啊,感谢版主的回复
那 smtpd_sender_restrictions 最后的 permit 需不需要也去掉? 回复 2# woxizishen
我尝试了一下您说的,去掉了permit,但是还是可以不登录而直接服务器内部互相发邮件,只是向外发送被禁止了。
我查了一下,发现收信是在不登录的情况下连接服务器自身的SMTP类内部发信,但是我尝试了其他邮箱的SMTP,比如QQ邮箱,发现它是没有登录无法操作的。请问,如果想要达到这种效果,需要如何配置?
smtpd_sasl_security_options = noanonymous 这一句就是禁止采取匿名登陆方式的,这个问题可能出在Cyrus-SASL,你可以参考一下这个帖子:
http://bbs.chinaunix.net/forum.php?mod=redirect&goto=findpost&ptid=816661&pid=5676301&fromuid=24035263 回复 4# balthild
permit_mynetworks
你登陆到邮件服务器的那个电脑网段是不是允许的? 自己看下mynetworks 本帖最后由 balthild 于 2015-10-12 21:29 编辑
回复 6# woxizishen
不是,我的 mynetwork = 127.0.0.1,而我是在家里直接 telnet SMTP的 回复 5# laozhu168
感觉不太可能是库或者程序自身的问题。我先后在Debian 7.9 wheezy 上 apt-get安装 和 CentOS 6.5上 yum 安装,测试都是这样的问题。不过没有尝试过编译安装。 回复 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认证
回复 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: 可以任意填写以伪造发件人。我的目的现在是想要阻止这种情况。
页:
[1]
2