Postfix:别名域到底是什么?


12

我以为我理解“别名域”,因为它只是另一个域的别名!因此,当我设置类似“ info@main.com”的邮箱并将“ alias.com”添加为“ main.com”的域别名时,地址“ info@alias.com”也可以工作...但是没有!

因此,我添加了以下域:

  • main.com
  • alias.com

我创建了这个邮箱:

  • info@main.com

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

  • alias.com => main.com

然后,当我发送邮件到info@alias.com时,我收到此错误:

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

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

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


我期望如此,但仍然不明白为什么不是这样。
Josh M.

Answers:


4

说明在文档中: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


3
我似乎对文档没有任何意义-您如何为任何邮箱添加domain1.com别名?<mailbox>@domain2.com
Josh M.

2
@JoshM。您可以virtual_alias_maps在表单的条目中使用哈希表@domain1.com @domain2.com。有关详细信息,请参见我的答案。
山姆·汉斯

12

添加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用作虚拟别名映射的文件()。但是,您在该文件中放入了什么?根据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说明manpage):

postmap /etc/postfix/virtual

您可以在Postfix虚拟域HOWTO中找到有关虚拟域的更多信息,并在Postfix地址重写HOWTO中找到有关别名的更多信息。


因此,PostfixAdmin界面有一个bug,因为该界面(edit.php?table=aliasdomain)无法告诉用户将其标记为启用时实际上不会出现别名
彼得·克劳斯

2
确切地说,我不会说这是一个错误,因为它实际上配置了虚拟别名域。相反,我怀疑PostfixAdmin希望您知道什么是Postfix虚拟别名域,并且还需要添加实际别名以使它们执行任何操作。不过,如果它告诉您那可能会更好。
山姆·汉斯

1

@乔希·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

1
虽然不是完全不正确(它会按照您的预期做),但使用正则表达式表的效率要比使用哈希表(其@domain1.com @domain2.com答案在我的答案中详述)低。
山姆·汉斯

1

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

在您的virtual_alias_maps中添加:

@from.domain <tab> @to.domain

在命令行中:

 postmap /path/to/yourvirtualalismapsfile

在您的main.cf文件中添加:

virtual_alias_domains : from.domain

virtual_alias_domains告诉postfix,所有形式为mailbox@from.domain的邮箱地址都是别名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.