AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1051911
Accepted
TRW
TRW
Asked: 2021-02-02 01:44:35 +0800 CST2021-02-02 01:44:35 +0800 CST 2021-02-02 01:44:35 +0800 CST

带有 Lua 的 Dovecot 代理还是?

  • 772

我已经构建了一个 Dovecot 代理,可以根据用户的域将用户发送到特定的后端。域 A 到服务器 A,域 B 到服务器 B,等等。域列表不是静态的,但变化不大。使用 passdb 驱动程序 sql 和一个简单的 SQL 语句,这完全可以正常工作,例如:

password_query = SELECT 
    NULL as password, 
    'y' as nopassword, 
    'y' as proxy, 
    NULL as destuser, 
    'y' as proxy_nopipelining, 
    host, 
    'y' as nodelay, 
    'y' as nologin, 
    'any-cert' as 'starttls' 
  FROM proxy_domain WHERE domain = '%d';

dovecot 配置包含:

passdb {
  args = /etc/dovecot/sql.conf
  driver = sql
}

userdb {
  args = static uid=5000 gid=5000 home=/dev/null
  driver = static
}

我的“问题”并不是真正的问题 - 但是......我只需要为这项工作安装和运行 Mysql/MariaDB 服务器,我认为,必须有一种更简单的方法来解析特定域的主机。并行 postfix 安装使用简单的传输映射来完成相同的工作。我不需要 SQL 服务器来进行简单的查找。

我考虑过Dovecot Lua passdb或static passdb但我找不到任何有用的示例来将域与带有 Lua 的主机进行匹配,或者我如何返回所有必要的参数?

所以我已经安装了 debian 包dovecot-auth-lua。

我试过:

passdb {
  driver = lua
  args = file=/etc/dovecot/passdb.lua blocking=yes
  default_fields = password=NULL nopassword=y proxy=y destuser=NULL proxy_nopipelining=y nodelay=y nologin=y starttls=any-cert
}

有必要在这里屏蔽吗?这是只读操作,还是?

Lua 脚本:

local database = "/etc/dovecot/backends"

function auth_passdb_lookup(req)
 for line in io.lines(database) do
   for domain, host in string.gmatch(line, "(.+)%s(.+)") do
     if (domain == req.domain) then
       return dovecot.auth.PASSDB_RESULT_OK, "host=" .. host
     end
   end
 end
 return dovecot.auth.PASSDB_RESULT_USER_UNKNOWN, ""
end

<domain> <host>当然还有每行的后端文件。

但我在代理上遇到错误

pam_unix(dovecot:auth): check pass; user unknown
pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=user@domain rhost=<my-ip>
pam(user@domain,ip,<id>): pam_authenticate() failed: Authentication failure (Password mismatch?)

这是什么意思?我不确定 - 但它是吗,因为我在其中一些上返回“NULL”。当我删除这两个属性时password,destuser它具有相同的效果。

dovecot
  • 1 1 个回答
  • 270 Views

1 个回答

  • Voted
  1. Best Answer
    Richard Hayes
    2021-04-24T12:03:20+08:002021-04-24T12:03:20+08:00

    pam_authenticate 表示它正在尝试系统用户查找,通过注释掉 10-auth.conf 中 auth-system.conf.ext 的包含来禁用 pam 查找。

    ps:你让LUA工作了吗?我正在尝试类似的东西。

    编辑 - 通过将这些字段添加到 passdb 查找函数返回字段(不是 userdb 查找函数字段)中,让我的工作:

    return dovecot.auth.PASSDB_RESULT_OK, "password=pass proxy=y host=imap.domain.com destuser=remote@user.com pass=anotherpass"

    • 0

相关问题

  • Dovecot 损坏的事务日志文件正在延迟电子邮件

  • 任何关于如何在 Debian 上使用虚拟用户设置 Postfix + Dovecot 的最新教程?[关闭]

  • CentOS/Dovecot/Postfix 服务器不再允许外部电子邮件客户端发送电子邮件

  • 推荐 Dovecot / Thunderbird 到 Exchange / Outlook 迁移策略

  • 更改 Dovecot 的 IMAP 端口

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve