Ubuntu如何使用Roundcube安装自己的Webmail客户端

介绍

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

Roundcube是一个用PHP编写的现代可定制的基于IMAP的Webmail客户端。它具有大量用于查看,组织和撰写电子邮件的功能,以及对联系人和日历管理的支持。通过其插件存储库,您可以添加与最流行的基于浏览器的客户端相当的功能。

要了解Roundcube在您的电子邮件基础架构中的位置,让我们来看看幕后构成电子邮件的组件:

  • 邮件用户代理(MUA)是用户与之交互以查看和发送电子邮件的接口。
  • 邮件传输代理(MTA)传递邮件。
  • 简单邮件传输协议(SMTP)是MUA用于向MTA发送邮件的协议。
  • 邮件投递代理(MDA)的从MTA接收电子邮件并将其存储。
  • Internet消息访问协议(IMAP)是MDA用于向MUA传递邮件的协议。

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

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

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

准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04服务器,包括一个拥有sudo权限的非root用户。
  • 搭建LAMP环境
  • 基于IMAP的电子邮件服务器。为简单起见,本文将使用Gmail,但任何基于IMAP的电子邮件服务器都可以使用。确保您知道电子邮件服务器的IMAP和SMTP设置。

第1步 - 安装依赖项

设置Roundcube的第一步是安装其依赖项并配置PHP。安装Roundcube后,我们可以使用其有用的依赖性检查页面来验证是否已正确设置所有内容。

这些是未包含在内的Roundcube依赖项:

  • 几个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。用文本编辑器打开此文件。

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

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

搜索包含许多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设置。取消注释该行并将您的时区添加到引号中。例如,如果您在中国,您的文件可能如下所示:

/etc/php/7.0/apache2/php.ini

. . .
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Shanghai"
. . .

接下来,搜索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

解压缩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文件是一个虚拟主机文件。虚拟主机是一种允许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指定在进入时发送流量的位置。在我们的例子中,我们应该将流量发送到Roundcube /var/www/roundcube
  • ServerAdmin允许您为Apache的任何问题指定联系人电子邮件地址。我们没有在本教程中配置Apache来执行此操作,但无论如何最好包含它。
  • ErrorLogCustomLog,定义在哪里保存成功连接日志和错误日志。我们需要为错误日志指定特定名称,以便在出现问题时,可以轻松找到特定于此站点的日志。

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

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

这是您进行这些更改后文件。

/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所需的Apache mod_rewrite模块。

$ sudo a2enmod rewrite

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

$ sudo apache2ctl restart

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

第4步 - 配置MySQL

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

连接到MySQL交互式shell。此命令告诉MySQL作为user(-uroot进行身份验证,并且我们将指定密码(-p)。

$ mysql -u root -p

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

现在我们在MySQL shell中,我们将创建一个数据库和一个数据库用户,然后授予该用户在该新数据库上执行命令的权限。

首先创建数据库。此命令创建一个名为roundcubemail的数据库,然后提供数据库选项,例如要使用的字符集(utf8)。

mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;

与许多其他身份验证系统不同,MySQL通过名称和用户连接的位置定义用户。此命令创建一个名为roundcube的用户,并定义要从localhost中进行连接的用户。对于访问数据库的应用程序,定义用户发出请求的位置有助于加强安全性。

创建此用户,确保将密码更改为安全的密码。

mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password';

roundcube用户授予对roundcubemail数据库及其所有表的所有权限。

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

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

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

我们创建了一个空白数据库,roundcubemail,和用户,roundcube@localhost。然后为该用户授予了对数据库的完全权限。现在我们需要设置数据库的结构,以便Roundcube知道保存其信息的位置。Roundcube提供了一个为我们配置数据库的文件,因此我们不必手动完成。

以下命令告诉MySQL使用我们新创建的用户读入文件/var/www/roundcube/SQL/mysql.initial.sql并将配置应用于数据库roundcubemail

mysql> 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有助于为任何缺失的依赖项提供链接,以便您可以找出要安装的内容。

完成所有设置后,向下滚动到页面底部,然后单击“ 下一步”按钮。

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

一般配置

常规配置部分提供了个性化设置和一般设置。在这里您只需要改变一个选项:

  • 确保勾选ip_check以获得更高的安全性。它在会话授权中检查客户端的IP。

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

  • 您可以更改product_name。所有“Roundcube”将被这个名字代替。
  • SUPPORT_URL是一个URL,用户可以得到他们的Roundcube安装支持。这不是必须的,但如果为可能需要帮助的一群人提供这项服务可能会很好。如果您没有专门的服务台站点,则可以使用电子邮件地址,例如。mailto:sammy@example.com
  • 您可以使用skin_logo替换Roundcube标志,这需要一个PNG文件的URL(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连接时,请在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。
  • 确保选中auto_create_user复选框。如果未选中,Roundcube将不会在其自己的数据库中创建用户,这将阻止您登录。
  • 现在,将所有*_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的插件支持使这个webmail客户端脱颖而出。以下是一组可以安装的默认设置。所有插件都是可选的。如果您未在此处选择插件,则可以在以后随时安装。

  • 存档:为您提供类似于Gmail的存档按钮。
  • 表情符号:使在电子邮件中使用表情符号更容易。
  • enigma:允许GPG电子邮件加密。
  • filesystem_attachments:一个核心插件,允许在撰写或保存草稿电子邮件时临时保存附件到Roundcube服务器。
  • hide_blockquote:隐藏已回复电子邮件的引用部分以保持UI更清洁。
  • identity_select:如果您有多个电子邮件地址(身份),则可以在撰写电子邮件时轻松选择它们。
  • markasjunk:允许将电子邮件标记为垃圾邮件并将其移至垃圾邮件文件夹。
  • newmail_notifier:使用浏览器通知系统提醒您收到新电子邮件。

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

第6步 - 测试Roundcube配置

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

在此处,单击CONTINUE按钮以测试您的配置。与依赖性检查页面一样,如果没有错误,您将在每一行上看到绿色的OK标记。如果没有,请返回并仔细检查您输入的内容。

要测试其余配置,请在Test SMTP configTest IMAP config部分中输入您的IMAP和SMTP用户名和密码,然后分别单击Send test emailCheck login。如果测试成功,页面将重新加载,您将在测试的部分下看到绿色的“确定”。

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

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

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

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

结论

使用Roundcube,您现在拥有一个功能齐全的Webmail客户端,但是您应该采取一些额外的步骤来确保您完全安全(例如添加HTTPS支持并为您的电子邮件使用GPG加密)。您可以按照如何在Ubuntu 16.04上保护Roundcube来完成此操作。


参考文献:《How To Install Your Own Webmail Client with Roundcube on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博客园迁移

jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

1.先配置好jenkins需要用到的其他外部组件  jdk,maven,git/svn

25030
来自专栏铭毅天下

干货 | Elasticsearch 集群健康值红色终极解决方案

题记 Elasticsearch当清理缓存( echo 3 > /proc/sys/vm/drop_caches )的时候,出现 如下集群健康值:red,红...

93480
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

42000
来自专栏用户2442861的专栏

每天一个linux命令(61):wget命令

http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

26420
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装MySQL

MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分来进行安装...

40210
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Ajenti控制面板和Ajenti V.

Ajenti是一个基于Web的开源控制面板,可用于各种服务器管理任务。它可以安装软件包和运行命令,您可以查看基本的服务器信息,如正在使用的RAM,可用磁盘空间等...

51120
来自专栏陈树义

高效开发技巧:为什么你下载Git项目这么慢?

笔者所在公司采用的是 GitLab 进行版本管理,但许多同事下载 Git 项目的路径是这样的: 打开浏览器 -> 输入网址 -> 查找项目地址 -> 复制项目...

37540
来自专栏编程微刊

微信小程序从零开始开发步骤(六)4种页面跳转的方法

19030
来自专栏云计算教程系列

如何在服务器上安装LAMP

在本教程中,我们将在Ubuntu上安装LAMP。Ubuntu将满足我们的第一个要求:Linux操作系统。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免...

59320
来自专栏weixuqin 的专栏

Django 实现第三方账号登录网站

  这里我们使用 django-allauth 模块来实现第三方账号验证登录,官方文档如下:https://django-allauth.readthedocs...

26710

扫码关注云+社区

领取腾讯云代金券