我尝试以这样的方式配置 Exim,即希望通过服务器中继电子邮件的客户端必须提供单个密码。该文件/etc/exim4/conf.d/auth/30_exim4-config_examples
包含以下注释掉的配置行:
# plain_server:
# driver = plaintext
# public_name = PLAIN
# server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
# server_set_id = $auth2
# server_prompts = :
# .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
# server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
# .endif
我不确定我是否完全理解这里发生的事情。
当示例包含输入用户名和密码的提示时,为什么为
server_prompts
空?login_server
这里不是应该提示输入密码吗?密码实际设置在哪里?
我完全打算使用 TLS 来保护客户端和服务器之间的通信 - 据我了解,上面代码片段中的最后三行会导致仅在启用或AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
设置 TLS 时才会公布身份验证方法。
答案1
保持server_prompts
原样将为您提供默认(符合 RFC)行为,否则您可能需要修改客户端以提供其他值。
密码在文件中查找CONFDIR/passwd
,CONFDIR
与/etc/exim4
Debian 上的相同。
您是否希望所有用户都使用通用密码?然后你就可以改变server_condition
.就像是:
server_condition = ${if {eq{$auth3}{mysecret}{yes}{no}}
请查看优秀的 exim 文档,例如这里