首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >拒绝基于用户名的Exim身份验证尝试

拒绝基于用户名的Exim身份验证尝试
EN

Server Fault用户
提问于 2018-06-05 19:00:07
回答 1查看 424关注 0票数 2

是否可以设置Exim,以便根据传递给它的用户名,在尝试对该用户名执行密码查找之前拒绝身份验证尝试?我对Dovecot做了类似的操作,通过拒绝passdb对传入的邮件进行检查,并希望对发送邮件的尝试也这样做。我们不能让他们继续尝试和失败的主要原因来自于IP块,有时会影响到其他人。

我已经查看了Exim文档中似乎相关的内容(ACL、身份验证器、变量索引等),但我并不太相信我对它的解释是准确的。有几个ACL似乎是相关的,但我最初尝试使用它们的尝试还没有完成。

我试图使用的两个ACL是acl_smtp_auth和acl_smtp_connect,代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
deny condition = ${if exists{/etc/virtual/blacklist_smtp_email_accounts}}
    condition = ${lookup{$sender_address}lsearch{/etc/virtual/blacklist_smtp_email_accounts}{1}{0}}
    message = E-Mail $sender_address is blacklisted
    logwrite = E-Mail $sender_address is blacklisted

这是否需要修改验证器,这意味着我所做的任何事情都必须是安全的,还是我只是使用了错误的ACL/错误的代码?

如能提供任何协助,将不胜感激。

诚挚的问候,

EN

回答 1

Server Fault用户

发布于 2019-02-14 12:59:10

如果您需要允许客户端使用AUTH,但根据答复的地址,则需要防止实际的密码查找,那么最符合逻辑的地方似乎是身份验证者:

代码语言:javascript
代码运行次数:0
运行
复制
Q_AUTH_USERBL = ${lookup{$auth2}lsearch{.../blacklist}{true}}
Q_AUTH_PLAIN =  ${if eq{ ${lookup{$auth2}lsearch{.../users}} }{ $auth3 } {true}{false}}

或者使用SQL:

代码语言:javascript
代码运行次数:0
运行
复制
Q_AUTH_USERBL = ${lookup pgsql{SELECT count(*) FROM user WHERE uid='${quote_pgsql:$auth2}' AND blacklisted}{true}}

Q_AUTH_PLAIN = ${lookup pgsql{SELECT count(*) FROM user WHERE uid='${quote_pgsql:$auth2}' AND pw=encrypt('${quote_pgsql:$auth3}')}{$value}fail}
代码语言:javascript
代码运行次数:0
运行
复制
fixed_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if !bool{Q_AUTH_USERBL} {Q_AUTH_PLAIN}{false}}
  server_set_id = $2
  server_prompts = :
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
    server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
  .endif

在SQL的情况下,这是完全没有意义的,因为其中一个将使用两个查找而不是一个,并通过使用

代码语言:javascript
代码运行次数:0
运行
复制
SELECT COUNT(*) FROM users WHERE uid=$1 AND pw=$2 AND NOT blacklisted;

类似于SQL,可以简单地使用server_condition=Q_AUTH_PLAIN

至于ACL,我会检查acl_smtp_mailauth,但我从来不需要它。

(我希望我没有犯任何错误。)

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/915328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档