Exim lsearch 同时在多个文件中查找

Exim lsearch 同时在多个文件中查找

我需要让 Exim 在 lsearch 查找中遍历多个文件,并在找到第一个匹配项时停止。

更具体地说,我有/etc/exim/plain1/etc/exim/plain2包含身份验证器数据。

我当前的解决方案仅适用于一个文件:

PLAIN:
  driver = plaintext
  client_send = ${lookup{$sender_address}lsearch{/etc/exim/plain1}}

我怎样才能扩展它以进行检查/etc/exim/plain2

答案1

您可以使用或者健康)状况:

client_send = ${or {lookup{$sender_address}lsearch{/etc/exim/plain1}} \
                   {lookup{$sender_address}lsearch{/etc/exim/plain2}} }

Exim从左到右评估条件,直到当前条件成立true并返回其结果。如果没有发现真子条件,则整个条件成立false并返回空结果。

参考exim's规范的第11.8章。

答案2

现在我通过将一个包装lookup到另一个来解决这个问题,如下所示:

  client_send = ${lookup{$sender_address}lsearch{/etc/exim/plain1}{$value}\
               {${lookup{$sender_address}lsearch{/etc/exim/plain2}}}}

通过进一步包装可以扩展到更多查找:

  client_send = ${lookup{$sender_address}lsearch{/etc/exim/plain1}{$value}\
               {${lookup{$sender_address}lsearch{/etc/exim/plain2}{$value}\
               {${lookup{$sender_address}lsearch{/etc/exim/plain3}}}}}

lsearch但如果能接受的话,那就太好了列表文件并按顺序在其中查找..

相关内容