谁知道使用 Postfixadmin 和 Maildir 创建 cur、new 和 tmp 的位置

Mik*_*uit 3 postfix dovecot maildir

我试图意识到哪个配置告诉了 cur、tmp 和 new 的创建位置。当然,我一直在使用虚拟用户,我接收和发送邮件到virtualuser/domain/user/Maildir/newvirtualuser/Maildir/cur(我认为virtualuser/domain/user/Maildir/tmp是非常临时的,从来没有收到和发送电子邮件)但是当我使用 Postfixadmin 创建一个新邮箱时,它是这样创建的

virtualuser/domain/user/tmp
virtualuser/domain/user/new
virtualuser/domain/user/cur
Run Code Online (Sandbox Code Playgroud)

然后我只需要将这个树文件夹移动到里面

 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
Run Code Online (Sandbox Code Playgroud)

那么在哪个配置文件中有这个设置呢?是 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
Run Code Online (Sandbox Code Playgroud)

而 /etc/postfix/virtual_mailbox_maps.cf 有:

 ...
 table = mailbox
 select_field = maildir
 where_field = username 
Run Code Online (Sandbox Code Playgroud)

并从数据库中获取一个文件夹字符串,如“virtualuser/domain/user”

mas*_*oeh 5

取自postfixadmin 常见问题解答

1) 为什么 PostfixAdmin 不创建我的邮箱?

PostfixAdmin 只是一个用于存储配置设置的 Web 界面。它(默认情况下!)没有在磁盘上创建邮件文件夹的能力。在正常设置中,发送“欢迎”电子邮件即可完成此任务 - 正如 Courier/Cyrus/etc 所做的那样(并且有权限这样做)

所以,我们可以得出结论,postfix 或 dovecot 统治着你的邮件目录的位置......


根据postconf -n上面的输出,显然您使用 postfix虚拟代理将传入的电子邮件传送到 Maildir。所以我们需要了解virtual代理如何选择传入电子邮件的目标邮箱。取自 man 8 virtual

邮箱位置由 virtual_mailbox_base 和 virtual_mailbox_maps 配置参数控制(见下文)。virtual_mailbox_maps 表由收件人地址编制索引,如下面的 TABLE SEARCH ORDER 所述。

邮箱路径名构造如下:

    $virtual_mailbox_base/$virtual_mailbox_maps(recipient)
Run Code Online (Sandbox Code Playgroud)

其中收件人是完整的收件人地址。

因此,在您的情况 ( /etc/postfix/virtual_mailbox_maps.cf) 中,$virtual_mailbox_maps将使用此查询选择

SELECT maildir FROM mailbox WHERE username = $recipient;
Run Code Online (Sandbox Code Playgroud)

与 一起$virtual_mailbox_base构成邮箱的绝对路径。

现在,问题是 maildir 字段在哪里生成?Postfixadmin 使用 3 个参数来生成maildir字段,

  • $CONF['domain_path']
  • $CONF['domain_in_mailbox']
  • $CONF['maildir_name_hook']

你可以在config.inc.phppostfixadmin 中搜索这些参数的解释。


所以,如果你需要在/Maildir中附加virtual_mailbox_maps,那么你可以

  1. 改变select_field/etc/postfix/virtual_mailbox_maps.cf
  2. maildir_name_hook在 postfixadmin 中编写您的函数。

如果你打算使用选项1,你还需要改变dovecot的参数,尤其是userdb参数。寻找home领域或mail_location领域。