Password

Roundcube 在登錄時不為使用者輸入密碼

  • March 1, 2022

我在 docker 容器中有圓形立方體和 docker-mailserver。我已經設法通過圓形密碼外掛更改密碼。我創建了“郵箱”表並添加了兩列:“使用者名”和“密碼”。現在這正在工作,所有使用者都可以更改他們的密碼。

但 roundcube 仍然通過來自 /config/postfix-accounts.cf 的密碼登錄使用者,而不是來自數據庫。

如何讓roundcube從數據庫(MySQL)中獲取密碼?

當然,IMAP 和 POP3 也應該從數據庫中獲取密碼,而不是從給定文件中獲取密碼。

Roundcube 1.5.2,docker 郵件伺服器 10.4.0。

好的,所以涉及很多工作+大量研究:

  1. 你必須有單獨的 MySQL 容器和使用它的容器
  2. docker-mailserver 必須使用這些行而不是image
build:
 context: .
 dockerfile: Dockerfile
  1. Dockerfile 必須是:
FROM docker.io/mailserver/docker-mailserver:latest
RUN apt-get update && apt-get install -y dovecot-mysql
  1. 如您所見,它必須docker-compose--build參數一起執行
  2. dovecot-mysql必須按原樣安裝用於從 MySQL 數據庫獲取密碼的外掛(必須在配置文件中為圓形立方體啟用此外掛 - 從圓形立方體更改數據庫中的密碼)
  3. etc/dovecot/10-auth.conf你需要 !include auth-passwdfile.inc評論#
  4. 在同一個文件中取消註釋#!include auth-sql.conf.ext
  5. 在文件10-ssl.conf製作行ssl=yes
  6. userdb這也可能需要
  7. 在您的容器數據庫中創建一個mailbox包含列的表usernamepassword
  8. 添加至少一個帶密碼的使用者$1$...- 加密
  9. dovecot.cf文件必須有ssl=yes,您可能要添加disable_plaintext_auth=yes
  10. /etc/dovecot作為卷(從容器內獲取文件)
  11. /etc/dovecot/dovecot-sql.conf.ext有:
driver = mysql
connect = host=mail_mysql_cont dbname=db user=username password=root_passwd_for_db
password_query = \
 SELECT username AS user, password \
 FROM mailbox WHERE username = '%u'
user_query = \
 SELECT '/tmp' AS home, 9999 AS uid, 9999 AS gid;
  1. /etc/dovecot/auth-sql.conf.ext有:
passdb {
 driver = sql
 args = /etc/dovecot/dovecot-sql.conf.ext
}

我稍後會更新答案,因為我會進一步解決這個問題。

編輯:

要在 Roundcube 中更改密碼,您需要附加 MySQL 數據庫並mailbox創建至少包含列usernamepassword.

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