Postfix:别名域到底是什么?

Postfix:别名域到底是什么?

我以为我理解的“别名域”只是另一个域的别名!所以当我设置一个邮箱时,比如“[电子邮件保护]“,并添加“alias.com”作为“main.com”地址的域别名”[电子邮件保护]“也可以……但是不行!”

因此,我添加了以下域:

  • 主页
  • 别名.com

我已经创建了这个邮箱:

然后我映射了这些别名域:

  • 别名.com => main.com

然后当我发送邮件到[电子邮件保护]我收到此错误:

Recipient address rejected: User unknown in virtual mailbox table (state 13).

我不想为每个域名都创建别名,因为我有几个。我也不想使用通配符(如 info@*),因为还有其他域名不是别名main.com

那么...这些到底是什么?

答案1

文档中有这样的解释:http://www.postfix.org/VIRTUAL_README.html#virtual_alias

您想要“别名邮箱”,又名 virtual_mailbox_alias 和 virtual_mailbox_maps,但谈论“别名域”:http://www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class

答案2

添加alias.comvirtual_alias_domains正确的第一步,但这只是告诉 Postfix 您想要将该域用作别名。它并没有说明别名应该是什么。为此,您需要使用虚拟别名映射。

首先,添加如下内容main.cf

virtual_alias_domains = alias.com
virtual_alias_maps = hash:/etc/postfix/virtual

添加后,virtual_alias_maps您将得到一个用作虚拟别名映射的文件 ( /etc/postfix/virtual)。但是,您将在该文件中放入什么呢?根据虚拟(5)手册页

postmap(1) 命令的输入格式如下:

  pattern address, address, ...

当模式与邮件地址匹配时,用相应的地址替换它。

通过从索引文件(例如 DB 或 DBM)或网络表(例如 NIS、LDAP 或 SQL)进行查找,每个 user@domain 查询都会生成如下所述的查询模式序列。每个查询模式都会发送到每个指定的查找表,然后再尝试下一个查询模式,直到找到匹配项。

...

@domain address, address, ...

将域中其他用户的邮件重定向至地址。

查找结果会进行地址重写:当结果具有 形式时@otherdomain,结果将成为 中的同一用户otherdomain。这仅适用于多地址查找结果中的第一个地址。

因此,输入以下内容/etc/postfix/virtual将实现您想要的全域别名:

# map any <user>@alias.com to the matching <user>@main.com
@alias.com     @main.com

然后,由于该文件是一个哈希表,您需要运行postmap解释手册页):

postmap /etc/postfix/virtual

您可以在以下位置找到有关虚拟域的更多信息Postfix 虚拟域名指南以及关于别名Postfix 地址重写方法

答案3

@Josh M.

我不知道这是否是正确的方法和/或好的做法,但我正在使用类似这样的方法:

virtual_alias_maps = regexp:/etc/postfix/domain_rewriting pgsql:/etc/postfix/pgsql/     virtual_alias_maps.cf

$ cat /etc/postfix/domain_rewriting 
/^(.*)@domain1.com$/     ${1}@domain2.com

答案4

这是我对@sam-hanes 答案的简短版本(对我有用)

在你的虚拟别名映射添加 :

@from.domain <tab> @to.domain

在命令行中执行:

 postmap /path/to/yourvirtualalismapsfile

在你的主配置文件文件添加:

virtual_alias_domains : from.domain

virtual_alias_domains 告诉 postfix,所有邮箱地址的形式为[电子邮件保护]都是别名。

相关内容