✉️ 建立郵件伺服器的旅程,已經來到 Dovecot 設定的核心部分了!
在上一篇文章中,我們查看了 Dovecot 的設定檔結構,是時候進入實戰了。

📌 如果您還沒看過前一篇,建議先閱讀。
👉 在 Linux 上建立郵件伺服器 #3:Dovecot 設定檔結構與應用方式

在本文中,我們將逐一分析 郵件伺服器運營所需的 Dovecot 必需設定檔 4 個,並整理 考慮虛擬用戶環境及 Postfix 連動的實用設定方法


🚀 Dovecot 必需設定檔 4 種

Dovecot 設定檔非常多,第一次看到可能會頭痛。但 只要正確理解這 4 個設定檔,就能運營基本的郵件服務

設定檔 角色
10-auth.conf 用戶身份驗證設定
10-mail.conf 郵件儲存庫設定
10-master.conf 服務進程(IMAP, POP3, LMTP 等)設定
10-ssl.conf TLS/SSL 加密設定

接下來,我們將檢視各個設定檔並應用 考慮虛擬用戶環境及 Postfix 連動的設定


🛠️ Dovecot 安裝時生成的 vmail 用戶

首次安裝 Dovecot 時,系統會自動生成一個名為 vmail 的專用用戶與組(UID/GID 5000)。
此用戶負責存儲和管理郵件數據,並不是系統帳號,而是專門用於處理郵件的帳號。

🔍 確認 vmail 用戶的方法

可在終端中執行以下命令來確認。

id vmail

輸出示例:

uid=5000(vmail) gid=5000(vmail) groups=5000(vmail)

或者也可以直接在 /etc/passwd 檔案中搜索。

grep vmail /etc/passwd

如果 vmail 用戶不存在,則必須通過以下命令手動創建。

sudo groupadd -g 5000 vmail
sudo useradd -u 5000 -g vmail -s /sbin/nologin -d /var/mail vmail

現在可以在 Dovecot 設定中利用 vmail 用戶來儲存郵件了!


1️⃣ 10-auth.conf - 用戶身份驗證設定

此檔案決定了 用戶的身份驗證方式,是非常重要的設定檔。
特別是我們將 建立虛擬用戶環境,因此需要考慮此點進行設定。

📌 重要設定要點
- 采用虛擬用戶方式(數據庫連動)進行身份驗證
- 啟用 PLAIN 和 LOGIN 身份驗證方式(在 SSL 環境中安全使用)
- 使用數據庫進行身份驗證,而非系統帳戶 (/etc/passwd)

🔹 設定檔示例 (/etc/dovecot/conf.d/10-auth.conf)

disable_plaintext_auth = yes
auth_mechanisms = plain login

!include auth-sql.conf.ext

💡 說明

  • disable_plaintext_auth = yes → 只允許在使用 SSL 時進行明文身份驗證
  • auth_mechanisms = plain login → IMAP、POP3 中最常用的身份驗證方式
  • !include auth-sql.conf.ext → 設定從數據庫獲取身份驗證信息

也就是說,Dovecot 並不是直接使用 /etc/passwd 等系統帳戶,而是配置使用 MySQL 等數據庫進行身份驗證。

下一篇將詳細探討 auth-sql.conf.ext 檔案!


2️⃣ 10-mail.conf - 郵件儲存庫設定

此檔案決定了郵件實際儲存的位置。一般情況下,與 Postfix 聯動以 Maildir 格式進行儲存。

📌 重要設定要點
- 使用 Maildir 格式
- 設定虛擬用戶的郵件儲存路徑
- 郵件權限設定

設定檔示例 (/etc/dovecot/conf.d/10-mail.conf)

mail_home = %h
mail_location = maildir:%h/Maildir

namespace inbox {
  inbox = yes
}

mail_uid = vmail
mail_gid = vmail
mail_privileged_group = mail

💡 說明

  • mail_home = %h → 使用虛擬用戶的主目錄(預計將直接從數據庫指定路徑)
  • mail_location = maildir:%h/Maildir → 以 Maildir 方式儲存郵件
  • mail_uid, mail_gid → 使用郵件儲存專用用戶(vmail
  • namespace inbox { inbox = yes } → 指定為主要郵件箱(收件箱)

也就是說,使用者的郵件不由特定系統帳號管理,而是由單獨的 vmail 帳號來管理。

Pigeon mail carrier on a gear representing mail storage


3️⃣ 10-master.conf - 服務進程設定

此檔案設置 Dovecot 提供的服務(IMAP、POP3、LMTP 等)。
特別是,由於我們計劃與 Postfix 聯動使用 LMTP(本地郵件傳輸協議),因此必須啟用它。

📌 重要設定要點
- 啟用 LMTP(與 Postfix 聯動)
- 設定身份驗證匯流排(配置 Postfix 使用 Dovecot 的身份驗證)

🔹 設定檔示例 (/etc/dovecot/conf.d/10-master.conf)

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }

  client {
    path = /run/dovecot/auth-client
  }
}

💡 說明

  • 啟用 LMTP (service lmtp)
  • Postfix 在傳送郵件至 Dovecot 時使用 dovecot-lmtp 匯流排
  • Postfix 與 Dovecot 之間的身份驗證整合 (service auth)
  • 配置 Postfix 能夠通過 /var/spool/postfix/private/auth 匯流排從 Dovecot 獲取身份驗證信息

也就是說,配置 Postfix 通過 Dovecot 處理用戶身份驗證,郵件的傳送同樣通過 LMTP 連結。


4️⃣ 10-ssl.conf - TLS/SSL 加密設定

郵件伺服器必須進行加密!此檔案設定 SSL/TLS 以增強安全性

📌 重要設定要點

  • 啟用 SSL/TLS 加密
  • 可以使用 Let’s Encrypt 或自簽名證書

📌 ⚠️ 本文省略了獲取 SSL 證書的過程。

假設已經為域名獲取了證書,這裡可以使用 Let’s Encrypt、自簽名證書或商用證書。

設定檔示例 (/etc/dovecot/conf.d/10-ssl.conf)

ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem

💡 說明

  • ssl = required → 必須使用 SSL
  • ssl_cert, ssl_key → 使用 Let’s Encrypt 證書進行加密

也就是說,禁止客戶端在未加密的情況下訪問,並通過 TLS 提高安全性。


🏁 總結

在本文中介紹了 Dovecot 必需設定檔 4 種
- 10-auth.conf → 用戶身份驗證方式(基於數據庫的虛擬用戶環境)
- 10-mail.conf → 郵件儲存路徑及權限設定(mail_home = %h
- 10-master.conf → 與 Postfix 連動的 LMTP 和身份驗證服務設定
- 10-ssl.conf → SSL/TLS 安全設定(省略 Let’s Encrypt 設定)

如果正確理解這些設定,就能構建與 Postfix 連動的郵件接收/發送環境。 下一篇將著重介紹 虛擬用戶環境的數據庫設定 (auth-sql.conf.ext)!🚀

請查看之前的文章或郵件伺服器建設系列的其他文章!請在下方的 “Simiar Posts” 或右上角的搜索框中搜索 “dovecot”、“mail”!