Email
使用 Exim 路由器和傳輸進行轉發
我寫了 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
希望有幫助。