Postfix

誰在告訴使用 Postfixadmin 和 Maildir 創建 cur、new 和 tmp 的位置

  • January 4, 2017

我試圖意識到哪個配置告訴 cur、tmp 和 new 是在哪裡創建的。當然,我一直在使用虛擬使用者,並且我接收和發送郵件到virtualuser/domain/user/Maildir/newand 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”

取自postfixadmin 常見問題解答

  1. 為什麼 PostfixAdmin 不創建我的郵箱?

> > PostfixAdmin 只是一個用於儲存配置設置的 Web 界面。它沒有(預設情況下!)在磁碟上創建郵件文件夾的能力。在正常設置中,發送“歡迎”電子郵件即可完成此任務 - 正如 Courier/Cyrus/etc 所做的那樣(並且有權這樣做) > > >

因此,我們可以得出結論,統治您的郵件目錄位置的後綴或鴿舍…


根據postconf -n上面的輸出,顯然您使用 postfix虛擬代理將傳入的電子郵件傳遞到 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$$ ‘domain_path’ $$
  • $CONF$$ ‘domain_in_mailbox’ $$
  • $CONF$$ ‘maildir_name_hook’ $$

config.inc.php您可以在postfixadmin中搜尋這些參數的解釋。


所以,如果你需要追加**/Maildir** in virtual_mailbox_maps,那麼你可以

  1. 改變。select_field_/etc/postfix/virtual_mailbox_maps.cf
  2. maildir_name_hook在 postfixadmin 中編寫你的函式。

如果您打算使用選項 1,您還需要更改 dovecot 的參數,尤其是在userdb參數中。尋找home欄位或mail_location欄位。

引用自:https://serverfault.com/questions/680911