我写了 2 个路由器来处理我的一个邮件服务器中的转发:
virtual_aliases_nostar:
driver = redirect
allow_defer
allow_fail
require_files = "+/var/auth/valiases/$domain"
data = ${lookup{$local_part@$domain}lsearch{/var/auth/valiases/$domain}}
file_transport = address_file
group = mail
pipe_transport = virtual_address_pipe
retry_use_local_part
unseen
virtual_aliases:
driver = redirect
allow_defer
allow_fail
require_files = "+/var/auth/valiases/$domain"
data = ${lookup{*}lsearch{/var/auth/valiases/$domain}}
file_transport = address_file
group = mail
pipe_transport = virtual_address_pipe
unseen
需要这种运输方式:
virtual_address_pipe:
driver = pipe
group = some_user
return_output
user = some_user
如果存在如下所示的 valiases/somedomain.com 文件,它将解析第一封电子邮件并转发它,但会停在那里。
[email protected]: [email protected]
[email protected]: [email protected]
[email protected]: [email protected]
[email protected]: [email protected]
[email protected]: [email protected]
[email protected]: [email protected]
[email protected]: [email protected]
基本上 [email protected] 只会被转发到 [email protected] 并停在那里。知道为什么会这样吗?谢谢。
你期待它做什么?您似乎希望
virtual_address_pipe
调用传输,但是您提供的 aliasfile 示例中没有任何管道别名...omigosh ...我刚刚第 20 次重读了您的问题。我因您所描述的内容与您的示例不完全一致而分心,因为重定向到另一个电子邮件地址不会触发 pipe_transport。我将假设您的真实别名文件重定向到实际管道,并且当您尝试清理示例而不是发布您遇到问题的真实配置和别名文件时,它在翻译中丢失了。
无论如何,忽略这一点,我认为您的问题的答案就像将所有目标放在一行一样简单:
在这样的路由器中,您只能对每个 local_part 进行一次查找。将所有目标放在一行上,Exim 将处理重新路由/传输/等所有查找的目标。这适用于电子邮件地址、文件和管道:
希望有帮助。