Roundcube 是一款開源的 IMAP 網頁端電子郵件用戶端。它因支援 ACL 且使用 AJAX(非同步 JavaScript 和 XML)技術而受到歡迎。它具有出色的功能和端到端功能,例如電子郵件管理、MIME 支援和資料夾操作等。此外,Roundcube 還無縫提供郵件搜尋、拼字檢查、行事曆和聯絡人管理。最重要的是,與其他熱門的網頁端用戶端相比,它擁有強大的外掛程式庫和更多的自訂選項。
Roundcube 是一個 MUA。與 MTA 不同,您需要一個管理電子郵件的服務,最好是使用您的郵件伺服器。請查看我們的 郵件伺服器設定教學 來新增您選擇的郵件伺服器。
當您傳送電子郵件時,MUA 會使用 SMTP 將其傳輸到其 MTA 伺服器。經過幾次跳轉後,接收端的 MTA 收到電子郵件,並使用 IMAP 將其傳輸到其 MDA。最後,接收者使用 MUA 查看電子郵件。
讓我們來了解這些術語:
- MUA:郵件用戶代理(Mail User Agent)是一個允許使用者互動以查看和傳送電子郵件的介面。
- MTA:郵件傳輸代理(Mail Transfer Agent)將電子郵件從傳送者傳輸到接收者。
- SMTP:簡單郵件傳輸協定(Simple Mail Transfer Protocol)是 MUA 用於向 MTA 傳送電子郵件的協定。
- MDA:所有從 MTA 傳送的電子郵件都會在郵件投遞代理(Mail Delivery Agent)處接收並儲存。
- IMAP:網際網路訊息存取協定(Internet Message Access Protocol)是 MDA 用於將郵件投遞給 MUA 的協定。
在本教學中,我們將 引導您完成在 Ubuntu 20.04 上使用 Roundcube 安裝網頁郵件用戶端的步驟.
讓我們開始吧!
先決條件
要繼續本教學,您需要以下內容:
- 在您的系統上安裝了最新版本的 Ubuntu。
- 系統使用者必須擁有 sudo 權限 和 防火牆.
- LAMP 堆疊。
- 請按照 如何設定 LAMP 堆疊
- 基於 IMAP 的電子郵件伺服器。
步驟 1:安裝擴充功能和相依性
在開始之前,讓我們更新套件庫以避免軟體衝突:
|
1 |
sudo apt update |
接下來,我們將安裝 Roundcube 相依性並設定 PHP。使用以下命令安裝 PHP 擴充功能和函式庫:
|
1 |
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip unzip git composer |
預設情況下,有幾個 PHP 函式庫是停用的。我們需要透過導覽至伺服器’的 php.ini 檔案(位於 /etc/php/7.0/apache2/php.ini)來啟用這些函式庫。使用 nano 文字編輯器開啟 php.ini 檔案:
|
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
與大多數通常以井字號( #)開頭的註解選項不同,我們使用分號( ;)來註解和取消註解行。在行首加上分號以進行註解。同樣地,移除分號以取消註解。
讓我們看看包含以 extension= 開頭的註解行的區段。移除分號以取消註解 php_mbstring.dll 和 php_xmlrpc.dll 擴充功能:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . ;extension=php_interbase.dll ;extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_exif.dll ; 必須在之後mbstring 因為 它相依於它 ;extension=php_mysqli.dll . . . ;extension=php_sqlite3.dll ;extension=php_tidy.dll extension=php_xmlrpc.dll ;extension=php_xsl.dll . . . |
此外,在擴充功能區塊的底部附加 extension=dom.so:
|
1 2 3 4 5 |
. . . extension=php_xmlrpc.dll ;延伸模組=php_xsl.dll 延伸模組=dom.so . . . |
- 修改檔案:
- 修改 date.timezone:
前往設定選項,導覽至 date.timezone,並取消其註解。接下來,使用引號加入您的時區。請查看 PHP 的時區頁面 以了解格式化後的時區在 中的外觀php.ini 檔案。例如,如果您來自歐洲,您的檔案將如下所示:
|
1 2 3 4 5 6 |
. . . [Date] ; 定義 此 預設 時區 使用 由 該 日期 函數 ; http://php.net/date.timezone date.timezone = "Europe/Moscow" . . . |
-
- 修改 upload_max_filesize 檔案:
然後,導覽至 upload_max_filesize 設定。預設情況下,您會看到最大限制設定為 2MB。根據您的需求,您可以任意增加最大檔案大小。然而,大多數郵件伺服器會將總附件大小限制在 10MB 以內。在本指南中,我們將最大大小保持為 13MB,以便多個使用者可以同時新增附件:
|
1 2 3 4 5 |
. . . ; 最大 允許的 大小 用於 已上傳的 檔案. ; http://php.net/upload-max-filesize upload_max_filesize = 13M . . . |
-
- 修改 post_max_size 檔案:
現在,導覽並搜尋 post_max_size。與適用於附件的 upload_max_filesize 設定不同, post_max_size 會套用到整封電子郵件的大小(包括附件)。讓我們將 post_max_size 設定為較高的值以防止死結:
|
1 2 3 4 5 6 7 |
. . . ; 最大 大小 的 POST 資料 ,其 PHP 將 接受. ; 其 值 可以 為 0 以 停用 該 限制. 它 是 忽略 如果 POST 資料 讀取 ; 被 停用 透過 enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 20M . . . |
-
- 設定 func_overload 值:
最後,尋找 mbstring.func_overload = 0 並取消其註解。此外,確保其值設定為 null,以便它支援多位元組字串函數:
|
1 2 3 4 |
. . . . . . mbstring.func_overload = 0 . . . |
儲存所有修改,然後關閉檔案。我們的伺服器已設定好 LAMP 堆疊、Roundcube 的相依套件以及所需的 PHP 設定。在下一步中,我們將下載 Roundcube 軟體、進行安裝並設定。
步驟 2:下載 Roundcube
前往 Roundcube 的 下載頁面,選擇 穩定版本 區段並瀏覽 完整套件。然後,右鍵點擊 下載 按鈕並選擇 複製連結網址。在伺服器上使用該網址搭配 wget 來下載 Roundcube 壓縮檔:
|
1 |
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz |
之後,您需要解壓縮 Roundcube 封存檔:
|
1 |
wget tar -xvzf roundcubemail-1.5.2-complete.tar.gz |
使用的參數可能會 令人困惑,特別是如果您完全是新手。以下是每個旗標代表意義的說明:
- x:代表解壓縮(extract)。
-
v:代表詳細資訊(verbose)。
- 通知 tar 列印出解壓縮檔案的路徑和名稱。
-
z:通知 tar 移除
tar 包裝,並使用 gzip 解壓縮該封存檔。
- 壓縮後的 gzip 檔案副檔名結尾將會是 .gz 。
- f:代表檔案(file)。
省略目錄末尾的 / ,因為我們要移動並重新命名整個目錄,而不僅僅是其中的內容。現在,讓我們將解壓縮後的目錄移動到 /var/www 並將其重新命名為 roundcube:
|
1 |
sudo mv roundcubemail-1.5.2 /var/www/roundcube |
設定 Apache 的權限以建立和編輯設定檔及記錄檔。然後,將擁有者和群組變更為 www-data。此外,請確保允許擁有者和群組的讀取和寫入權限:
|
1 |
sudo chown -R www-data:www-data /var/www/roundcube/ |
|
1 |
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/ |
雖然我們已經下載了 Roundcube 的程式碼並設定了必要的權限,但我們的安裝仍未完成。透過 Roundcube 的 GUI 將 Roundcube 連接到我們的資料庫尚未完成。在我們進一步操作之前,我們需要更新 Apache 及其設定,以告知 Roundcube 的基本位置。
步驟 3:Apache 安裝與設定
在此步驟中,我們將編輯虛擬主機檔案以設定 Apache。使用 Apache 虛擬主機,我們將在單一伺服器上託管多個網站。即使 Apache 只託管一個網站,與編輯 Apache 設定相比,使用虛擬主機設定檔也更整潔且簡單。為了增加額外的安全保障,請考慮 使用 Let’s Encrypt 保護 Apache.
每個 .conf 檔案位於 /etc/apache2/sites-available/ 代表不同的網站。讓我們在這裡為 Roundcube 建立一個虛擬主機檔案,並通知 Apache 使其可用於瀏覽器。
首先,複製預設設定檔,將其作為新檔案的起點:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf |
使用 nano 文字編輯器開啟檔案:
|
1 |
sudo nano /etc/apache2/sites-available/roundcube.conf |
我們需要修改幾處變更。讓我們逐一說明,然後提供整個檔案以供複製和貼上。
首先,變更現有 VirtualBlock 主機中的以下指令:
-
ServerName:通知 Apache 選擇網域。
- 如果您使用的是一台伺服器,那麼這個 ServerName 將是您的伺服器 IP 位址或網域名稱。
-
DocumentRoot:當流量進來時,它會路由要將其傳送到哪裡。
- 在我們的教學中,我們將把流量傳送到 Roundcube,路徑為 /var/www/roundcube.
- ServerAdmin:如果 Apache 出現問題,ServerAdmin 會指定聯絡電子郵件地址。
-
ErrorLog 和 CustomLog:定義此網站的成功連線記錄和錯誤記錄的儲存位置。
- 使用特定名稱來定義錯誤記錄,以便在出現該網站特有的任何問題時,能夠輕鬆偵測到。
然後,您將新增一個新的 Directory 區塊,通知 Apache 如何處理 Roundcube 目錄。該 Directory 由兩個單字組成,其中每行的第一個單字是設定名稱,後面跟著實際的設定選項。
- Options -Indexes:通知 Apache 如果發現缺少 index.html 或 index.php 檔案,則顯示警告。預設情況下,它會顯示目錄的內容。
- AllowOverride All:通知 Apache 如果偵測到本機 .htaccess 檔案,則必須覆蓋全域設定。
- Order allow,deny:指示 Apache 比對用戶端對網站的存取,並拒絕不相符的存取。
- allow from all:定義允許的用戶端類型。
完成這些變更後,您將會看到如下的檔案:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName your_server_ip_or_domain DocumentRoot /var/www/roundcube ServerAdmin paul@demo.com ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined <Directory /var/www/roundcube> Options -Indexes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> |
儲存所有變更並關閉檔案。現在,讓我們要求 Apache 停止託管預設網站:
|
1 |
sudo a2dissite 000-default |
之後,我們將指示 Apache 改為開始託管 Roundcube 網站。啟用網站時,請勿包含 .conf ,因為 a2ensite 需要不含副檔名的檔名:
|
1 |
sudo a2ensite roundcube |
接下來,開啟 the mod_rewrite Apache 模組:
|
1 |
sudo a2enmod rewrite |
最後,重新啟動 Apache 以啟用 Roundcube 安裝的可存取性:
|
1 |
sudo apache2ctl restart |
在最後一個步驟中,我們需要設定資料庫,以便 Roundcube 可以儲存和管理其應用程式專屬的資料。
步驟 4:MySQL 安裝與設定
嘗試使用 IP 地址或網域名稱存取您的伺服器。您會看到頁面上出現設定錯誤。在這裡,Roundcube 會檢查在設定安裝期間產生的檔案,但我們的設定安裝尚未完成。在我們進行設定之前,先讓我們的資料庫準備就緒。
- 連接到 MySQL:讓我們使用使用者名稱和密碼連接到 MySQL 互動式 shell:
輸入上述指令後,系統會要求您使用在安裝 MySQL 時建立的 root 密碼進行驗證。1mysql -u root -p - 建立資料庫和使用者:現在您已成功登入,讓我們建立一個資料庫和一個資料庫使用者。之後,我們將允許使用者權限在我們的新資料庫上執行指令。
- 建立資料庫:使用以下指令建立一個名為
roundcubemail 的資料庫。接下來,提供資料庫選項,例如要使用的字元集
utf8:
MySQL 提供強大的安全性和進階防護。它透過名稱和連線來源來定義使用者。上述指令建立了一個名為 roundcube 的使用者,並定義該使用者連線自 localhost.1mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; - 重新命名資料庫:讓我們重新命名使用者並修改我們的密碼:
1mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password'; - 設定權限:允許 roundcube 使用者在
roundcubemail 資料庫和資料表上擁有所有權限:
儲存您的變更並退出 MySQL 互動式 shell:1mysql> GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';
12mysql> FLUSH PRIVILEGES;mysql> EXIT;
我們的下一步是建立有助於 Roundcube 儲存所有資訊的資料庫結構。Roundcube 附帶一個自動設定資料的資料庫檔案,手動設定將需要費很大力氣。
使用以下指令,MySQL 將使用我們新建立的使用者來讀取檔案 /var/www/roundcube/SQL/mysql.initial.sql。此外,它會將設定套用到資料庫 roundcubemail:
|
1 |
mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql |
現在,系統會要求您輸入 roundcube 使用者的密碼。我們的資料庫設定為 Roundcube 的使用做好準備,並允許我們驗證正確的權限。如果所有步驟都成功完成,將不會有任何回應,然後您將返回命令提示字元。在下一步中,我們將告訴 Roundcube 我們的電子郵件設定並完成安裝。
步驟 5:Roundcube 安裝與設定
如果您現在嘗試存取您的 Roundcube 安裝,您會得到一個錯誤頁面。請造訪 http://your_server_ip_or_domain/installer 以完成安裝。
如果設定正確,您將會看到綠色的 OK 位於每個行項目的右側。然而,您可能不會在 MySQL 的選用 LDAP 設定中看到綠色的 OK。如果您看到訊息 無法使用 顯示在任何其他行旁邊,您就必須安裝這些無法使用的相依性套件。如果您漏掉了下載任何相依性套件,您可以前往該 URL 並立即下載。
設定完成後,向下捲動並按一下 下一步 按鈕。讓我們來逐步產生 Roundcube 設定檔。請查看我們需要修改的表單部分。
- 一般設定
在「一般設定」區段中,我們將修改一些自訂項目和一般設定:
- ip_check: 這是一個安全性設定選項,用於在工作階段授權中驗證用戶端的 IP。
- product_name: 隨您喜好重新命名產品名稱。此名稱會對應文字中的「Roundcube」並被替換為此名稱。
- support_url: Roundcube 安裝中的支援。如果您沒有專用的服務台網站,建議使用電子郵件地址,例如 walker:paul@demo.com。
- skin_logo: 將 Roundcube 標誌替換為 skin_logo。若要啟用 HTTPS,請選擇 HTTPS URL 圖片(178px 乘 47px)。
保留其他設定的預設值。
- 記錄 & 偵錯: 讓我們使用預設選項。
- 設定資料庫: Roundcube 並非直接使用您的郵件,而是使用 MySQL 來儲存執行網頁用戶端所需的資訊。在這裡,我們需要通知 Roundcube 存取我們在 步驟 4 中設定的資料庫。使用我們之前建立的資料庫憑證:
- 資料庫: MySQL
- 伺服器: localhost
- 資料庫名稱: roundcubemail
- 使用者: roundcube
- 密碼:
demo12345@
- 使用您所定義、並已設定於 步驟 4.
- 中的密碼。Db_prefix:這是選用的,除非您與其他應用程式共用資料庫。
- 修改 IMAP: 讓我們為您的電子郵件伺服器進行 IMAP 和 SMTP 設定。由於本教學以 Gmail 為例,我們將在 IMAP 設定中使用 Gmail 的設定。然而,如果您選擇使用 Yahoo 或 Outlook 等其他服務提供商,則需要使用其對應的設定。許多電子郵件提供商都支援加密或不加密的連線。請規範使用 SSL IMAP/SMTP URL 和連接埠,以避免使用非安全連線。
- default_host: ssl://imap.gmail.com
- default_port: 993
- auto_create_user:
是 ☑
- 如果未勾選此項,Roundcube 將不會在其自身的資料庫中建立使用者,並會阻止您登入。
- *_mbox 欄位:保留預設值。
- 您稍後可以在 Roundcube 使用者介面中更新此設定。
- 修改 SMTP: SMTP 伺服器 是電子郵件中用於傳送郵件不可或缺的一部分。與 IMAP 伺服器區段類似,我們將使用 SSL URL 和連接埠。如果您在使用 SMTP 伺服器方面缺乏經驗,請遵循 SMTP 最佳做法 以深入了解此類伺服器。在這裡,我們以 Gmail 為例:
- smtp_server 欄位: ssl://smtp.gmail.com
- smtp_port 欄位: 465
- SMTP 和 IMAP 是兩種不同的服務,因此它們都需要使用者名稱和密碼。然而,Roundcube 允許我們使用 IMAP 憑證,因此無需重新建立。請將以下下方的欄位 smtp_user/smtp_pass 留空,並勾選「使用目前的 IMAP 使用者名稱和密碼進行 SMTP 驗證」旁邊的方塊。
- smtp_log: 是 ☑
- 修改顯示設定 & 使用者偏好設定: 讓我們使用預設的顯示設定和使用者偏好設定。如果您選擇自訂您的 Roundcube 安裝,請按一下設定頁面上的 RFC1766 連結,並手動更新 language 欄位。
- 外掛程式: Roundcube 提供外掛程式支援,可增加額外的安全性。外掛程式是選用的,但您可以利用它們來簡化您的工作。讓我們來看看最常用外掛程式的清單:
- archive: 此外掛程式提供一個 封存 按鈕,其運作方式與 Gmail 類似。
- emoticons: 這允許在電子郵件中使用表情符號。
- enigma: 它讓使用 GPG 電子郵件加密變得更容易。
- filesystem_attachments:它允許在儲存草稿郵件時,暫時將附件儲存到 Roundcube 伺服器。
- hide_blockquote:此外掛程式會隱藏回覆郵件中的引用部分,以保持介面整潔。
- identity_select:它允許使用者在撰寫郵件時選擇多個電子郵件地址。
- markasjunk:此外掛程式允許將電子郵件標記為垃圾郵件並將其移至垃圾郵件資料夾。
- newmail_notifier:使用瀏覽器通知系統提醒您有新郵件。
按下 UPDATE CONFIG 按鈕以儲存您的設定。在最後一個步驟中,我們將測試 Roundcube 設定以確保一切運作正常。
步驟 6:測試 Roundcube 設定
更新設定後,頁面將會重新整理,且頁面頂端會出現一個黃色資訊方塊,顯示 設定檔已成功儲存至 RCMAIL_CONFIG_DIR 目錄(位於您的 Roundcube 安裝路徑中)。
然後,按一下 CONTINUE 按鈕以測試您的設定。與相依性檢查頁面類似,如果沒有錯誤,您將在每一行看到綠色的 OK 標記。如果您看到任何錯誤,請返回並重新檢查您的輸入。
請在 Test SMTP config 與 Test IMAP config 區段中分別輸入您的 IMAP 和 SMTP 使用者名稱與密碼,以測試其餘的設定。同樣地,按一下 Send test email 與 Check login。如果您正確執行了所有步驟,頁面將會重新整理,您將在測試的區段下方看到綠色的 OK。
確認 SMTP 和 IMAP 連線皆正常運作後,下一步是使用 SSH 移除安裝程式目錄。移除安裝程式目錄是防止他人產生新設定並覆寫正確設定的安全方法:
|
1 |
sudo rm -rf /var/www/roundcube/installer/ |
最後,您可以使用伺服器的 IP 前往 Roundcube 執行個體並驗證您的電子郵件。
結論
在本教學課程中,我們學習了如何在 Ubuntu 20.04 上使用 Roundcube 安裝 Webmail 用戶端。除了上述步驟之外,您還必須考慮加入其他安全性選項,例如 HTTPS 支援 and GPG 加密。請務必負起責任,使用 強健的安全措施.
來保護您的伺服器。此外,您還可以從我們的 部落格:
- 閱讀更多關於 Redis 和 PHP 的學習材料:
- 如何在 Ubuntu 20.04 上安裝 phpBB
- 如何在 Ubuntu 18.04 上安裝並保護 phpMyAdmin
- 在具有 Ubuntu 18.04 的 Kubernetes 叢集上部署 PHP 應用程式
祝您電腦使用愉快!
留言
目前尚無留言。成為第一個留言的人吧。