Postfix:如何(以及为什么)设置/etc/aliases.db?

Rol*_*uhs 1 postfix

我已经设置了 postfix 和一个本地用户myuser

一封电子邮件myuser@mydomain.com到达没有问题,所以基本的后缀设置很好。

然后我设置了虚拟别名:

mylongname@mydomain.com    myuser@mydomain.com
Run Code Online (Sandbox Code Playgroud)

在 main.cf 中:

mydestination: mydomain, localdomain
virtual_alias_maps = hash:/path_to_virtual_aliases
Run Code Online (Sandbox Code Playgroud)

我还创建了数据库 postmap /path_to_virtual_aliases

当我向 发送电子邮件时mylongname@mydomain.com,我收到此错误:

postfix/local[2341]: error: open database /etc/aliases.db: No such file or directory
postfix/local[2341]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
postfix/local[2341]: warning: hash:/etc/aliases is unavailable. open database /etc/aliases.db: No such file or directory
postfix/local[2341]: warning: hash:/etc/aliases: lookup of 'myuser' failed
postfix/local[2340]: F1D9C233E9A: to=<myuser@localdomain>, orig_to=<mylongname@mydomain.com>, relay=local, delay=2239, delays=2239/0.03/0/0.02, dsn=4.3.0, status=deferred (alias database unavailable)
Run Code Online (Sandbox Code Playgroud)

当它已经是本地用户时,为什么它会尝试查找 myuser?

而且如果真的要查,问题会不会通过设置/etc/aliases来解决?如果是,怎么做?

Phi*_*ing 5

我认为您混淆了在不同交付阶段使用的两种形式的混叠。

  • virtual_alias_maps是 postfix 的一个特性,可以让它完全重新路由电子邮件。它们postfix 决定如何处理电子邮件之前的阶段使用,因此可用于将特定电子邮件重新路由到完全不同的电子邮件服务器。
  • alias_maps是 posftix 本地传递的一个特性,它允许一个本地邮箱被别名为另一个本地邮箱。它们在 postfix 决定在本地发送电子邮件之后的阶段使用,因此不能用于重新路由到另一台服务器。 见这里

    描述:aliases(5) 表提供了一种系统范围的机制来重定向本地收件人的邮件。重定向由 Postfix local(8) 传递代理处理。


当它已经是本地用户时,为什么它会尝试查找 myuser?

这适用于所有本地用户,并且在您接收virtual_alias_domains未涵盖的邮件时非常有用。例如,将许多系统服务的电子邮件重定向到一个邮箱。


而且如果真的要查,问题会不会通过设置/etc/aliases来解决?如果是,怎么做?

是的,只需创建一个空文件,/etc/aliases然后/etc/aliases.db使用postalias填充文件:

postalias /etc/aliases
Run Code Online (Sandbox Code Playgroud)