我在 Ubuntu 服务器上使用 Exim 邮件服务器。该服务以用户“Debian-exim”的身份运行,邮件文件归用户“mail”所有。现在这是一个问题。
我正在尝试了解如何正确解决该问题。但我首先需要知道为什么存在“Debian-exim”用户,而用户“mail”不只是用于此。这两者有什么区别?我可以通过将它们添加到某些组中来使它们相等吗?
在这个特定情况下,我想在 Exim 中为 Sieve 过滤器设置休假支持。该系统需要访问休假数据库目录,我想将其放在用户的邮件目录中。该目录属于用户“mail”。我的 Exim 配置如下所示:
begin routers
virtual_user_filter:
driver = redirect
allow_fail
allow_defer
allow_filter
# user = mail
user = Debian-exim
data = ${lookup mysql{MYSQL_Q_FILTER}{$value}}
address_data = ${lookup mysql{MYSQL_Q_QUOTA}{$value}fail}
file_transport = address_directory
reply_transport = address_reply
sieve_vacation_directory = ${lookup mysql{MYSQL_Q_MAILDIR}{$value}fail}/vacation
begin transports
address_directory:
driver = appendfile
directory = (...)
user = mail
(...)
路由器中的用户无法设置为“mail”,这会在日志中产生错误。目前我的休假过滤器没有执行任何操作,并且用户的 maildir 中没有创建“vacation”目录。我猜这是权限问题。上面的配置没有在任何地方记录任何内容。
(更新:当我将筛选假期目录更改为其他位置(例如 /tmp)时,它可以工作,因此这肯定是 maildir 中的权限问题。)
添加了错误信息日志:
2017-11-05 22:04:30 unable to set gid=8 or uid=8 (euid=110): virtual_user_filter router (recipient is ***@***.de)
2017-11-05 22:04:35 internal problem in virtual_user_filter router (recipient is ***@***.de): failure to transfer data from subprocess: status=0100 readerror='No such file or directory'
2017-11-05 22:04:35 H=([IPv6:2001:a62:2d7:e601:2050:a350:988c:fa51]) [2001:a62:2d7:e601:2050:a350:988c:fa51] sender verify defer for <***@***.de>: internal problem in virtual_user_filter router (recipient is ***@***.de): failure to transfer da
2017-11-05 22:04:35 H=([IPv6:2001:a62:2d7:e601:2050:a350:988c:fa51]) [2001:a62:2d7:e601:2050:a350:988c:fa51] X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 CV=no F=<***@***.de> A=fixed_plain:***@***.de temporarily rejected RCPT <***@***.d