介绍
如今,许多人使用基于浏览器的电子邮件客户端(如Gmail)访问他们的电子邮件,但是,如果您想要在检查电子邮件时停止看到广告,或者如果您已从公共电子邮件服务迁移到自己的域名,您可以运行自己的网络邮件客户端(也称为 _mail 用户代理或 MUA)。
Roundcube是一个现代和可自定义的基于IMAP的Webmail客户端,用PHP编写,它具有大量的功能来查看,组织和编写电子邮件,以及支持联系人和日历管理。
为了了解Roundcube在您的电子邮件基础设施中的位置,让我们通过幕后电子邮件的组成部分进行探索:
- 一个 mail user agent (MUA) 是用户互动以查看和发送电子邮件的界面。 一个 mail transfer agent (MTA) 将电子邮件从发送者传输给接收者。
- Simple Mail Transfer Protocol (SMTP) 是 MUA 使用的协议来发送邮件给 MTAs。 一个 mail delivery agent (MDA) 接收来自 MTAs 的电子邮件并存储它们。
当您发送电子邮件时,您的 MUA 将其传输到您的电子邮件服务器的 MTA 使用 SMTP. 经过几次跳跃,您的收件人的 MTA 将收到电子邮件并使用 IMAP 将其传输到他们的 MDA。
美元(注)
** 注意**:换句话说,Roundcube是一个MUA,而不是MTA,这意味着如果你使用它,你仍然需要有一个服务来管理你的电子邮件,你可以使用 你的邮件服务器,但如果你不想运行自己的邮件服务器(https://andsky.com/tech/tutorials/why-you-may-not-want-to-run-your-own-mail-server),Roundcube与Gmail等公共电子邮件服务或来自ISP的托管电子邮件一样有效。
美元
在本教程中,您将设置由Gmail支持的Roundcube。
前提条件
要遵循本教程,您将需要:
- 一个 Ubuntu 16.04 服务器由以下设置(此 Ubuntu 16.04 初始服务器设置教程)(https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-16-04),包括一个 sudo 非根用户和防火墙。
- LAMP 堆栈由以下安装(此 Ubuntu 16.04 上的 LAMP 教程)(https://andsky.com/tech/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04)。
- 一个基于 IMAP 的电子邮件服务器. 为了简单,本文将使用 Gmail,但任何基于 IMAP 的电子邮件服务器将工作。
步骤1 - 安装依赖性
设置 Roundcube 的第一步是安装其依赖性并配置 PHP. Roundcube 安装后,我们可以使用其有用的依赖性检查页面来验证一切是否正确设置。
以下是 Roundcube 依赖性,不包括在盒子中:
- 多个PHP库(以下是
php-*
包,包括对XML和多字节字符串的支持) - 支持工具(‘zip’和‘unzip’来处理压缩文件)
- 版本控制的Git
- PHP插件管理系统(‘composer’)
更新您的包索引并同时安装所有这些依赖。
1sudo apt-get update
2sudo 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
。
1sudo nano /etc/php/7.0/apache2/php.ini
在php.ini
文件中,评论的行开始于一个;
半字符号(而不是更常见的#
哈希符号)。
搜索包含许多评论的行,以 extension=
开头的部分. 删除对 php_mbstring.dll
和 php_xmlrpc.dll
扩展的行。
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3;extension=php_interbase.dll
4;extension=php_ldap.dll
5extension=php_mbstring.dll
6;extension=php_exif.dll ; Must be after mbstring as it depends on it
7;extension=php_mysqli.dll
8. . .
9;extension=php_sqlite3.dll
10;extension=php_tidy.dll
11extension=php_xmlrpc.dll
12;extension=php_xsl.dll
13 . . .
然后将扩展=dom.so
添加到扩展块的底部。
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3extension=php_xmlrpc.dll
4;extension=php_xsl.dll
5extension=dom.so
6
7. . .
我们在这个文件中需要做一些更改。
首先,搜索date.timezone
设置。 删除行并在引用标记中添加您的时区。 要查看如何在php.ini
文件中格式化您的时区,您可以参阅 PHP的时区页面。 例如,如果您生活在东方标准时间,您的文件可能会看起来像这样:
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3[Date]
4; Defines the default timezone used by the date functions
5; http://php.net/date.timezone
6date.timezone = "America/New_York"
7. . .
接下来,搜索upload_max_filesize
设置. 此设置主要影响上传附件. 默认情况下,它设置为 2MB. 您可以将其设置为您想要的任何数量,但大多数电子邮件服务器限制附件总大小为 10MB. 在此情况下,如果多个用户同时添加附件,我们将其设置为 12MB。
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3; Maximum allowed size for uploaded files.
4; http://php.net/upload-max-filesize
5upload_max_filesize = 12M
6. . .
接下来,搜索post_max_size
。而upload_max_filesize
设置仅适用于附件,此设置适用于整个电子邮件(包括附件)的大小。
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3; Maximum size of POST data that PHP will accept.
4; Its value may be 0 to disable the limit. It is ignored if POST data reading
5; is disabled through enable_post_data_reading.
6; http://php.net/post-max-size
7post_max_size = 18M
8. . .
最后,搜索「mbstring.func_overload」,放弃评论,并验证其值为 0。
1[label /etc/php/7.0/apache2/php.ini]
2. . .
3mbstring.func_overload = 0
4. . .
保存并关闭文件。
您的服务器现在已设置了 LAMP 堆栈、Roundcube 依赖和必要的 PHP 配置,下一步是下载 Roundcube 软件,安装并配置它。
第2步:下载Roundcube
与 Linux 世界中的许多项目一样,有两种方式来安装 Roundcube:从一个包或从源头上。 Roundcube 有一个 PPA,但由于该项目正在积极开发,所以 PPA 通常会过时。
请导航至 Roundcube 下载页面。 请在 Stable version 部分查看并查找 Complete 包。 右键单击 Download 按钮,然后选择 Copy Link Address。
使用此地址与wget
下载Roundcube tarball在服务器上。
1wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz
解压缩 Roundcube 档案。
1tar -xvzf roundcubemail-1.3.0-complete.tar.gz
的论点可能有点害怕(https://xkcd.com/1168/),所以这里是每个旗帜所做的:
*x
旗代表提取。
*v
旗代表 verbose,这意味着tar
来打印每一个提取的文件的路径和名称。
*z
旗告诉tar
不仅要删除 tar 包装器,而且要使用 gzip 解压缩档案。我们知道该文件是用 gzip 压缩的,因为文件扩展端有.gz
。
*f
旗代表文件。
接下来,将被解压缩的目录移动到 /var/www
,并将其更名为 roundcube
. 请确保在目录名称中忽略后续 /
,因为我们希望移动并更名整个目录,而不是目录中的内容。
1sudo mv roundcubemail-1.3.0 /var/www/roundcube
最后,更改权限以允许Apache创建和编辑文件(如配置文件和日志)。
1sudo chown -R www-data:www-data /var/www/roundcube/
2sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/
我们已经下载了Roundcube的代码,并更新了其位置和权限,但它目前仅部分安装。为了完成安装,我们需要通过Roundcube的GUI连接Roundcube到我们的数据库。
步骤 3 – 配置 Apache
我们需要编辑来配置 Apache 的文件是 虚拟主机文件。 虚拟主机是允许 Apache 在同一服务器上托管多个网站的功能。
每个位于 /etc/apache2/sites-available/
下面的 .conf
文件都代表了不同的网站. 我们将在这里为 Roundcube 创建一个虚拟主机文件,然后告诉 Apache,以便它可以通过浏览器提供。
首先,复制默认配置文件,用作新文件的起点。
1sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf
使用您的文本编辑器打开文件。
1sudo nano /etc/apache2/sites-available/roundcube.conf
我们将首先通过每个文件,然后提供整个文件来复制和粘贴。
在现有的VirtualHost
块中,您将修改以下指令:
*ServerName
告诉Apache听哪个域名。这应该是您的服务器IP地址或域名,如果您正在使用一个。
*DocumentRoot
指定在它进入时发送流量的地方。在我们的情况下,我们应该将其发送到Roundcube在/var/www/roundcube
。
*ServerAdmin
允许您指定与Apache有关的任何问题的联系电子邮件地址。我们在本教程中没有配置Apache来这样做,但最好的做法是无论如何包括它。
*两个日志线,ErrorLog
和CustomLog
,定义了为本网站保存成功连接日志和错误日志的地方。我们需要给错误日志的具体名称,所以
然后,你会添加一个新的目录
块,告诉Apache如何使用Roundcube目录.在一个目录
块的每个行中的第一个词是配置名称,然后是实际配置选项。
*「Options -Indexes」告訴Apache顯示警告,如果它無法找到「index.html」或「index.php」檔案。默認時,它會列出目錄的內容。 *「AllowOverride All」告訴Apache,如果找到本地的「.htaccess」檔案,該檔案中的任何選項都會超越該檔案的全球設定。 *「Order allow, deny」告訴Apache先允許匹配的客戶端進入網站,然後拒絕任何不匹配的客戶端。
以下是文件一旦您做出这些更改后会是什么样子. 为了简化,评论已被删除。
1[label /etc/apache2/sites-available/roundcube.conf]
2<VirtualHost *:80>
3 ServerName your_server_ip_or_domain
4 DocumentRoot /var/www/roundcube
5 ServerAdmin sammy@example.com
6
7 ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log
8 CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined
9
10 <Directory /var/www/roundcube>
11 Options -Indexes
12 AllowOverride All
13 Order allow,deny
14 allow from all
15 </Directory>
16</VirtualHost>
保存并关闭文件。
接下来,告诉 Apache 停止托管默认网站。
1sudo a2dissite 000-default
然后告诉Apache开始托管Roundcube网站,请确保在启用网站时不包含.conf
;a2ensite
需要配置的文件名称而没有扩展。
1sudo a2ensite roundcube
启用mod_rewrite
Apache 模块,这需要 Roundcube。
1sudo a2enmod rewrite
最后,重新启动Apache,这将使Roundcube安装可用。
1sudo apache2ctl restart
安装过程的最后一步是配置数据库,这样 Roundcube 就可以存储其应用特定的数据。
步骤 4 – 配置 MySQL
在此时,如果您打开网页浏览器并尝试访问您的服务器(通过IP地址或域名,如果您正在使用一个),您将看到一个配置错误页面. 这是因为Roundcube正在检查在配置设置期间生成的文件,但我们还没有通过配置设置。
连接到MySQL交互壳. 这个命令告诉MySQL作为用户(-u
) root进行身份验证,我们将指定密码(-p
)。
1mysql -u root -p
输入命令后,您将被要求找到您在安装MySQL时创建的根密码。
现在我们在MySQL壳中,我们将创建一个数据库和一个数据库用户,然后给该用户执行该新数据库上的命令的权限。
此命令创建一个名为roundcubemail
的数据库,然后提供数据库选项,例如要使用的字符集(‘utf8’)。
1CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
与许多其他身份验证系统不同,MySQL定义了用户的名称和他们将从哪里连接. 这个命令创建了一个名为 roundcube的用户,并定义了该用户从本地主机
连接。
创建这个用户,确保将密码更改为安全的东西。
1CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password';
给roundcube
用户在roundcubemail
数据库和所有表中的所有权限。
1GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';
然后保存您的更改,并退出MySQL交互壳。
1FLUSH PRIVILEGES;
2EXIT;
我们创建了一个空白的数据库,roundcubemail
和一个用户,roundcube@localhost
,然后给了该用户完整的权限,数据库. 现在我们需要设置数据库的结构,这样Roundcube 就可以知道在哪里存储其信息。
下面的命令告诉MySQL使用我们新创建的用户在一个文件中阅读 /var/www/roundcube/SQL/mysql.initial.sql
,并将配置应用到数据库 roundcubemail
。
1mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql
您将被要求输入 roundcube用户的密码。
以这种方式设置数据库为Roundcube的使用做好了准备,并允许我们验证我们有正确的权限。如果一切都成功了,您将不会收到任何反馈,然后返回命令提示。
步骤 5 – 配置 Roundcube
如前所述,如果您现在尝试访问 Roundcube 安装,您将收到一个错误页面。 为了完成安装,我们需要访问 http://your_server_ip_or_domain/installer
。
如果一切都设置顺利,每个行元素的右侧都会有绿色 OK,除了几个:可选的LDAP设置和每个数据库行,除了MySQL。
一旦一切都设置正确,滚到页面底部,然后点击 ** 下一个**按钮。
下一页的表单,分为七个部分,通过生成Roundcube配置文件。下面是我们需要填写的表单的部分,分为部分。
总体配置
一般配置部分提供了一些化妆品选项来定制和一些一般设置. 这里只有一种选项你应该更改:
- 确保 ip_check 被标记为更大的安全性. 它检查客户端的 IP 在会话授权。
还有几个可选的更改,你也可以做:
- 您可以更改 product_name. 这可以是您想要的任何东西,文本中的
Roundcube
的所有引用都将被这个名称取代。 - support_url是用户可以获得Roundcube安装支持的URL。这并不严格需要,但如果Roundcube被提供给可能需要帮助的人群,它可能会很好。 如果您没有专门的帮助桌面网站,您可以使用电子邮件地址,例如:mailto:[email protected]`。 *您可以用 skin_logo来替换Roundcube标志,这将为PNG文件(178px by 47px)提供一个URL。 如果您要启用HTTPS(非常建议,并在本教程中进一步涵盖),请确保图像
所有其他选项都可以留在其默认值。
登记 & Debugging
将此部分中的所有内容留在其默认设置中。
数据库设置
Roundcube 使用 MySQL 存储运行 Web 客户端的信息(而不是您的电子邮件)。 在本节中,您需要告诉 Roundcube 如何访问您在步骤 4 中设置的数据库,您需要之前创建的数据库用户、用户密码和数据库名称。
- 它应该已经设置了,但从
数据库类型
中选择MySQL
,下载菜单。 - 输入
数据库服务器
的Localhost
。 - 在
数据库名
字段中输入数据库名称,roundcubemail
。 - 输入数据库用户,
roundcube
,在数据库用户名
字段。 - 对于
数据库密码
字段,在步骤 4 中输入您在创建数据库时定义的密码。
IMAP 设置
对于本节,您将需要您的电子邮件服务器的IMAP和SMTP设置. 因为本教程使用Gmail作为例子,Gmail设置如下所列,但如果您有自己的电子邮件提供商,他们应该为您提供所需的详细信息。 大多数电子邮件提供商支持加密或无加密连接。 请确保使用SSL IMAP/SMTP URL 和端口避免使用非安全连接。
- 在 default_host字段中输入 IMAP 服务器 URL. 使用 SSL 连接时,先键入 URL 为
ssl://
而不是https://
. 对于 Gmail,请输入ssl://imap.gmail.com
。
- 接下来是设置 default_port,即IMAP服务器端口。 SSL 和非 SSL 连接将使用不同的端口,所以请确保使用 SSL 客户端口. Gmail 的 SSL IMAP 端口使用
993
. - 字段 username_domain是使用完整电子邮件地址作为用户名的电子邮件提供商的便利选项。 这个字段是可选的。 输入域名 - 不是完整的电子邮件 - 将允许您只使用您的名字登录Roundcube,而不是整个电子邮件。 例如,在字段中输入
gmail.com
将允许user@gmail
com 登录Roundcube与user
。 - 确保选择 ** auto_create_
SMTP 设置
SMTP服务器是发送电子邮件的电子邮件部分,类似于IMAP服务器部分,我们将使用SSL URL和端口,以及Gmail作为参考。
- 输入 SMTP 服务器地址在 smtp_server字段. Gmail 的 SMTP 服务器是
ssl://smtp.gmail.com
. - 输入 SSL SMTP 服务器端口在 smtp_port字段. Gmail 的 SSL 端口是
465
. - 因为 SMTP 和 IMAP 是两个独立的服务,他们都需要一个用户名和密码。 Roundcube 给我们使用上面的 IMAP 用户名和密码设置的选项,所以我们不必在这里重新设置它。 这意味着您需要在 smtp_user/smtp_pass字段下留下字段空,然后检查下一个框 **使用当前的 IMAP 用户名和密码进行 SMTP 身份验
显示设置 & 用户预览
如果您想要自定义 Roundcube 安装的语言与所运行的操作系统不同,请通过点击配置页面上的 RFC1766链接并更新 language字段来手动设置。
插件
Roundcube的插件支持是真正使这个网页邮件客户端脱颖而出的东西。以下是您可以安装的一组良好的默认设置。所有插件都是可选的,即,他们不需要使用Roundcube,但下面的列表是一个很好的组合,使体验更容易或更安全。
看看每个插件的描述,并安装任何你喜欢的插件. 如果你没有在这里选择一个插件,你可以随时安装它。
- archive: 给你一个存档按钮,类似于Gmail的工作方式。
- emoticons: 简单地使它更容易使用情绪符号在电子邮件中。
- enigma: 允许GPG电子邮件加密. 我们将深入了解如何在 我们的Roundcube安全教程中配置此功能。
- filesystem_attachments: 一个核心插件,允许在编写存储或草稿电子邮件时暂时存储附件到Roundcube服务器。
- hide_blockquote: 隐藏回复电子邮件的引用部分,以保持用户界面清洁。
最后,这就是整个配置。按下页面底部的 UPDATE CONFIG按钮来保存您的设置。
步骤 6 – 测试 Roundcube 配置
更新配置后,页面将更新,您将看到页面顶部的黄色信息框,其中说 **配置文件已成功保存到您的Roundcube安装的RCMAIL_CONFIG_DIR
目录。
从这里,点击 Continue按钮来测试您的配置. 就像依赖性检查页面一样,如果没有错误,您将在每个行上看到绿色 OK标记。
要测试其余的配置,请在 Test SMTP config 和 Test IMAP config 部分中输入您的 IMAP 和 SMTP 用户名和密码,然后单击 发送测试电子邮件 和 检查登录。
<$>[注] 注: 如果您正在使用Gmail,并且已启用了2步验证,则需要 生成特定应用程序密码,因为Roundcube不知道如何请求您的2步验证令牌。
一旦您检查了 SMTP 和 IMAP 连接,两者都绿色,那么是时候跳回您的 SSH 会话并删除安装程序目录了。
1sudo rm -rf /var/www/roundcube/installer/
现在,您可以使用您的服务器的 IP 或域名访问 Roundcube 实例,登录并检查您的电子邮件。
结论
有了Roundcube,你可以拥有原生桌面客户端的功能集和外观,可以使用Webmail客户端的灵活性。你现在有一个功能齐全的安装,但你应该采取一些额外的步骤来确保你完全安全(如添加HTTPS支持和使用GPG加密为你的电子邮件)。
此外,您可以安装新的主题来增强客户端的外观和插件以添加新的功能。 与 插件不同,没有中央网站来找到主题,但您可以找到 Roundcube Skins或 Roundcube 论坛作为找到一些地方。