如何使用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扩展,数据库和第三方库。
执行以下命令以安装所有必需和可选的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数据库详细信息。
在“ IMAP和SMTP”部分中,输入您自己的后缀SMTP服务器和Dovecot IMAP服务器的详细信息。 要在IMAP上使用SSL / TLS连接,请输入带前缀的主机名 ssl://
。 用于安全IMAPS连接的端口号是993。 (我记得在以前的Roundcube版本中,您可以使用前缀 imaps://
与主机名。 它可能不再起作用。)
在“ SMTP设置”中,输入带有前缀的电子邮件服务器主机名 tls://
以在端口587上使用STARTTLS。如果您的电子邮件服务器支持SMTPS,则输入带有前缀的电子邮件服务器主机名 ssl://
在端口465上使用SSL。在 smtp_user
和 smtp_pass
字段,输入 %u
和 %p
分别。
接下来,您可以向下滚动到 Plugins
部分以启用某些插件。 例如:密码插件,标记为垃圾插件等等。
完成后,点击 create config
按钮,它将根据您输入的信息创建配置。 您需要复制配置并将其另存为 config.inc.php
在 /usr/share/nginx/roundcube/config/
目录。
单击继续按钮。 在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。
如果测试失败,则可以单击 2. Create config
页面顶部的链接返回第2步,然后重新创建config.inc.php文件。
如果测试成功,请转到您的Webmail域,而无需 /installer
并登录。
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页面上关注我们。