如何使用Nginx在Ubuntu 16.04上安装Roundcube Webmail

Roundcube是用PHP编写的免费开源Webmail软件。 网络邮件是浏览器中的邮件客户端,这意味着您也可以从网络浏览器访问电子邮件服务器,而不是从Thunderbird等台式机邮件客户端读取和发送电子邮件。 本教程将向您展示如何在具有Nginx,MariaDB和PHP7的Ubuntu 16.04 VPS上安装Roundcube Webmail。

先决条件

假设

  • 在Ubuntu 16.04上安装了Postfix SMTP服务器和Dovecot IMAP服务器
  • 您已经在Ubuntu 16.04上安装了LEMP堆栈(Nginx,MariaDB和PHP7)。

如果没有,请单击上面的链接,然后按照那些说明完成先决条件。 尽管本教程是为Ubuntu 16.04编写的,但可以轻松地将其改编为Debian,CentOS和Arch Linux。 现在开始吧。

步骤1:在Ubuntu 16.04上下载Roundcube Webmail

尽管Roundcube可从Ubuntu存储库中获得,但它需要Apache Web服务器作为依赖项。 我们正在使用Nginx Web服务器,因此我们从Github下载Roundcube并在没有Apache的情况下安装它。

下载最新的1.3.8稳定版本。

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

解压缩tarball并将新创建的文件夹移入Nginx文档根目录。

tar xvf roundcubemail-1.3.8.tar.gz

sudo mv roundcubemail-1.3.8 /usr/share/nginx/roundcubemail

让我们进入该目录。

cd /usr/share/nginx/roundcubemail

安装Composer,它是PHP的依赖项管理器。

sudo apt install composer

重命名 composer.json-dist 归档到 composer.json

mv composer.json-dist composer.json

要使用LDAP通讯录,请编辑 composer.json 文件。

nano composer.json

将项目移入 "suggest""require"如下部分。 删除版本号之后的说明文本。 另请注意,最后一项不以逗号结尾。

保存并关闭文件。 然后安装PHP LDAP扩展。

sudo apt install php-net-ldap2 php-net-ldap3

接下来,使用Composer为Roundcube Webmail安装所有必需的依赖项(第三方库)。

sudo composer install --no-dev

您可能会发现系统中缺少PHP扩展名php-gd。 您可以使用以下命令安装它,然后重新运行composer命令。

sudo apt install php7.0-gd

安装JavaScript依赖项。

sudo apt install unzip

sudo ./bin/install-jsdeps.sh

将Nginx用户(www-data)设置为temp和logs目录的所有者,以便Nginx可以写入这两个目录。

sudo chown www-data:www-data temp/ logs/ -R

步骤2:为Roundcube创建MariaDB数据库和用户

以root用户身份登录MariaDB shell。

sudo mysql -u root

注意:在Ubuntu 16.04上,MariaDB使用unix_socket验证用户登录名。 以root用户登录时,需要在命令前加上命令 sudo 并输入您的密码。 (您不需要输入MariaDB root用户密码,如下所示。)

mysql -u root -p

然后使用以下命令为Roundcube创建一个新数据库。 本教程将其命名 roundcubemail,您可以为数据库使用任意名称。

create database roundcubemail;

接下来,使用以下命令在localhost上创建一个新的数据库用户。 同样,本教程将其命名为 roundcubeuser,您可以使用任何喜欢的名称。

create user [email protected];

为用户设置密码。 用您的首选密码替换您的密码。

set password for [email protected]= password("your-password");

然后将新数据库的所有权限授予新用户,以便以后在Roundcube Webmail上可以写入数据库。

grant all privileges on roundcubemail.* to [email protected] identified by 'your-password';

清除特权以使更改生效。

flush privileges;

退出MariaDB Shell:

exit;

将初始表导入到roundcubemail数据库。

mysql -u roundcubeuser -p roundcubemail < /usr/share/nginx/roundcubemail/SQL/mysql.initial.sql

输入密码 roundcubeuser。 您稍后需要在“ config / db.inc.php”中指定此密码。

步骤3:为Roundcube创建Nginx服务器阻止文件

在下面创建服务器阻止文件 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/mail.your-domain.com.conf

将以下文本放入文件中。 替换域名。

server {
 listen 80;
  server_name mail.your-domain.com;
  root /usr/share/nginx/roundcubemail/;
  index index.php index.html index.htm;

  error_log /var/log/nginx/roundcube.error;
  access_log /var/log/nginx/roundcube.access;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
    deny all;
  }
  location ~ ^/(bin|SQL)/ {
    deny all;
  }

  location ~ .php$ {
   try_files $uri =404;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

  location ~ /.well-known/acme-challenge {
    allow all;
  }
}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

步骤4:启用HTTPS

强烈建议您使用TLS加密网络邮件。 如果Roundcube,Postfix和Dovecot安装在同一台计算机上,则可以重复使用为Postfix和Dovecot创建的TLS证书。 如果Roundcube安装在单独的计算机上,那么您始终可以从Let’s Encrypt获得免费证书。

首先,安装“让我们加密客户端(certbot)”。

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot 
sudo apt update
sudo apt install certbot python3-certbot-nginx

然后使用nginx插件从Let’s Encrypt获取TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --email your-email-address -d mail.your-domain.com

步骤5:在Web浏览器中完成安装

在您的Web浏览器中,转到Roundcube安装程序页面。

https://mail.your-domain.com/installer

Web安装程序将首先检查是否安装了PHP扩展,数据库和第三方库。

Ubuntu 16.04 Roundcube Nginx

执行以下命令以安装所有必需和可选的PHP扩展。

sudo apt install php7.0-mbstring php7.0-xml php7.0-mysql php7.0-common php7.0-gd php7.0-json php7.0-cli php7.0-curl php7.0-intl php-imagick

重新加载PHP-FPM以启用这些扩展。

sudo systemctl reload php7.0-fpm

然后刷新Roundcube安装程序页面,然后单击下一步。 在第二步中,您需要填写先前创建的MariaDB数据库详细信息。

roundcube webmail mariadb设置

在“ IMAP和SMTP”部分中,输入您自己的后缀SMTP服务器和Dovecot IMAP服务器的详细信息。 要在IMAP上使用SSL / TLS连接,请输入带前缀的主机名 ssl:// 。 用于安全IMAPS连接的端口号是993。 (我记得在以前的Roundcube版本中,您可以使用前缀 imaps:// 与主机名。 它可能不再起作用。)

roundecube imap ssl主机名

在“ SMTP设置”中,输入带有前缀的电子邮件服务器主机名 tls:// 以在端口587上使用STARTTLS。如果您的电子邮件服务器支持SMTPS,则输入带有前缀的电子邮件服务器主机名 ssl:// 在端口465上使用SSL。在 smtp_usersmtp_pass 字段,输入 %u%p 分别。

Roundcube Webmail SMTP设置

接下来,您可以向下滚动到 Plugins 部分以启用某些插件。 例如:密码插件,标记为垃圾插件等等。

完成后,点击 create config 按钮,它将根据您输入的信息创建配置。 您需要复制配置并将其另存为 config.inc.php/usr/share/nginx/roundcube/config/ 目录。

roundcube-webmail-config-inc-php

单击继续按钮。 在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。

roundcube安装程序测试SMTP和IMAP

如果测试失败,则可以单击 2. Create config 页面顶部的链接返回第2步,然后重新创建config.inc.php文件。

如果测试成功,请转到您的Webmail域,而无需 /installer 并登录。

Ubuntu 16.04 roundcube Lemp堆栈

Roundcube Webmail界面

roundcube Webmail界面

现在,您应该从文档根目录中删除整个安装程序文件夹,或者确保已禁用config.inc.php中的enable_installer选项。

sudo rm /usr/share/nginx/roundcubemail/installer/ -r

这些文件可能向公众公开敏感的配置数据,例如服务器密码和加密密钥。 确保您无法从浏览器访问此安装程序。

我希望本教程可以帮助您在具有Nginx,MariaDB和PHP7的Ubuntu 16.04上安装Roundcube Webmail。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯,或在Google +,Twitter或喜欢我们的Facebook页面上关注我们。

Sidebar