如何在 Ubuntu 16.04 上使用 Roundcube 安装自己的网络邮件客户端

介绍

如今,许多人使用基于浏览器的电子邮件客户端(如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。

前提条件

要遵循本教程,您将需要:

步骤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.dllphp_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来这样做,但最好的做法是无论如何包括它。 *两个日志线,ErrorLogCustomLog,定义了为本网站保存成功连接日志和错误日志的地方。我们需要给错误日志的具体名称,所以

然后,你会添加一个新的目录块,告诉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
  1. 接下来是设置 default_port,即IMAP服务器端口。 SSL 和非 SSL 连接将使用不同的端口,所以请确保使用 SSL 客户端口. Gmail 的 SSL IMAP 端口使用 993.
  2. 字段 username_domain是使用完整电子邮件地址作为用户名的电子邮件提供商的便利选项。 这个字段是可选的。 输入域名 - 不是完整的电子邮件 - 将允许您只使用您的名字登录Roundcube,而不是整个电子邮件。 例如,在字段中输入 gmail.com 将允许 user@gmailcom 登录Roundcube与 user
  3. 确保选择 ** auto_create_

SMTP 设置

SMTP服务器是发送电子邮件的电子邮件部分,类似于IMAP服务器部分,我们将使用SSL URL和端口,以及Gmail作为参考。

  1. 输入 SMTP 服务器地址在 smtp_server字段. Gmail 的 SMTP 服务器是 ssl://smtp.gmail.com.
  2. 输入 SSL SMTP 服务器端口在 smtp_port字段. Gmail 的 SSL 端口是 465.
  3. 因为 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 configTest 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 SkinsRoundcube 论坛作为找到一些地方。

Published At
Categories with 技术
comments powered by Disqus