Dovecot

客戶端試圖訪問不存在的命名空間(Dovecot 和 Squirrelmail)

  • November 9, 2017

我已經為此工作了幾天,儘管進行了無數次搜尋,但仍無法找到解決方案。

我在 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” 不會報告任何問題。

亞歷克斯

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