在 Exim 中,每个域都有一个文件,其中文件名本身用于确定别名的域。
例如,我有一个名为示例网站内容如下:
foo: somelocaluser
这会导致邮件被[email protected]
递送至somelocaluser
。
在后缀常见的设置是使用命名的文件virtual
并一遍又一遍地重复每个本地部分的域:
[email protected]: somelocaluser
[email protected]: somelocaluser
如何在 Postfix 中实现 Exim 风格的设置,从而避免重复?
答案1
不可以
您想要的功能在 Postfix 中不存在哈希表。Postfix 数据库查找总是从文件的条目中获取密钥,不能将其与文件名混合。
更多信息:Postfix 查找表概述
但是,您只需编写少量脚本即可实现相同的目的。脚本应循环所有文件,然后将文件名字符串附加到条目的第一列,然后将其合并。
像这样的丑陋脚本应该可以很好地完成工作
for file in `find /tmp/mapfiles -type f -maxdepth 1`; do
grep : "$file" | while read line; do
mykey=$(echo "$line" | cut -d':' -f1)
myvalue=$(echo "$line" | cut -d':' -f2)
filename=$(basename "$file")
echo "${mykey}@${filename}: ${myvalue}"
done
done
不要忘记postmap
或postalias
输出文件。