在 Rocky Linux 10 上,我們需要 PHPApache (httpd)MariaDB (資料庫) 來支撐 Roundcube。


第一步:安裝環境 (LAMP Stack)

# 安裝 Apache, MariaDB 和 PHP 相關套件
sudo dnf install httpd mariadb-server php php-common php-json php-xml php-mbstring php-mysqlnd php-gd php-intl php-pear php-zip -y

# 啟動服務
sudo systemctl enable --now httpd mariadb

第二步:建立資料庫

Roundcube 需要一個資料庫來儲存聯絡人、設定與信件索引。

# 進入資料庫 (初次安裝直接 enter 即可)
sudo mysql -u root

# 在 MySQL 內執行以下指令:
CREATE DATABASE roundcubemail;
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY '你的強密碼';
GRANT ALL PRIVILEGES ON roundcubemail.* TO 'roundcube'@'localhost';
FLUSH PRIVILEGES;
EXIT;

第三步:下載並安裝 Roundcube

目前最新穩定版通常是 1.6.x。

# 前往網頁目錄
cd /var/www/html

# 下載 (請至官網確認最新版本連結)
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz

# 解壓縮並重新命名
tar -zxvf roundcubemail-1.6.6-complete.tar.gz
mv roundcubemail-1.6.6 mail
chown -R apache:apache /var/www/html/mail

第四步:設定 Apache 與 防火牆

# 允許網頁服務通過防火牆
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# 調整 SELinux (重要!否則網頁無法連線資料庫或寄信)
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1
sudo setsebool -P httpd_can_sendmail 1

第五步:網頁圖形化安裝 (Web Installer)

現在請打開瀏覽器,輸入:http://你的伺服器IP/mail/installer

  1. Check Environment: 確認所有 PHP 模組都是綠色的「OK」。

  2. Create Config:

    • Database setup: 填入剛才建立的 roundcubemail 資料庫、帳號與密碼。

    • IMAP Settings: 填入 localhost (Port 143)。

    • SMTP Settings: 填入 localhost (Port 587)。

  3. Initialize Database: 點擊按鈕導入資料庫結構。


第六步:安全性清理 (必做)

完成網頁設定後,為了安全,請務必刪除安裝目錄:

sudo rm -rf /var/www/html/mail/installer

常見問題:登入失敗?

如果網頁顯示「Login Failed」,請檢查:

  • Dovecot 是否有正常運行?

  • 10-auth.conf 裡的 disable_plaintext_auth 是否為 no? (因為 Roundcube 是從本機連線,通常可以允許明文)。

  • 日誌:觀察 sudo tail -f /var/log/maillog 看看 Roundcube 登入時報什麼錯。

你目前的伺服器有安裝 SSL 憑證 (HTTPS) 了嗎?如果需要讓網頁版更安全,我可以教你如何幫 Apache 設定 SSL。

為何 我看到的畫面 是 資料夾

這通常是因為 Apache (httpd) 預設沒有將 index.php 視為首頁檔案,或是你下載的資料夾權限與路徑層級不對,導致它直接列出了目錄內容(Index of /mail)。

請依照以下步驟快速修正:

1. 修正 Apache 的首頁索引設定

Apache 必須知道看到資料夾時要自動執行 index.php。 請編輯設定檔:

vi /etc/httpd/conf/httpd.conf

找到 <IfModule dir_module> 區段,修改成如下:

Apache

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

重啟 Apache: sudo systemctl restart httpd


2. 檢查 PHP 是否真的有在運作

如果你看到一堆檔案列表,點擊 index.php 卻變成下載檔案或是顯示純文字原始碼,代表 PHP 模組沒有被加載。 請確認安裝了 php 相關組件並重啟服務:

dnf install php -y
systemctl restart httpd

3. 檢查路徑與層級

你提到看到的是「資料夾」,請確認你的 /var/www/html/mail 目錄下直接就是 Roundcube 的檔案(例如裡面應該直接看到 index.php, bin, config 等),而不是又包了一層資料夾。

正確的結構應該是:

ls -l /var/www/html/mail
# 應該直接看到 index.php, composer.json, config/, logs/ 等

如果裡面還有一個 roundcubemail-1.6.6 之類的資料夾,請把它們移出來:

cd /var/www/html/mail
mv roundcubemail-1.6.6/* .
mv roundcubemail-1.6.6/.* .

4. SELinux 權限標籤 (Rocky 10 關鍵)

如果 Apache 沒有權限讀取這些檔案,也會導致顯示異常。請重新標記一次網頁目錄:

chown -R apache:apache /var/www/html/mail
restorecon -Rv /var/www/html/mail

快速測試

請嘗試在瀏覽器直接輸入完整網址: http://你的IP/mail/index.php

如果點開 index.php 後畫面變白或是顯示錯誤,請告訴我,那通常是 PHP 報錯或權限問題。如果直接出現登入畫面,那就代表第一步的 DirectoryIndex 設定成功了!

個人頭像照片

By 伍 芳左

MIS, ERP Pro...

發佈留言