如何将 postfix hash: databases 替换为 static: 或 inline:?

all*_*llo 3 postfix sql database

例如,替换后缀哈希数据库的语法是什么

domain.tld PREPEND my-header: foobar
Run Code Online (Sandbox Code Playgroud)

使用静态地图?

文档将其定义为Example: "inline:{ key=value, { key = text with whitespace or comma }}".

几种替换它的方法似乎不起作用,甚至不清楚 hash: db 到底有多少字段。域是唯一的键,其余的是字符串吗?与域关联的三个字段是否应该有一些列表语法?那么具有多个值的键(多行以哈希中的相同域开头:db)呢?

mas*_*oeh 5

首先,我将根据官方文档在这里尝试清除有关 postfix 查找表的一些混淆。总之,后缀表必须由键值对组成。两个键值都有字符串数据类型。

hash: db 真的有多少个字段。域是唯一的键,其余的是字符串吗?

是的。只有一个键和一个值。该值有多种格式,用于解决不同的目的,例如别名、传输、访问等。请参阅postfix 手册页,尤其是在表驱动机制部分。

与域关联的三个字段是否应该有一些列表语法?

一些表支持类似列表的字符串。例如别名表允许您定义多个别名目标。

root root@gmail.com root@yahoo.com
Run Code Online (Sandbox Code Playgroud)

在这里,值用空格或逗号分隔。

那么具有多个值的键(多行以哈希中的相同域开头:db)呢?

当表有重复键时,后缀将选择第一个匹配的值。在哈希表的情况下,选择顶部条目,忽略其他值。


现在,我将尝试回答您关于静态和/或内联地图的问题。请注意,这两种表格类型彼此不同。

内联映射将在 postfix 3.0 版中引入。目前没有支持该表类型的 postfix 稳定版本。您可以在 postfix 3.0 RC1发行说明中阅读它。

假设你想用这样的条目转换哈希表

example.com DEFER come back later please
example.net REJECT
example.org PREPEND X-Foo: Bar
Run Code Online (Sandbox Code Playgroud)

那么等效的内联映射是

inline:{{example.com=DEFER come back later please}, example.net=REJECT, {example.org=PREPEND X-Foo: Bar}}
Run Code Online (Sandbox Code Playgroud)

对于没有空格的文本,我们可以使用 key=value 语法。有空格,你需要支架来包围它。

现在,静态地图是不同的。该表就像通配符键表。Postfix 可以查找任何键,但答案将是静态值。对于版本低于 3.0 的 postfix,静态表不支持带空格的值字符串。对于 postfix 3.0 及更高版本,您可以将值用括号括起来以在其中添加空格。例如

static:REJECT
Run Code Online (Sandbox Code Playgroud)

或者

static:{REJECT get out from my postfix}
Run Code Online (Sandbox Code Playgroud)