如果没有为该用户设置帐户,我希望将本地域的所有传入电子邮件仅路由到单个帐户。
我还希望将每封电子邮件写在用户文件夹中自己的文件中。
我有一个 catchall 用户,其路径为 /home/catchall/,我为此创建了一个邮件文件夹,但到目前为止,电子邮件仍无法投递(因此我的规则不起作用)或者它们确实投递到 /etc/mail/catchall 文件。
我一直在尝试将 Exim 配置整合在一起,但到目前为止似乎没有任何效果。
http://exim.org/exim-html-current/doc/html/spec_html/ch20.html
答案1
设置 Exim 以捕获发送到本地域的所有电子邮件:
后:
begin routers
添加:
catchall_pub:
driver = redirect
domains = +local_domains
user = catchall
data = catchall@localhost
这将启用对所有 local_domains 的捕获。它们的设置如下:
domainlist local_domains = @ : localhost : localhost.localdomain : example.com
注意:您可以简单地指定捕获单个域并为多个域制定多条规则。
为了配置 Exim 为每封电子邮件创建单独的文件,您只需将本地传送切换到目录模式,如下所示:
寻找:
local_delivery:
driver = appendfile
file = /var/mail/$local_part
delivery_date_add
envelope_to_add
return_path_add
group = mail
mode = 0660
添加以代替file = /var/mail/$local_part
:
directory = $home/mail
maildir_format
maildir_use_size_file
注意:当用户收到第一封电子邮件时,这将自动在用户主文件夹中创建一个不错的邮件目录。该结构是众所周知的 cur/、new/、tmp/。
答案2
不太清楚你真正想要的是什么,说“每封电子邮件都写在它自己的文件中”
如果您使用 maildir 格式,所有消息无论如何都会存储在单独的文件中。只需在所有现有文件后添加特殊路由器:
unknown:
driver = redirect
domains = +local_domains
data = [email protected]
如果您使用邮箱格式并希望将特定用户的消息存储到他自己的邮箱文件中,请使用特殊传输:
# router
unknown:
driver = accept
domains = +local_domains
transport = t_unknown
# transport
t_unknown:
driver = appendfile
file = /var/mail/$domain/$local_part
group = mail
user = $local_part
mode = 0660