我试图弄清楚哪个配置告诉了 cur、tmp 和 new 在哪里创建。当然,我一直在使用虚拟用户,我向和接收和发送邮件virtualuser/domain/user/Maildir/new
(virtualuser/Maildir/cur
我认为virtualuser/domain/user/Maildir/tmp
是临时的,从来没有收到过电子邮件),但是当我使用 Postfixadmin 创建新邮箱时,它就是这样创建的
virtualuser/domain/user/tmp
virtualuser/domain/user/new
virtualuser/domain/user/cur
然后我只需要将这个树文件夹移到里面
virtualuser/domain/user/Maildir (this is how i would I would like to be created) so I would have:
virtualuser/domain/user/Maildir/cur
virtualuser/domain/user/Maildir/tmp
virtualuser/domain/user/Maildir/new
那么哪个配置文件中有此设置?是 Postfix、Dovecot 还是 Postfixadmin?
此外我还有这个conf:
# Postfix:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = $virtual_mailbox_maps
local_transport = dovecot
mail_owner = postfix
mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT"
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mynetworks_style = host
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
relay_domains = $mydestination
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = mysql:/etc/postfix/virtual_alias_maps.cf
virtual_mailbox_base = /home/virtualuser
virtual_mailbox_domains = mysql:/etc/postfix/virtual_mailbox_domains.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/etc/postfix/virtual_mailbox_maps.cf
virtual_transport = virtual
Dovecot:
mail_home =
mail_location = maildir:~/Maildir
并且 /etc/postfix/virtual_mailbox_maps.cf 包含:
...
table = mailbox
select_field = maildir
where_field = username
并从数据库中获取文件夹字符串,如“virtualuser / domain / user”
答案1
1)为什么 PostfixAdmin 没有创建我的邮箱?
PostfixAdmin 只是一个用于存储配置设置的 Web 界面。它(默认情况下!)不具备在磁盘上创建邮件文件夹的能力。在正常设置中,发送“欢迎”电子邮件即可完成此任务 - Courier/Cyrus/etc 就是这样做的(并且有权限这样做)
因此,我们可以得出结论,postfix 或 dovecot 决定了您的 maildir 的位置......
根据postconf -n
上面的输出,显然你使用了后缀虚拟代理执行将传入电子邮件传递到 Maildir 的操作。因此,我们需要了解virtual
代理如何选择传入电子邮件的目标邮箱。取自 man 8 virtual
邮箱位置由 virtual_mailbox_base 和 virtual_mailbox_maps 配置参数控制(见下文)。virtual_mailbox_maps 表按收件人地址建立索引,如下表搜索顺序中所述。
邮箱路径名的构造如下:
$virtual_mailbox_base/$virtual_mailbox_maps(recipient)
其中收件人是完整的收件人地址。
因此,在您的情况下(/etc/postfix/virtual_mailbox_maps.cf
),$virtual_mailbox_maps
将使用此查询进行选择
SELECT maildir FROM mailbox WHERE username = $recipient;
与 一起$virtual_mailbox_base
构成了邮箱的绝对路径。
现在的问题是 maildir 字段在哪里生成?Postfixadmin 使用 3 个参数来生成该maildir
字段,
- $CONF['域名路径']
- $CONF['域名在邮箱中']
- $CONF['maildir_name_hook']
config.inc.php
您可以在postfixadmin中搜索这些参数的解释。
因此,如果您需要附加/邮件目录然后virtual_mailbox_maps
你就可以
select_field
的改变/etc/postfix/virtual_mailbox_maps.cf
。maildir_name_hook
在 postfixadmin 中写入您的功能。
如果你打算使用选项 1,你还需要更改 dovecot 的参数,特别是在userdb
参数中。查找home
field 或mail_location
field。
答案2
如果您从数据库中获取类似“virtualuser/domain/user”的文件夹字符串,则您不应该有这 3 个文件夹。
但是如果您从数据库中获取类似“virtualuser/domain/user/”的文件夹字符串,则您不应该有这 3 个文件夹。