Exim
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
?
現在我通過
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
可以接受文件列表並按順序查找它們,那就太好了。
您可以使用OR條件:
client_send = ${or {lookup{$sender_address}lsearch{/etc/exim/plain1}} \ {lookup{$sender_address}lsearch{/etc/exim/plain2}} }
Exim
從左到右評估條件,直到目前條件產生true
並返回其結果。如果沒有找到真正的子條件,則整個條件產生false
並返回空結果。請參閱規範的第 11.8 章
exim's
。