Email

使用 Exim 路由器和傳輸進行轉發

  • August 17, 2009

我寫了 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 文件,它將解析第一封電子郵件並轉發它,但會停在那裡。

user1@domain.com: user1@forwardomain.com
user1@domain.com: user3@forwardomain.com
user1@domain.com: user4@forwardomain.com
user1@domain.com: user9@forwardomain.com
user1@domain.com: user111@forwardomain.com
user1@domain.com: user12@forwardomain.com
user1@domain.com: user11@forwardomain.com

基本上 user1@domain.com 只會被轉發到 user1@forwardomain.com 並停在那裡。知道為什麼會這樣嗎?謝謝。

你期待它做什麼?您似乎希望virtual_address_pipe呼叫傳輸,但是您提供的 aliasfile 範例中沒有任何管道別名…

omigosh …我剛剛第 20 次重讀了您的問題。我因您所描述的內容與您的範例不完全一致而分心,因為重定向到另一個電子郵件地址不會觸發 pipe_transport。我將假設您的真實別名文件重定向到實際管道,並且當您嘗試清理範例而不是發布您遇到問題的真實配置和別名文件時,它在翻譯中失去了。

無論如何,忽略這一點,我認為您的問題的答案就像將所有目標放在一行一樣簡單:

user1@domain.com: user1@forwardomain.com, user3@forwardomain.com, user4@forwardomain.com, user9@forwardomain.com, user111@forwardomain.com, user12@forwardomain.com, user11@forwardomain.com

在這樣的路由器中,您只能對每個 local_part 進行一次查找。將所有目標放在一行上,Exim 將處理重新路由/傳輸/等所有查找的目標。這適用於電子郵件地址、文件和管道:

user1@domain.com: /path/to/file, |/path/to/pipe, user1@forwardomain.com

希望有幫助。

引用自:https://serverfault.com/questions/55051