如何在 Ubuntu 16.04 上使用 Roundcube 安装自己的 Webmail 客户端
介绍
如今,许多人使用 Gmail 等基于浏览器的电子邮件客户端来访问他们的电子邮件。但是,如果您希望在查看电子邮件时不再看到广告,或者如果您已从公共电子邮件服务转移到自己的域,则可以运行自己的网络邮件客户端(也称为_邮件用户代理_或 MUA)。
Roundcube 是一个现代且可定制的基于 IMAP 的 Web 邮件客户端,用 PHP 编写。它具有大量用于查看、组织和撰写电子邮件的功能,以及对联系人和日历管理的支持。借助其插件存储库,您可以添加与最流行的基于浏览器的客户端相当的功能。
要了解 Roundcube 在您的电子邮件基础架构中的位置,让我们来看看幕后构成电子邮件的组件:
-
mail user agent (MUA) 是用户与之交互以查看和发送电子邮件的界面。
-
邮件传输代理 (MTA) 将电子邮件从发件人传输到收件人。
-
简单邮件传输协议 (SMTP) 是 MUA 用于向 MTA 发送邮件的协议。
-
邮件传递代理 (MDA) 从 MTA 接收电子邮件并存储它们。
-
Internet 消息访问协议 (IMAP) 是 MDA 用于向 MUA 传递邮件的协议。
当您发送电子邮件时,您的 MUA 使用 SMTP 将其传输到您的电子邮件服务器的 MTA。几跳后,收件人的 MTA 将收到电子邮件并使用 IMAP 将其传输到他们的 MDA。然后您的收件人可以使用他们选择的 MUA 查看电子邮件。
注意:换句话说,Roundcube 是 MUA,而不是 MTA。这意味着,如果您使用它,您仍然需要有一个服务来管理您的电子邮件。您可以使用[您自己的邮件服务器](https://www.digitalocean.com/community/tutorials/how-to-run-your-own-mail-server-with-mail-in-a-box-on- ubuntu-14-04),但是如果你 [不想运行自己的邮件服务器](https://www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run -your-own-mail-server),Roundcube 与 Gmail 等公共电子邮件服务或来自 ISP 的托管电子邮件同样适用。
在本教程中,您将设置由 Gmail 支持的 Roundcube。
先决条件
要遵循本教程,您将需要:
-
按照【本 Ubuntu 16.04 初始服务器设置教程】(https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04) 设置一台 Ubuntu 16.04 服务器,包括一个sudo 非 root 用户和防火墙。
-
按照[此 LAMP on Ubuntu 16.04 教程]安装的 LAMP 堆栈(https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on- ubuntu-16-04)。
-
基于 IMAP 的电子邮件服务器。为简单起见,本文将使用 Gmail,但任何基于 IMAP 的电子邮件服务器都可以使用。确保您知道电子邮件服务器的 IMAP 和 SMTP 设置。
步骤 1 — 安装依赖项
设置 Roundcube 的第一步是安装其依赖项和配置 PHP。安装 Roundcube 后,我们可以使用其有用的依赖项检查页面来验证所有设置是否正确。
这些是未开箱即用的 Roundcube 依赖项:
-
几个 PHP 库(它们是下面的
php-*包,包括对 XML 和多字节字符串的支持) -
支持工具(
zip和unzip来处理压缩文件) -
用于版本控制的 Git
-
PHP插件管理系统(
composer)
更新您的包索引并立即安装所有这些依赖项。
sudo apt-get 更新
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip 解压 git composer
接下来,需要在服务器的 php.ini 文件中启用一些 PHP 库,该文件位于 /etc/php/7.0/apache2/php.ini。使用 nano 或您喜欢的文本编辑器打开此文件。
Sudonano/etc/php/7.0/apache2/php.在
许多必要的更改只是启用已注释掉的选项。在 php.ini 文件中,注释行以 ; 分号(而不是更常见的 # 哈希符号)开头。要取消注释一行,请删除这个前导分号;要评论一行,请添加前导分号。
搜索包含许多以 extensionu003d 开头的注释行的部分。取消注释 php_mbstring.dll 和 php_xmlrpc.dll 扩展的行。
/etc/php/7.0/apache2/php.ini
. . .
;扩展u003dphp_interbase.dll
;扩展u003dphp_ldap.dll
扩展u003dphp_mbstring.dll
;扩展u003dphp_exif.dll ;必须在 mbstring 之后,因为它取决于它
;扩展u003dphp_mysqli.dll
. . .
;扩展u003dphp_sqlite3.dll
;扩展u003dphp_tidy.dll
扩展u003dphp_xmlrpc.dll
;扩展u003dphp_xsl.dll
. . .
然后将 extensionu003ddom.so 添加到扩展块的底部。
/etc/php/7.0/apache2/php.ini
. . .
扩展u003dphp_xmlrpc.dll
;扩展u003dphp_xsl.dll
扩展u003ddom.so
. . .
我们需要在此文件中进行一些其他修改。
首先,搜索“date.timezone”设置。取消注释该行并将您的时区添加到引号中。要查看如何在 php.ini 文件中格式化您的时区,您可以参考 PHP 的时区页面。例如,如果您居住在东部标准时间,您的文件可能如下所示:
/etc/php/7.0/apache2/php.ini
. . .
[日期]
;定义日期函数使用的默认时区
; http://php.net/date.timezone
date.timezone u003d "美国/New_York"
. . .
接下来,搜索 upload_max_filesize 设置。此设置主要影响上传附件。默认情况下,它设置为 2MB。您可以将其设置为您想要的任何数量,但大多数电子邮件服务器将总附件大小限制为 10MB。如果多个用户同时添加附件,我们将在此处将其设置为 12MB。
/etc/php/7.0/apache2/php.ini
. . .
;上传文件的最大允许大小。
; http://php.net/upload-max-filesize
upload_max_filesize u003d 12M
. . .
接下来,搜索“post_max_size”。 upload_max_filesize 设置仅适用于附件,而此设置适用于整个电子邮件(包括附件)的大小。为了防止死锁,我们将把它设置为稍高的值。
/etc/php/7.0/apache2/php.ini
. . .
; PHP 将接受的 POST 数据的最大大小。
;它的值可能为 0 以禁用限制。如果 POST 数据读取将被忽略
;通过 enable_post_data_reading 禁用。
; http://php.net/post-max-size
post_max_size u003d 18M
. . .
最后,搜索 mbstring.func_overload,取消注释,并验证其值是否设置为 0。这将支持多字节字符串函数。
/etc/php/7.0/apache2/php.ini
. . .
mbstring.func_overload u003d 0
. . .
保存并关闭文件。
您的服务器现在设置了 LAMP 堆栈、Roundcube 的依赖项和必要的 PHP 配置。下一步是下载 Roundcube 软件,安装并配置它。
第 2 步 — 下载 Roundcube
与 Linux 世界中的许多项目一样,有两种方法可以安装 Roundcube:从包或从源代码。 Roundcube 有一个 PPA,但由于该项目正在积极开发中,因此 PPA 经常过时。 (在撰写本文时,PPA 的版本为 1.2.3,但项目本身的版本为 1.3)。为了确保我们获得最新版本,我们将从源代码安装。
导航到 Roundcube 下载页面。查看 Stable version 部分并找到 Complete 包。右键单击下载按钮并选择复制链接地址。
将此地址与 wget 一起使用以在服务器上下载 Roundcube 压缩包。
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz
解压缩 Roundcube 存档。
tar -xvzf roundcubemail-1.3.0-complete.tar.gz
tar 的参数可能有点 令人生畏,所以每个标志的作用如下:
-
x标志代表提取。 -
v标志代表详细,它告诉tar打印提取的每个文件的路径和名称。 -
z标志告诉tar不仅要删除 tar 包装器,还要使用 gzip 解压缩存档。我们知道该文件是用 gzip 压缩的,因为文件扩展名末尾有.gz。 -
f标志代表文件。这必须是最后一个标志,因为tar使用紧随其后的任何内容作为要提取的文件。
接下来,将解压后的目录移动到/var/www,并重命名为roundcube。确保省略目录名称中的尾随/,因为我们要移动和重命名整个目录,而不是目录中的内容。
sudo mv roundcubemail-1.3.0 /var/www/roundcube
最后,更改权限以允许 Apache 创建和编辑文件(如配置文件和日志)。具体来说,将所有者和组更改为www-data,并更改所有者和组的读写权限,但其他所有人只读。
sudo chown -R www-data:www-data /var/www/roundcube/
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/
我们已经下载了 Roundcube 的代码并更新了它的位置和权限,但此时它只是部分安装。为了完成安装,我们需要通过 Roundcube 的 GUI 将 Roundcube 连接到我们的数据库。在我们这样做之前,我们需要告诉 Apache Roundcube 在哪里,以便它可以加载网站。
步骤 3 — 配置 Apache
我们需要编辑以配置 Apache 的文件是 [虚拟主机文件](https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16 -04)。虚拟主机是一项允许 Apache 在同一服务器上托管多个站点的功能。即使这是 Apache 托管的唯一站点,使用虚拟主机配置文件也比编辑主要 Apache 配置更简单、更清晰。
位于 /etc/apache2/sites-available/ 下的每个 .conf 文件代表一个不同的站点。我们将在这里为 Roundcube 创建一个虚拟主机文件,然后告诉 Apache 以便它可以通过浏览器使用它。
首先,复制默认配置文件以用作新文件的起点。
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf
使用文本编辑器打开文件。
Sudonano / 等 / Apache 2 / Shite s - Airy Be / Roon d Kube。 conf
我们需要对此文件进行一些更改。我们将首先浏览它们中的每一个,然后提供整个文件以进行复制和粘贴。
在现有的 VirtualHost 块中,您将修改以下指令:
-
ServerName告诉 Apache 监听哪个域。这应该是您的服务器 IP 地址或域名(如果您正在使用)。 -
DocumentRoot指定流量进入时将其发送到何处。在我们的例子中,我们应该将其发送到位于/var/www/roundcube的 Roundcube。 -
ServerAdmin允许您为 Apache 的任何问题指定联系电子邮件地址。我们不会在本教程中配置 Apache 来执行此操作,但最好还是将其包含在内。 -
两条日志记录行,
ErrorLog和CustomLog,定义了保存此站点的成功连接日志和错误日志的位置。我们需要为错误日志指定特定名称,以便在出现问题时很容易找到特定于该站点的日志。
然后,您将添加一个新的“目录”块,它告诉 Apache 如何处理 Roundcube 目录。 Directory 块的每一行中的第一个单词是配置名称,后跟实际的配置选项。
-
Options -Indexes告诉 Apache 在找不到index.html或index.php文件时显示警告。默认情况下,它将列出目录的内容。 -
AllowOverride All告诉 Apache 如果找到本地.htaccess文件,该文件中的任何选项都会覆盖该文件中的全局设置。 -
Order allow,deny告诉 Apache 首先允许匹配的客户端访问该站点,然后拒绝任何不匹配的客户端。 -
allow from all是Order行的后续。它定义了允许的客户端类型,在我们的例子中是任何类型。
这是进行这些更改后文件的外观。为简洁起见,评论已被删除。
/etc/apache2/sites-available/roundcube.conf
<虚拟主机 *:80>
服务器名称 your_server_ip_or_domain
DocumentRoot /var/www/roundcube
服务器管理员 sammy@example.com
错误日志 ${APACHE_LOG_DIR}/roundcube-error.log
CustomLog ${APACHE_LOG_DIR}/roundcube-access.log 组合
<目录 /var/www/roundcube>
选项 - 索引
允许覆盖所有
命令允许,拒绝
允许所有人
</目录>
</虚拟主机>
保存并关闭文件。
接下来,告诉 Apache 停止托管默认站点。
sudo a2dissite 000-默认
然后告诉 Apache 开始托管 Roundcube 站点。确保在启用站点时不要包含.conf; a2ensite 需要不带扩展名的配置文件名。
sudo a2ensite 圆形立方体
启用 Roundcube 需要的 mod_rewrite Apache 模块。
sudo a2enmod 重写
最后,重新启动 Apache,这将使 Roundcube 安装可以访问。
须藤 apache2ctl 重启
webmail 客户端几乎可以使用了。安装过程的最后一步是配置数据库,以便 Roundcube 可以存储其特定于应用程序的数据。
步骤 4 — 配置 MySQL
此时,如果您打开 Web 浏览器并尝试访问您的服务器(通过 IP 地址或域名,如果您正在使用),您将看到一个配置错误页面。这是因为 Roundcube 正在检查配置设置期间生成的文件,但我们还没有完成配置设置。在我们完成该设置之前,我们需要准备数据库。
连接到 MySQL 交互式 shell。该命令告诉 MySQL 以用户 (-u) root 身份进行身份验证,并且我们将指定密码 (-p)。
mysql -u 根目录 -p
输入命令后,系统会提示您输入安装 MySQL 时创建的 root 密码。
现在我们在 MySQL shell 中,我们将创建一个数据库和一个数据库用户,然后授予该用户在该新数据库上执行命令的权限。
首先创建数据库。此命令创建一个名为“roundcubemail”的数据库,然后提供数据库选项,例如要使用的字符集(“utf8”)。
CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
与许多其他身份验证系统不同,MySQL 通过名称和连接位置来定义用户。此命令创建一个名为 roundcube 的用户,并定义该用户从 localhost 进行连接。对于访问数据库的应用程序,定义用户将从何处发出请求有助于加强安全性。
创建此用户,确保将密码更改为安全的密码。
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password';
授予 roundcube 用户对 roundcubemail 数据库及其所有表的所有权限。
将roundcubemail.*上的所有权限授予'roundcube'@'localhost';
然后保存您的更改并退出 MySQL 交互式 shell。
同花顺特权;
出口;
我们创建了一个空白数据库“roundcubemail”和一个用户“roundcube@localhost”,然后授予该用户对数据库的完全权限。现在我们需要设置数据库的结构,以便 Roundcube 知道将其信息保存在哪里。 Roundcube 安装提供了一个为我们配置数据库的文件,因此我们不必手动进行。
以下命令告诉 MySQL 使用我们新创建的用户读取文件/var/www/roundcube/SQL/mysql.initial.sql 并将配置应用于数据库roundcubemail。
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,除了少数:可选的 LDAP 设置和除 MySQL 之外的每个数据库行。如果除了刚才提到的其他行旁边还有 NOT AVAILABLE,则需要安装这些依赖项。 Roundcube 为任何缺少的依赖项提供了一个链接,以便您找出要安装的内容。
一切设置正确后,向下滚动到页面底部,然后单击 NEXT 按钮。
下一页上的表单分为七个部分,演示如何生成 Roundcube 配置文件。以下是我们需要填写的表格部分,按部分划分。如果以下部分中排除了表单中的某行,您可以跳过该行并将其保留为默认设置。
通用配置
常规配置部分提供了一些用于自定义的装饰选项和一些常规设置。您应该在此处更改一个选项:
- 确保勾选 ip_check 以获得更高的安全性。它在会话授权中检查客户端的 IP。
您还可以进行更多可选更改:
-
您可以更改 product_name。这可以是您希望的任何内容,并且文本中对“Roundcube”的所有引用都将替换为此名称。
-
support_url 是用户可以获得对其 Roundcube 安装支持的 URL。它不是严格需要的,但如果为可能需要帮助的一群人提供 Roundcube,那就太好了。如果您没有专门的帮助台站点,您可以使用电子邮件地址,例如“mailto:sammy@example.com”。
-
您可以将 Roundcube 徽标替换为 skin_logo,它需要一个指向 PNG 文件(178 像素 x 47 像素)的 URL。如果您要启用 HTTPS(强烈推荐,本教程稍后会介绍),请确保图像 URL 是 HTTPS URL。
所有其他选项都可以保留其默认值。
日志记录和调试
将此部分中的所有内容保留为默认设置。
数据库设置
Roundcube 使用 MySQL 存储运行 Web 客户端的信息(而不是您的电子邮件)。在本节中,您需要告诉 Roundcube 如何访问您在第 4 步中设置的数据库。您将需要您之前创建的数据库用户、用户密码和数据库名称。
-
它应该已经设置,但是从数据库类型下拉菜单中选择
MySQL。 -
为 数据库服务器 输入
localhost。 -
在 Database name 字段中输入数据库名称
roundcubemail。 -
在数据库用户名字段中输入数据库用户
roundcube。 -
对于 Database password 字段,输入您在第 4 步中创建数据库时定义的密码。
-
最后一个选项 db_prefix 不是必需的,除非您使用与其他应用程序共享的数据库。如果是这样,请输入类似
rc_的内容。
IMAP 设置
对于本部分,您需要电子邮件服务器的 IMAP 和 SMTP 设置。由于本教程使用 Gmail 作为示例,Gmail 设置包含在下面,但如果您有自己的电子邮件提供商,他们应该为您提供所需的详细信息。大多数电子邮件提供商都支持带或不带加密的连接。确保通过使用 SSL IMAP/SMTP URL 和端口来避免使用非安全连接。
- 在 default_host 字段中输入 IMAP 服务器 URL。使用 SSL 连接时,请在 URL 前加上
ssl://而不是https://。对于 Gmail,输入ssl://imap.gmail.com。
1.接下来是设置default_port,也就是IMAP服务器端口。 SSL 和非 SSL 连接将使用不同的端口,因此请确保使用 SSL 端口。 Gmail 的 SSL IMAP 端口使用“993”。
-
username_domain 字段是使用完整电子邮件地址作为用户名的电子邮件提供商的便利选项。此字段是可选的。输入一个域——而不是完整的电子邮件——将允许你在“@”之前只用你的名字登录 Roundcube,而不是整个电子邮件。例如,在字段中输入
gmail.com将允许user@gmail.com使用user登录 Roundcube。 -
确保选中 auto_create_user 复选框。如果未选中,Roundcube 不会在自己的数据库中创建用户,这将阻止您登录。
-
现在,将所有 *_mbox 字段(如 sent_mbox)保留为默认值。这可以稍后在 Roundcube UI 中更新,并且大多数电子邮件客户端仍然使用这些文件夹名称。
SMTP 设置
SMTP 服务器是发送电子邮件的电子邮件部分。与 IMAP 服务器部分非常相似,我们将使用 SSL URL 和端口以及 Gmail 作为参考。
-
在 smtp_server 字段中输入 SMTP 服务器地址。 Gmail 的 SMTP 服务器是
ssl://smtp.gmail.com。 -
在 smtp_port 字段中输入 SSL SMTP 服务器端口。 Gmail 的 SSL 端口是“465”。
-
因为 SMTP 和 IMAP 是两个独立的服务,它们都需要用户名和密码。 Roundcube 为我们提供了使用上面设置的 IMAP 用户名和密码的选项,因此我们不必在这里再次设置。这意味着您需要将 smtp_user/smtp_pass 下的字段留空,并选中 Use the current IMAP username and password for SMTP authentication 旁边的框。
-
最后确保 smtp_log 的复选框被选中。
显示设置和用户偏好
我们将保留所有这些选项的默认值。如果您想将 Roundcube 安装自定义为与运行它的操作系统不同的语言,请通过单击配置页面上的 RFC1766 链接并更新 language 字段来手动设置它。
插件
Roundcube 的插件支持真正让这个 webmail 客户端脱颖而出。以下是您可以安装的一组很好的默认设置。所有插件都是可选的,即。他们不是必须使用 Roundcube,但下面的列表是一个很好的设置,可以让体验更轻松或更安全。
查看每个插件的描述并安装您喜欢的任何一个。如果您没有在此处选择插件,您可以随时安装它。这只是用这些插件预先配置了 Roundcube。
-
存档:为您提供存档按钮,类似于 Gmail 的工作方式。
-
表情符号:让在电子邮件中使用表情符号变得更容易。
-
enigma:允许 GPG 电子邮件加密。我们将在 我们的 Roundcube 安全教程 中详细介绍如何配置它。
-
filesystem_attachments:一个核心插件,允许在撰写或保存草稿电子邮件时临时将附件保存到 Roundcube 服务器。
-
hide_blockquote:隐藏回复电子邮件的引用部分以保持 UI 整洁。
-
identity_select:如果您有多个电子邮件地址(身份),它可以让您在撰写电子邮件时轻松选择它们。
-
markasjunk:允许将电子邮件标记为垃圾邮件并将其移至您的垃圾邮件文件夹。
-
newmail_notifier:使用您的浏览器通知系统提醒您有新电子邮件。
最后,这就是所有的配置。按页面底部的 UPDATE CONFIG 按钮保存您的设置。接下来让我们测试一切正常。
第 6 步 — 测试 Roundcube 配置
更新配置后,页面将刷新,您会在页面顶部看到一个黄色信息框,上面写着配置文件已成功保存到 Roundcube 安装的 RCMAIL_CONFIG_DIR 目录中。
在此处,单击 CONTINUE 按钮以测试您的配置。就像依赖检查页面一样,如果没有错误,你会在每一行看到一个绿色的 OK 标记。如果没有,请返回并仔细检查您输入的内容。
要测试其余配置,请在 Test SMTP config 和 Test IMAP config 部分中输入您的 IMAP 和 SMTP 用户名和密码,然后单击 Send test email 和 **Check login **, 分别。如果测试成功,页面将重新加载,您将在您测试的部分下看到绿色的“OK”。
注意: 如果您使用的是 Gmail 并且启用了两步验证,则需要[生成应用专用密码](https://support.google.com/accounts/answer/185833? hlu003den) 因为 Roundcube 不知道如何提示您输入两步验证令牌。
一旦你检查了 SMTP 和 IMAP 连接并且两者都是绿色的,那么是时候跳回你的 SSH 会话并删除安装程序目录了。这将防止其他人生成新配置并覆盖正确的设置。
sudo rm -rf /var/www/roundcube/installer/
现在您可以使用您的服务器 IP 或您的域名访问您的 Roundcube 实例,登录并查看您的电子邮件。
结论
使用 Roundcube,您可以拥有本地桌面客户端的功能集和外观以及 Web 邮件客户端的灵活性。您现在已经完成了功能齐全的安装,但您应该采取一些额外的步骤来确保您完全安全(例如添加 HTTPS 支持和为您的电子邮件使用 GPG 加密)。您可以按照 如何在 Ubuntu 16.04 上保护 Roundcube 来做到这一点。
此外,您可以安装新主题以增强客户端和插件的外观以添加新功能。与 plugins 不同,它没有找到主题的中心站点,但您可以找到 Roundcube Skins 或 [Roundcube forums] (http://www.roundcubeforum.net/index.php?boardu003d28.0)作为找到一些的地方。
更多推荐

所有评论(0)