我试图configurationsendmail,以防止它通过RCPT TO命令允许用户名枚举。
我一直在无休止地Googlesearch,从我所能看到的,实现这个目标的最好方法是把所有的电子邮件帐户添加到虚拟引擎。
所以我生成了一个新的sendmail.cf文件,包含这个指令:
FEATURE(`virtusertable', `hash /etc/mail/virtusertable')dnl
对于virtusertable.db文件,然后我添加:
@ubuntu test
并重新启动sendmail,但它不起作用:
mail from:root@ubuntu 250 2.1.0 root@ubuntu... Sender ok rcpt to:root 250 2.1.5 root... Recipient ok rcpt to:fake 550 5.1.1 fake... User unknown
我在哪里错了? 还是有更好的方法来实现这一目标?
谢谢你的帮助
如果你想实现一个通用地址, 就这样做 :
LOCAL_CONFIG Kuser user -m -a.FOUND LOCAL_RULE_0 R$- < $=w . > $* $: $(user $1 $) < $2 . > $3 R$- . FOUND < $=w . > $* $@ catch-all < $2 . > $3
请记住,规则的左侧用制表符分隔。 用上面的代码更新sendmail.mc后,运行sendmailconfig
但请记住,通过check_rcpt规则集检查发送到RCPT TO:命令的任何内容。 为了防止用户名枚举,您可能需要使用像灰名单 (我正在使用graymilter )的技术,并为greet_pause ClientConn和ClientRate设置适当的值。
“全部捕捉”地址并不总是一个好的解决scheme。 想想你是否希望input错误地址的发件人知道他们的错误。