客戶端試圖訪問不存在的命名空間(Dovecot 和 Squirrelmail)
我已經為此工作了幾天,儘管進行了無數次搜尋,但仍無法找到解決方案。
我在 vps 中託管了多個域,並將所有電子郵件轉發到 gmail 地址,這很有效,但我想設置自己的電子郵件,所以我不必再依賴 gmail。
Postfix 和 Dovecot 是按照此處的說明安裝的:Email with Postfix, Dovecot and MariaDB on CentOS 7
考慮到 Squirrelmail 是最基本的電子郵件客戶端,我決定從它開始。我花了幾天時間試圖讓它接收和發送電子郵件(我必須禁用 https 訪問才能至少載入頁面 - 稍後會處理這個問題,並且 TLS 也被禁用 - 如果它執行則不需要這個在與其他所有伺服器相同的伺服器中)。
但是,正確顯示頁面似乎完全是“另一回事”。在應該出現文件夾列表的左側面板上,我得到“錯誤:無法完成請求。查詢:CREATE“已發送”原因給定:客戶端試圖訪問不存在的命名空間。(郵箱名稱可能應該帶有前綴:收件箱.)”。根據我讀過的所有內容(而且很多),我認為問題出在鴿舍,但我可能錯了。
如果有人能指出我的配置有什麼問題,我將不勝感激。
以下是我能想到的所有配置文件:(機密資訊替換為####‘s)
/etc/dovecot/dovecot.conf:
protocols = imap pop3 log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem namespace { type = private separator = . prefix = INBOX. inbox = yes } service auth { unix_listener auth-master { mode = 0600 user = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } user = root } service auth-worker { user = root } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@##########.com } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes }
/etc/dovecot/conf.d/10-mail.conf:(為簡單起見刪除了註釋)
namespace inbox { inbox = yes list = yes }
編輯 - 根據 Jens 的要求,這是“doveconf -n:”的輸出
從 dovecote.conf 中刪除命名空間聲明後,Squirrelmail 正在工作。
# 2.2.10: /etc/dovecot/dovecot.conf # OS: Linux 4.5.0-x86_64-linode65 x86_64 CentOS Linux release 7.4.1708 (Core) ext4 log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } protocols = imap pop3 service auth-worker { user = root } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } user = root } ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem userdb { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes driver = static } protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /home/vmail/dovecot-deliver.log postmaster_address = postmaster@#######.com } protocol pop3 { pop3_uidl_format = %08Xu%08Xv }
謝謝你的幫助,詹斯!
刪除重複的命名空間定義(一次在 /etc/dovecot/dovecot.conf 中,然後再次在 /etc/dovecot/conf.d/10-mail.conf 中)並只保留 10-mail.conf 中的一個後,Squirrelmail 工作一般。
當在兩個文件中聲明命名空間時,“dovecot -n”返回的結果與我的第一篇文章(上圖)中顯示的相同,除了命名空間部分如下所示:
namespace { inbox = yes location = prefix = INBOX. separator = . type = private }
使用兩個配置文件中的命名空間聲明,Thunderbird 和 Squirrelmail 抱怨相同的錯誤消息。然而,Roundcube 非常高興。
“dovecot -n” 不會報告任何問題。
亞歷克斯