当我进行/var/mail
备份时,我搞砸了并且没有正确复制权限。
现在我在日志中看到以下消息:
2023-09-17 03:10:26 1qhiB0-000Jx1-CI == [email protected]
R=dovecot_user T=dovecot_delivery defer (-1):
Tainted '/var/spool/mail/domain.com/username'
(file or directory name for dovecot_delivery transport) not permitted
我的/etc/exim4/conf.d/transport/30_exim4-config_dovecot
传输配置如下:
dovecot_delivery:
driver = appendfile
maildir_format = true
directory = /var/spool/mail/$domain/$local_part
create_directory = true
directory_mode = 0770
mode_fail_narrower = false
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
user = mail
group = mail
mode = 0660
allow_symlink = true
以及实际邮箱的权限:
/var/mail/domain.com# getfacl username
# file: username
# owner: mail
# group: mail
# flags: -s-
user::rwx
group::rwx
other::---
我现在只是在 exim 和 dovecot mans 之间犹豫不决,但我找不到好的答案。这s
看起来有点令人担忧,但据我理解,它只是表示权限应该被该组继承。
我想我需要找出dovecot_user
文件系统用户的映射方式,但我卡在这里。它应该是用户,mail
但我猜错了。
有什么建议可以阅读/检查什么吗?
答案1
事实证明,Exim 4.94 在污染变量管理方面引入了重大变化。
从技术上讲,应该有办法将变量标记为已验证,但我没有时间阅读无休止且复杂的手册。
因此我最终找到了一个 hacky 解决方案:
dovecot_delivery:
driver = appendfile
maildir_format = true
create_directory = true
directory_mode = 0770
directory = ${lookup mysql{SELECT CONCAT('/var/mail/',domains.fqdn, '/', mailboxes.local_part) AS directory FROM domains,mailboxes WHERE \
mailboxes.local_part='${quote_mysql:$local_part}' AND \
mailboxes.active=1 AND \
mailboxes.domain_id=domains.id AND \
domains.fqdn='${quote_mysql:$domain}' AND \
domains.active=1}}
mode_fail_narrower = false
delivery_date_add = true
envelope_to_add = true
return_path_add = true
group = mail
mode = 0660
allow_symlink = true