如何在Ubuntu 16.04上安装拥有Roundcube的自己的Webmail客户端

如果您希望在查看电子邮件时停止查看广告,或者您已经从公共电子邮件服务转到自己的域名,您可以运行自己的网络邮件客户端(也称为邮件用户代理或MUA)。在本教程中,您将设置由Gmail支持的Webmail客户端Roundcube。

介绍

如今,许多人使用基于浏览器的电子邮件客户端(如Gmail)访问他们的电子邮件。 但是,如果您希望在查看电子邮件时停止查看广告,或者您已经从公共电子邮件服务转到自己的域名,您可以运行自己的网络邮件客户端(也称为邮件用户代理或MUA)。

Roundcube是一款现代化且可定制的基于IMAP的webmail客户端,用PHP编写。 它具有查看,组织和撰写电子邮件以及支持联系人和日历管理的大量功能。 通过其插件库,您可以添加与最受欢迎的基于浏览器的客户端相似的功能。

要了解Roundcube适用于您的电子邮件基础设施的位置,请浏览包含电子邮件的组件:

  • 邮件用户代理 (MUA)是用户与用户交互以查看和发送电子邮件的界面。
  • 邮件传输代理 (MTA)将电子邮件从发送方传送到收件人。
  • 简单邮件传输协议 (SMTP)是用于向MTA发送邮件的协议MUAs。
  • 邮件传送代理 (MDA)接收来自MTA的电子邮件并存储它们。
  • 互联网消息访问协议 (IMAP)是MDA用于将邮件传递到MUA的协议。

当您发送电子邮件时,您的MUA将使用SMTP将其传输到电子邮件服务器的MTA。 经过几个跳,收件人的MTA将收到邮件,并使用IMAP将其传送到其MDA。 然后您的收件人可以使用他们的MUA选择查看电子邮件。

注意 :换句话说,Roundcube是MUA,而不是MTA。 这意味着如果您使用它,您仍然需要一个管理您的电子邮件的服务。 您可以使用自己的邮件服务器 ,但如果您不想运行自己的邮件服务器 ,Roundcube可以与公共电子邮件服务(如Gmail)或来自ISP的托管电子邮件同样顺利。

在本教程中,您将设置由Gmail支持的Roundcube。

先决条件

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

  • 一个Ubuntu 16.04服务器通过遵循这个Ubuntu 16.04初始服务器设置教程设置 ,包括sudo非root用户和防火墙。
  • 在Ubuntu 16.04教程中按照LAMP安装的LAMP。
  • 一个基于IMAP的电子邮件服务器。 为了简单起见,本文将使用Gmail ,但任何基于IMAP的电子邮件服务器都可以正常工作。 确保您知道电子邮件服务器的IMAP和SMTP设置。

第1步 - 安装依赖关系

设置Roundcube的第一步是安装它的依赖关系并配置PHP。 一旦安装了Roundcube,我们可以使用其有用的依赖关系检查页面来验证一切设置是否正确。

这些是Roundcube依赖项,不包括在外:

  • 几个PHP库(下面是php-*包,包括对XML和多字节字符串的支持)
  • 支持工具( zip unzip处理压缩文件)
  • Git版本控制
  • PHP插件管理系统( composer

更新您的包索引并一次安装所有这些依赖关系。

sudo apt-get update
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip unzip git composer

接下来,需要在服务器的php.ini文件中启用一些PHP库,该文件位于/etc/php/7.0/apache2/php.ini 使用nano或您喜欢的文本编辑器打开此文件。

sudo nano /etc/php/7.0/apache2/php.ini

许多必要的更改只是启用已被注释掉的选项。 php.ini文件中,注释行以a开头; 分号(而不是更常见的#哈希符号)。 要删除一行,删除这个领先的分号; 评论一行,添加一个领先的分号。

搜索包含以extension=开头的许多注释行的extension= 取消注释php_mbstring.dllphp_xmlrpc.dll扩展的行。

/etc/php/7.0/apache2/php.ini
. . .
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysqli.dll
. . .
;extension=php_sqlite3.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
;extension=php_xsl.dll
  . . .

然后将extension=dom.so添加到扩展块的底部。

/etc/php/7.0/apache2/php.ini
. . .
extension=php_xmlrpc.dll
;extension=php_xsl.dll
extension=dom.so

. . .

在这个文件中还需要做一些其他修改。

首先,搜索date.timezone设置。 取消注释行,并将您的时区添加为引号。 要查看如何在php.ini文件中格式化您的时区,可以参考PHP的时区页面 例如,如果您住在东部标准时间,您的文件可能如下所示:

/etc/php/7.0/apache2/php.ini
. . .
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/New_York"
. . .

接下来,搜索upload_max_filesize设置。 此设置主要影响上传附件。 默认情况下,它设置为2MB。 您可以将其设置为您想要的任何数量,但大多数电子邮件服务器将附件大小限制为10MB。 如果多个用户同时添加附件,我们将其设置为12MB。

/etc/php/7.0/apache2/php.ini
. . .
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 12M
. . .

接下来,搜索post_max_size upload_max_filesize设置仅适用于附件,此设置适用于整个电子邮件的大小(包括附件)。 为了防止死锁,我们将这个值设置为稍高一些。

/etc/php/7.0/apache2/php.ini
. . .
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 18M
. . .

最后,搜索mbstring.func_overload ,取消注释,并将其值设置为0.这样可以支持多字节字符串函数。

/etc/php/7.0/apache2/php.ini
. . .
mbstring.func_overload = 0
. . .

保存并关闭文件。

您的服务器现在已经安装了LAMP,Roundcube的依赖关系以及必要的PHP配置。 下一步是下载Roundcube软件,安装它并进行配置。

第2步 - 下载Roundcube

与Linux世界中的许多项目一样,有两种方式可以从包或源中安装Roundcube: 有一个用于Roundcube的PPA,但由于该项目正在积极发展,PPA往往已经过时。 (在撰写本文时,PPA版本为1.2.3,但项目本身为1.3)。 为了确保我们获得最新版本,我们将从源安装。

导航到Roundcube下载页面 在“ 稳定版本”部分下方查找“ 完整”软件包。 右键单击下载按钮,然后选择复制链接地址

使用这个地址与wget下载在服务器上的Roundcube tarball。

wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz

解压缩圆形档案。

tar -xvzf roundcubemail-1.3.0-complete.tar.gz

tar的参数可能有点吓人 ,所以这里是每个标志的作用:

  • x标志代表提取。
  • v标志代表verbose,它告诉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的文件是一个虚拟主机文件 虚拟主机是允许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

用文本编辑器打开文件。

sudo nano /etc/apache2/sites-available/roundcube.conf

我们需要对此文件进行一些更改。 首先我们将遍历其中的每一个,然后提供整个文件进行复制和粘贴。

在现有的VirtualHost块中,您将修改以下指令:

  • ServerName告诉Apache哪个域要监听。 这应该是您的服务器IP地址或域名,如果您使用的是。
  • DocumentRoot指定在进入时发送流量的位置。在我们的例子中,我们应该将它发送到/var/www/roundcube roundcube的Roundcube。
  • ServerAdmin允许您为Apache的任何问题指定联系人电子邮件地址。 我们没有在本教程中配置Apache,但最好是将其包括进来。
  • 两个记录行ErrorLogCustomLog定义了为此站点保存成功连接日志和错误日志的位置。 我们需要给出错误日志的具体名称,因此如果有问题,可以轻松找到特定于此站点的日志。

然后,您将添加一个新的Directory块,告诉Apache如何处理Roundcube目录。 Directory块每行中的第一个字是配置名称,后跟实际配置选项。

  • Options -Indexes告诉Apache,如果找不到index.htmlindex.php文件,则会显示警告。 默认情况下,它将列出目录的内容。
  • AllowOverride All告诉Apache,如果找到本地的.htaccess文件,该文件中的任何选项将覆盖此文件中的全局设置。
  • Order allow,deny告诉Apache首先允许匹配的客户端访问该网站,然后拒绝任何不匹配的。
  • allow from all是后续Order行。 它定义了允许什么类型的客户端,在我们的情况下是什么。

完成这些更改后,文件将会是这样的。 为了简洁起见,意见已被删除。

/etc/apache2/sites-available/roundcube.conf
<VirtualHost *:80>
  ServerName your_server_ip_or_domain
  DocumentRoot /var/www/roundcube
  ServerAdmin sammy@example.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停止托管默认站点。

sudo a2dissite 000-default

然后告诉Apache,开始托管Roundcube站点。 确保在启用站点时不要包含.conf a2ensite想要没有扩展名的配置文件名。

sudo a2ensite roundcube

启用Roundcube所需的mod_rewrite Apache模块。

sudo a2enmod rewrite

最后,重新启动Apache,这将使Roundcube安装可访问。

sudo apache2ctl restart

webmail客户端几乎可以使用。 安装过程的最后一步是配置数据库,因此Roundcube可以存储其应用程序特定的数据。

第4步 - 配置MySQL

此时,如果您打开Web浏览器并尝试访问您的服务器(通过IP地址或域名,如果您使用的是),您将看到一个配置错误页面。 这是因为Roundcube正在检查在配置设置期间生成的文件,但是我们还没有完成配置设置。 在我们完成这个设置之前,我们需要准备数据库。

连接到MySQL交互式shell。 该命令告诉MySQL作为用户( -u进行身份验证,我们将指定一个密码( -p )。

mysql -u root -p

输入命令后,系统将提示您输入安装MySQL时创建的根密码。

现在我们在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数据库及其所有表的所有权限。

GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';

然后保存更改并退出MySQL交互式shell。

FLUSH PRIVILEGES;
EXIT;

我们创建了一个空白数据库, 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安装,则会收到错误页面。 要完成安装,我们需要访问http:// your_server_ip_or_domain /installer

如果一切正常设置,除了几个选项之外,每个行项目都会有一个绿色的OK :可选的LDAP设置和除MySQL之外的每个数据库行。 如果除了刚才提到的任何其他行之外的一个NOT AVAILABLE ,您需要安装这些依赖项。 Roundcube有助于为任何缺少的依赖关系提供链接,以便您可以确定要安装的内容。

一旦所有设置正确,请向下滚动到页面底部,然后单击下一步按钮。

下一页的表单分为七个部分,逐步生成Roundcube配置文件。 以下是我们需要填写的表格部分,除以部分。 如果在下面的部分中排除了表单中的一行,您可以跳过该行并将其保留为默认设置。

一般配置

常规配置部分提供了一些用于自定义和一些一般设置的化妆选项。 在这里只能有一个选项:

  • 确保ip_check被打勾以提高安全性。 它在会话授权中检查客户端的IP。

您还可以进行一些可选的更改:

  • 您可以更改product_name 这可以是任何你想要的,并且所有对文本中的“圆形立方体”的引用将被替换为该名称。
  • support_url是一个用户可以获得RoundCube安装支持的URL。 它不是严格需要的,但如果为一组可能需要帮助的人提供Roundcube,可能会很好。 如果您没有专门的帮助台站点,可以使用电子邮件地址,例如mailto: sammy@example.com
  • 您可以使用skin_logo替换Roundcube徽标,该文件将URL连接到PNG文件(178px x 47px)。 如果要启用HTTPS(强烈建议,并在本教程后面将介绍),请确保映像URL是HTTPS URL。

所有其他选项可以保留其默认值。

日志和调试

将本节中的所有内容保留为默认设置。

数据库设置

Roundcube使用MySQL存储运行Web客户端(而不是您的电子邮件)的信息。 在本节中,您需要告诉Roundcube如何访问在第4步中设置的数据库。您需要先前创建的数据库用户,用户密码和数据库名称。

  • 应该已经设置好了,但是从数据库类型下拉菜单中选择MySQL
  • 输入数据库服务器的 localhost
  • 数据库名称字段中输入数据库名称roundcubemail
  • 在“ 数据库用户名”字段中输入数据库用户, roundcube
  • 对于“ 数据库密码”字段,输入在第4步中创建数据库时定义的密码。
  • 最后一个选项db_prefix不是必需的,除非您与其他应用程序一起使用共享数据库。 如果是这样,那么输入像rc_

IMAP设置

对于本节,您需要为电子邮件服务器提供IMAP和SMTP设置。 由于本教程使用Gmail作为示例,因此Gmail设置包含在下面,但如果您有自己的电子邮件提供商,则应提供您需要的详细信息。 大多数电子邮件提供商支持或不加密的连接。 确保使用SSL IMAP / SMTP URL和端口避免使用非安全连接。

  • default_host字段中,输入IMAP服务器URL。 使用SSL连接时,请使用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 @gmail.com使用user登录Roundcube。
  3. 确保选中了auto_create_user复选框。 如果未选中,Roundcube将不会在其自己的数据库中创建一个用户,这将阻止您登录。
  4. 现在,将所有* _mbox字段(如sent_mbox)保留为默认值。 这可以在Roundcube UI中稍后更新,大多数电子邮件客户端都使用这些文件夹名称。

SMTP设置

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

  1. smtp_server字段中输入SMTP服务器地址。 Gmail的SMTP服务器是ssl://smtp.gmail.com
  2. smtp_port字段中输入SSL SMTP服务器端口。 Gmail的SSL端口是465
  3. 因为SMTP和IMAP是两个单独的服务,它们都需要一个用户名和密码。 Roundcube可让我们选择使用上面设置的IMAP用户名和密码,因此我们不必在此重新设置。 这意味着您需要将字段留在smtp_user / smtp_pass空白处,并选中使用当前的IMAP用户名和密码进行SMTP身份验证
  4. 最后确保选中了smtp_log的复选框。

显示设置和用户偏好

我们将使用其默认值将所有这些选项。 如果要将Roundcube安装与其正在运行的操作系统不同的语言进行自定义,请通过单击配置页面上的RFC1766链接并更新语言字段来手动设置。

插件

Roundcube的插件支持是真正使这个网络邮件客户端脱颖而出的原因。 以下是您可以安装的一组好的默认值。 所有插件都是可选的,即。 他们没有必要使用Roundcube,但下面的列表是一个很好的设置,使经验更容易或更安全。

看看每个插件的说明,并安装任何你喜欢的。 如果您在此处未选择插件,则可以随时安装。 这只是使用这些插件预配置Roundcube。

  • 存档 :给你一个存档按钮,类似于Gmail的工作原理。
  • 表情符号 :简单易于在电子邮件中使用表情符号。
  • enigma :允许GPG电子邮件加密。 我们将在下一个安全教程中详细介绍如何进行配置。
  • filesystem_attachments :一个核心插件,用于在撰写或保存草稿电子邮件时临时保存Roundcube服务器的附件。
  • hide_blockquote :隐藏回复的电子邮件的引用部分,以保持UI更干净。
  • identity_select :如果您有多个电子邮件地址(身份),则可以在撰写电子邮件时轻松选择它们。
  • markasjunk :允许将电子邮件标记为垃圾邮件,并将其移动到“垃圾邮件”文件夹。
  • newmail_notifier :使用浏览器通知系统提醒您新的电子邮件。

最后,这是所有的配置。 按下页面底部的UPDATE CONFIG按钮保存设置。 让我们测试一切顺利。

第6步 - 测试Roundcube配置

更新配置后,页面将刷新,您将在页面顶部看到一个黄色信息框,其中说明配置文件已成功保存到您的Roundcube安装的RCMAIL_CONFIG_DIR目录中。

从这里,单击CONTINUE按钮来测试您的配置。 像依赖关系检查页面一样,如果没有错误,您将在每一行看到一个绿色的OK标记。 如果没有,请返回并仔细检查您输入的内容。

要测试其余配置,请在测试SMTP配置测试IMAP配置部分中输入您的IMAP和SMTP用户名和密码,然后分别单击发送测试电子邮件检查登录 如果测试成功,该页面将重新加载,您将在您测试的部分下看到绿色的“OK”。

注意:如果您使用Gmail并启用了两步认证,则需要生成应用专用密码,因为Roundcube不知道如何提示您的两步认证令牌。

一旦检查了SMTP和IMAP连接,并且都是绿色的,那么现在是跳回SSH会话并删除安装程序目录的时候了。 这将阻止其他人生成新配置并覆盖正确的设置。

sudo rm -rf /var/www/roundcube/installer/

现在您可以使用服务器的IP或域名访问您的Roundcube实例,登录并检查您的电子邮件。

结论

使用Roundcube,您可以具有本地桌面客户端的功能集和外观,具有Webmail客户端的灵活性。 您现在有一个功能齐全的安装,但是您需要采取一些额外的步骤,以确保您完全安全(例如为您的电子邮件添加HTTPS支持和使用GPG加密)。

另外,您可以安装新的主题,以增强客户端和插件的外观,以增加新功能。 插件不同,没有一个中心站点来找到主题,但是您可以找到Roundcube SkinsRoundcube论坛作为找到一些地方。