如何配置 postfix 以每个域使用一个虚拟别名文件?

如何配置 postfix 以每个域使用一个虚拟别名文件?

在 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

不要忘记postmappostalias输出文件。

相关内容