我們辛苦搭建的郵件伺服器即將迎來第一次實戰測試。
在這個章節,我們不只要看「結果」,更要學會看「過程」。我會教您如何用「駭客視角」(直接下指令)來測試伺服器,這能讓您清楚看到每一個環節是否正常運作。
第一階段:功能連通性測試 (使用明碼)
在這個階段,您的資料庫密碼應該是明碼的 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),或是複製時少複製了字元。
- 如果成功:代表 Dovecot 成功將您輸入的
2. 再次測試寄信 (SMTP)
- 動作:再寄一封信給 Gmail,主旨寫 “Test 2 (Encrypted DB)”。
- 觀察:確認信件能順利寄出。
恭喜!您已完成正式部署
如果第三階段測試通過,您的 Mail Server 就已經達到 Production (生產環境) 的安全標準了:
- 傳輸加密:全程使用 TLS/SSL。
- 儲存加密:資料庫密碼使用 SHA512 雜湊保護。
- 身分驗證:收發信皆需帳號密碼。
現在這台機器已經固若金湯。下一步,我們要解決的是**「信寄出去會被當垃圾信」**的問題,這就需要 設定 AWS SES Relay (寄信中繼) 來幫忙了。