Mail Server 征服指南 (六) 第五章:驗收時刻——全流程測試

我們辛苦搭建的郵件伺服器即將迎來第一次實戰測試。

在這個章節,我們不只要看「結果」,更要學會看「過程」。我會教您如何用「駭客視角」(直接下指令)來測試伺服器,這能讓您清楚看到每一個環節是否正常運作。

第一階段:功能連通性測試 (使用明碼)

在這個階段,您的資料庫密碼應該是明碼的 123456,且 Dovecot 設定為 default_pass_scheme = PLAIN

1. 測試收信 (Telnet 模擬) 我們假裝自己是外部郵件主機,直接投遞信件。 在 視窗 B 輸入:

telnet localhost 25


依序輸入(注意:若打錯字請按 Enter 重來,不能按 Backspace):

EHLO gmail.com
MAIL FROM:<test@gmail.com>
RCPT TO:<user@mydomain.com>
DATA
Subject: Test 1 (Plaintext)

Hello, this is a test.
.
QUIT

驗收:看視窗 A,出現 saved mail to maildir:... 代表寫入成功。

2. 測試讀信 (IMAP) 打開您的手機或電腦郵件軟體 (Thunderbird/Outlook):

  • Protocol: IMAP
  • Email: user@mydomain.com
  • Hostname (Incoming): mail.mydomain.com
  • Port: 993 (SSL/TLS)
  • Username: user@mydomain.com (務必填完整 Email)
  • Password: 123456 (您在資料庫設定的密碼)

驗收:應該能成功登入,並看到剛剛那封 “Test 1″。

3. 測試寄信 (SMTP) 使用剛剛設定好的軟體寄一封信給您自己的 Gmail。

  • Protocol: SMTP
  • Hostname (Outgoing): mail.mydomain.com
  • Port: 587 (STARTTLS) —— 這裡很重要,不要選 25 或 465
  • Authentication: Normal Password (或 Plain)
  • Username: user@mydomain.com

驗收:視窗 A 出現 sasl_method=PLAIN, sasl_username=...status=sent (或是 AWS 逾時),只要沒出現 Access denied 就算成功。


第二階段:安全性升級 (啟用密碼加密)

確認系統能跑後,我們要來修補最大的安全漏洞:資料庫裡的明碼密碼

1. 產生加密密碼 我們使用 Dovecot 內建工具,產生強大的 SHA512-CRYPT 雜湊值。 在終端機輸入:

doveadm pw -s SHA512-CRYPT


  • 輸入兩次您的密碼 (例如 123456)。
  • 複製回傳的那串亂碼,例如:{SHA512-CRYPT}$6$xyz...

2. 更新資料庫 登入 MySQL,把這串亂碼存進去。

sudo mysql -u root -p servermail


— 請把下面那一長串換成你剛剛生成的亂碼


UPDATE virtual_users 
SET password = '{SHA512-CRYPT}$6$xyz...' 
WHERE email = 'user@mydomain.com';

離開資料庫 (exit)。

3. 修改 Dovecot 設定 告訴 Dovecot:「從現在開始,資料庫給你的不再是明碼,而是 SHA512 加密過的字串。」

編輯檔案:

sudo nano /etc/dovecot/dovecot-sql.conf.ext



將原本的 PLAIN 改掉:

# default_pass_scheme = PLAIN  <-- 註解或刪掉這行
default_pass_scheme = SHA512-CRYPT

4. 重啟 Dovecot

sudo systemctl restart dovecot


第三階段:最終驗收 (加密後測試)

現在,雖然您的密碼還是 123456,但在伺服器內部,它已經不再以明碼形式儲存了。我們必須確認 Dovecot 能正確解讀這串亂碼。

1. 再次測試收信 (IMAP)

  • 動作:在您的郵件軟體中,按一下「接收/傳送」或是重新登入。
  • 觀察
    • 如果成功:代表 Dovecot 成功將您輸入的 123456 加密後,跟資料庫裡的 $6$... 比對吻合。
    • 如果失敗 (Authentication failed):代表加密演算法沒對上 (例如您產生了 BLF-CRYPT 但設定檔寫 SHA512-CRYPT),或是複製時少複製了字元。

2. 再次測試寄信 (SMTP)

  • 動作:再寄一封信給 Gmail,主旨寫 “Test 2 (Encrypted DB)”。
  • 觀察:確認信件能順利寄出。

恭喜!您已完成正式部署

如果第三階段測試通過,您的 Mail Server 就已經達到 Production (生產環境) 的安全標準了:

  1. 傳輸加密:全程使用 TLS/SSL。
  2. 儲存加密:資料庫密碼使用 SHA512 雜湊保護。
  3. 身分驗證:收發信皆需帳號密碼。

現在這台機器已經固若金湯。下一步,我們要解決的是**「信寄出去會被當垃圾信」**的問題,這就需要 設定 AWS SES Relay (寄信中繼) 來幫忙了。

第一章:架構規劃與環境準備

第二章:基礎建設篇——DNS、SSL 與資料庫

第三章:郵差的武裝——安裝 Postfix 並連接資料庫

第四章:安裝與設定 Dovecot (最後一塊拼圖)。

第五章:驗收時刻——全流程測試

第六章:設定 AWS SES Relay (讓信件使命必達)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料