-
使用Apache/Nginx在Ubuntu 18.04上安装Roundcube Webmail
Roundcube是一个用PHP编写的免费开源、功能齐全的webmail客户端。webmail是浏览器中的邮件客户端,这意味着您可以从web浏览器访问电子邮件,而不是从Mozilla Thunderbird这样的桌面邮件客户端读取和发送电子邮件。本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu18.04上安装Roundcube webmail。 圆形立方体特征 Roundcube的功能包括: 通讯录 文件夹管理 消息搜索 消息过滤器 拼写检查 MIME支持 PGP加密和签名 用户可以在Roundcube中更改密码。 Roundcube 1.4版本 Roundcube 1.4经过两年的开发,于2019年11月10日发布。此版本的特点是: 一种称为弹性皮肤的灵敏皮肤,具有全方位移动设备支持 电子邮件重新发送(反弹)功能 改进的MailDevelope集成 支持Redis和Memcached缓存 支持SMTPUTF8和GSSAPI 再加上许多改进和错误修复 先决条件 为了学习本教程,假设 Postfix SMTP服务器和Dovecot IMAP服务器已安装在您的Ubuntu 18.04服务器上 您已经在Ubuntu 18.04服务器上安装了LAMP堆栈或LEMP堆栈。 如果没有,请单击以上链接并按照说明完成先决条件。请注意,如果您以前使用iRedMail设置过电子邮件服务器,那么您的服务器满足所有要求,并且Roundcube已经安装在您的服务器上。 现在让我们继续安装Roundcube。 第一步:在Ubuntu 18.04上下载Roundcube Webmail 通过SSH登录Ubuntu服务器,然后运行以下命令从Roundcube Github存储库下载最新的1.4稳定版本。 wgethttps://github.com/roundcube/roundcubemail/releases/download/1.4.0/roundcubemail-1.4.0-complete.tar.gz 注意:您可以始终使用上述URL格式从命令行下载Roundcube。如果出现新版本,只需用新版本号替换1.4.0即可。您可以在Roundcube下载页面查看是否有新版本。 提取tarball,将新创建的文件夹移动到web根目录(/var/www/),同时将其重命名为roundcube。 tar xvf roundcubemail-1.4.0-complete。焦油gz sudo mv RoundCubeEmail-1.4.0/var/www/roundcube 第2步:安装依赖项 运行以下命令安装所需的PHP扩展。 sudo apt安装php-net-ldap2 php-net-ldap3 php-imagick php7。2-常见php7。2-gd php7。2-imap php7。2-json php7。2-卷曲php7。2-zip php7。2-xml php7。2-Mb字符串php7。2-bz2 php7。2-intl php7。2-gmp 安装Composer,它是PHP的依赖项管理器。 sudo-apt-install-composer 切换到roundcube目录。 cd/var/www/roundcube 使用Composer安装Roundcube Webmail所需的所有依赖项(第三方库)。 composer安装--无开发人员 如果看到“无需安装或更新”消息,则所有依赖项都已安装。 使web服务器用户(www数据)成为临时和日志目录的所有者,以便web服务器可以写入这两个目录。 sudo chown www data:www data temp/logs/-R 步骤3:为Roundcube创建MariaDB数据库和用户 以root用户身份登录MariaDB shell。 sudo mysql-u root 然后使用以下命令为Roundcube创建一个新数据库。本教程将其命名为roundcube,您可以对数据库使用任何您喜欢的名称。 创建数据库roundcube默认字符集utf8 COLLATE utf8_general_ci; 接下来,使用以下命令在localhost上创建一个新的数据库用户。同样,本教程将其命名为roundcubeuser,您可以使用任何您喜欢的名称。用首选密码替换密码。 创建用户roundcubeuser@localhost由“密码”标识; 然后将新数据库的所有权限授予新用户,以便稍后Roundcube webmail可以写入数据库。 授予roundcube上的所有权限。*到roundcubeuser@localhost; 刷新特权表以使更改生效。 同花顺特权; 退出MariaDB外壳: 出口 将初始表导入roundcube数据库。 sudo mysql roundcube</var/www/roundcube/SQL/mysql。最初的sql 步骤4:为Roundcube创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用Apache web服务器,请为Roundcube创建一个虚拟主机。 sudo nano/etc/apache2/网站可用/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除本文件中在第2部分中添加的文本,并在下面添加新文本。) sudo nano/etc/apache2/sites available/mail。实例通用域名格式。形态 将以下文本放入文件中。替换邮件。实例com与你的真实域名,别忘了为它设置DNS记录。 <;虚拟主机*:80>;服务器名邮件。实例com DocumentRoot/var/www/roundcube/ErrorLog${APACHE_LOG_DIR}/roundcube_error。log CustomLog${APACHE_log_DIR}/roundcube_访问。日志合并<;目录/>;选项如下SymLinks AllowOverride All</目录>&书信电报;目录/var/www/roundcube/>;选项如下SymLinks Multiview allow Override All Order allow,deny allow from All</目录></VirtualHost>; 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite圆形立方体。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. Nginx 如果使用Nginx web服务器,请为Roundcube创建虚拟主机。 sudo nano/etc/nginx/conf.d/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除本文件中在第2部分中添加的文本,并在下面添加新文本。) sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 将以下文本放入文件中。替换域名,不要忘记为其设置DNS记录。 服务器{listen 80;listen[:]:80;server_name mail.example.com;root/var/www/roundcube/;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;}地点~/。php${try_files$uri=404;fastcgi_pass unix:/run/php/php7.2-fpm.sock;fastcgi_index index.php;fastcgi_脚本_文件名$document_root$fastcgi_脚本_name;包含fastcgi_参数;}地点~/。著名的/acme挑战{allow all;}位置~^/(自述文件|安装|许可证|更改日志|升级)${deny all;}位置~^/(bin | SQL)/{deny all;}较长的浏览器缓存寿命可以加快对页面位置的重复访问~*/。(jpg | jpeg | gif | png | webp | svg | woff | woff2 | ttf | css | js | ico | xml)${accesslog off lognot found off;expires 360d;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. 第5步:启用HTTPS 强烈建议您使用TLS加密您的网络邮件。我们可以通过安装Let's Encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu18.04服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d mail。实例通用域名格式 如果使用Apache,请安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d mail。实例通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 注意:如果您遵循了我的Postfix/Dovecot教程,现在在同一台服务器上安装了Roundcube,那么certbot可能会告诉您邮件的证书。实例com已经存在,如下所示,因此您可以选择将现有TLS证书安装到web服务器配置文件中。 步骤6:添加本地DNS条目 建议在邮件服务器上编辑/etc/hosts文件并添加以下条目,这样Roundcube就不必查询公共DNS,这将稍微加快网页加载速度。 127.0.0.1本地主机邮件。实例通用域名格式 第7步:在Web浏览器中完成安装 在web浏览器中,转到Roundcube安装程序页面。 web安装程序将首先检查是否安装了PHP扩展、数据库和第三方库。如果你遵循本教程,那么所有的要求都应该得到满足。 点击下一步按钮。在第2页中,您需要填写之前创建的MariaDB数据库详细信息。 IMAP和SMTP部分允许您配置如何接收和提交电子邮件。为IMAP输入以下值。 IMAP主机:ssl://mail.example.com港口:993 为SMTP设置输入以下值。 SMTP端口:tls://mail.example.com港口:587。请注意,必须使用tls://作为端口587的前缀。端口465应使用ssl://前缀  ; 接下来,您可以向下滚动到Plugins部分来启用一些插件。例如:密码插件、标记为垃圾插件等等。我启用了所有这些。 完成后,单击创建配置按钮,该按钮将根据您输入的信息创建配置。您需要复制配置并将其另存为config。inc.php位于/var/www/roundcube/config/目录下。 一旦打开配置。创建inc.php文件后,单击“继续”按钮。在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。请注意,在测试SMTP配置时,需要在发件人字段中输入完整的电子邮件地址。 如果测试失败,则可以单击2。在页面顶部创建配置链接,返回步骤2并重新创建配置。inc.php文件。 如果测试成功,请在不使用/installer的情况下转到您的Webmail域并登录。 Roundcube网络邮件接口 现在,您应该从文档根目录中删除整个安装程序文件夹,或者确保在配置中启用_安装程序选项。inc.php文件已禁用。 sudo rm/var/www/roundcube/installer/-r 这些文件可能会向公众公开服务器密码和加密密钥等敏感配置数据。确保无法从浏览器访问安装程序页面。 步骤8:配置筛选消息过滤器 您可以在Roundcube webmail中创建文件夹,然后创建规则将电子邮件过滤到不同的文件夹中。为此,需要使用以下命令安装ManageSieve服务器。 sudo apt安装多佛科特筛网多佛科特筛网 默认情况下,Postfix使用其内置的本地传递代理(LDA)将入站电子邮件移动到消息存储(收件箱、已发送邮件、垃圾、垃圾邮件等)。我们可以将其配置为使用Dovecot通过LMTP协议发送电子邮件,LMTP协议是SMTP的简化版本。LMTP允许一个高度可扩展和可靠的邮件系统,如果你想使用sieve插件过滤到不同文件夹的入站邮件,它是必需的。 安装Dovecot LMTP服务器。 sudo apt安装dovecot lmtpd 编辑Dovecot主配置文件。 sudo nano/etc/dovecot/dovecot。形态 将lmtp和SIVE添加到支持的协议中。 协议=imap lmtp筛 保存并关闭文件。然后编辑Dovecot 10母版。conf文件。 sudo nano/etc/dovecot/conf.d/10-master。形态 将lmtp服务定义更改为以下内容。 服务lmtp{unix_listener/var/spool/postfix/private/dovecot lmtp{group=postfix mode=0600 user=postfix} 接下来,编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。第一行告诉Postfix通过dovecot LMTP服务器将电子邮件发送到本地消息存储。第二行在后缀中禁用SMTPUTF8,因为Dovecot LMTP不支持此电子邮件扩展。 邮箱_transport=lmtp:unix:private/dovecot lmtp smtputf8_enable=no 保存并关闭文件。打开/etc/dovecot/conf.d/15-lda。conf文件。 sudo nano/etc/dovecot/conf.d/15-lda。形态 滚动到文件末尾,取消对mail_plugins行的注释,并将sieve插件添加到本地交付代理(LDA)。 协议lda{#要加载的插件的空格分隔列表(默认为全局邮件插件)。邮件插件=$mail_插件筛} 保存并关闭文件。如果你能找到20个lmtp。conf文件位于/etc/dovecot/conf.d/目录下,那么您还应该在该文件中启用sieve插件,如下所示。 协议lmtp{mail_plugins=quota sieve} 编辑/etc/dovecot/conf.d/10-mail。conf文件。 sudo nano/etc/dovecot/conf.d/10-mail。形态 筛选脚本存储在每个用户的主目录下。如果您遵循我的PostfixAdmin教程并使用虚拟邮箱域,那么您需要通过在文件中添加以下行来为虚拟用户启用mail_home,因为默认情况下虚拟用户没有主目录。 mail_home=/var/vmail/%d/%n 保存并关闭文件。 最后,重新启动Postfix和Dovecot。 sudo systemctl重启后缀dovecot 现在,您可以转到Roundcube webmail,打开一封电子邮件并单击“更多”按钮,然后选择“创建过滤器”以创建邮件过滤器。例如,我创建了一个过滤器,可以移动从redhat发送的所有电子邮件。com转到Red Hat文件夹。 如果您没有创建过滤器选项,可能是因为您没有启用ManageSeeve插件。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 在该文件末尾的数组中添加managesieve插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','managesieve',…); 保存并关闭文件。 请注意,如果将筛选过滤器集从旧邮件服务器移动到新邮件服务器,则需要转到设置->;筛选,然后单击操作并启用筛选集,否则Dovecot LMTP服务器将不执行筛选筛选。 第9步:从电子邮件标题中删除敏感信息 默认情况下,Roundcube将添加一个用户代理电子邮件头,指示您正在使用Roundcube webmail和版本号。你可以告诉Postfix忽略它,这样收件人就看不到它了。运行以下命令创建头检查文件。 sudo nano/etc/postfix/smtp_头_检查 将以下行放入文件中。 /^用户代理*Roundcube网络邮件/忽略 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。 smtp_header_checks=regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap/etc/postfix/smtp头检查 重新加载后缀以使更改生效。 sudo systemctl重新加载后缀 现在,Postfix在发送邮件时不会在邮件头中包含User Agent:Roundcube Webmail。 第10步:在Roundcube中配置密码插件 Roundcube包含一个密码插件,允许用户从webmail界面更改密码。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 确保此文件末尾的插件列表中有密码插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','password',…); 保存并关闭文件。 然而,我们需要先配置这个插件,然后它才能工作。编辑密码插件配置文件。运行以下命令将分布式密码插件配置文件复制到新文件。 sudo cp/var/www/roundcube/plugins/password/config。inc.php。dist/var/www/roundcube/plugins/password/config。php公司 编辑密码插件配置文件。 sudo nano/var/www/roundcube/plugins/password/config。php公司 找到以下行: $config['password_db_dsn']=''; 此参数用于告诉密码插件用户密码的存储位置。默认情况下,该值为空,它将查询不存储用户密码的roundcube数据库。如果您遵循了我的PostfixAdmin教程,那么用户密码将存储在PostfixAdmin中。邮箱表,因此我们需要将值更改为: $config['password_db_dsn']='mysql://postfixadmin:postfixadmin_database_password@127.0.0.1/postfixadmin'; 通知密码插件连接到postfixadmin数据库。如果您不记得postfixadmin数据库密码,可以在/etc/dovecot/dovecot sql中找到它。conf.ext文件。如果您的PostfixAdmin密码包含一个引号字符,那么您可以使用反斜杠(/')对其进行转义。 然后找到下面一行。 $config['password_query']=“选择更新密码(%c,%u)”; 将其更改为以下内容。 $config['password_query']='UPDATE mailbox SET password=%D,modified=NOW(),其中username=%u'; 我建议启用密码强度检查器,以防止用户设置密码。转到该文件的开头,可以找到以下行。 $config['passwordu strengthu driver']=null; 我们可以使用ZXCVN密码强度驱动程序,因此将其更改为: $config['password_strength_driver']=“zxcvn”; 在此文件中添加以下行以仅允许强密码。 $config['password_zxcvn_min_score']=5; 注意:$config['password_minimum_score']参数不适用于zxcvn驱动程序,所以请不要管它。 您还可以设置密码的最小长度。找到下面这行。 $config['password_minimum_length']=0; 将其更改为: $config['password_minimum_length']=8; 回想一下,我们在PostfixAdmin教程中使用了ARGON2I密码方案,因此我们还需要配置密码插件以使用ARGON2I。在文件中找到以下行。 $config['password_algorithm']='clear'; 默认情况下,密码将以明文形式存储,将值更改为以下值以使用Dovecot的内置密码算法。 $config['password_algorithm']='dovecot'; 然后找到下面一行,它告诉Dovecot的密码散列生成器位于何处。 $config['password_dovecotpw']='/usr/local/sbin/dovecotpw';//多佛科特一号。十、 将其更改为以下内容。 $config['password_dovecotpw']='/usr/bin/doveadm pw-r 5'; 然后找到下面一行,它告诉我们将使用哪个密码方案。 $config['password_dovecotpw_method']='CRAM-MD5'; 将其更改为: $config['password_dovecotpw_method']='ARGON2I'; 找到下面这行。 $config['password_dovecotpw_with_method']=false; 变假为真。这将在散列密码中添加一个{ARGON2I}前缀,以便您识别所使用的密码方案。 $config['password_dovecotpw_with_method']=true; 保存并关闭文件。由于该文件包含数据库密码,我们应该只允许www数据用户读取和写入该文件。 sudo chown www-data:www-data/var/www/roundcube/plugins/password/config。inc.php sudo chmod 600/var/www/roundcube/plugins/password/config。php公司 现在,用户应该能够在Roundcube webmail界面中更改密码。 如何设置假期/外出消息 我们可以使用筛选过滤器创建休假/外出消息。转到Roundcube设置->;过滤器。然后单击“创建”按钮创建过滤器。 给这个文件管理器起一个类似“外出”的名字。 新过滤器未被禁用,因此您可以不使用该按钮。 在范围字段中,选择所有消息。 在操作设置中选择Replay with message,然后输入将自动发送的消息。 在发送消息的频率中输入1。将其他文本字段留空。 点击保存按钮,你就完成了。 回到办公室后,可以切换“过滤器禁用”按钮,然后单击“保存”按钮禁用此过滤器。 增加上传文件大小限制 如果使用PHP-FPM运行PHP脚本,则上传到Roundcube的图像、PDF文件等文件不能大于2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano/etc/php/7.2/fpm/php。伊尼 找到下面一行(第846行)。 上传最大文件大小=2M 如下所示更改值。请注意,此值不应大于Postfix SMTP服务器设置的附件大小限制。 上传最大文件大小=50M 然后找到下一行(第694行)。 立柱最大尺寸=8M 更改PHP将接受的POST数据的最大大小。 立柱最大尺寸=50M 保存并关闭文件。或者,您可以运行以下两个命令来更改值,而无需手动打开文件。 sudo sed-i's/upload_max_filesize=2M/upload_max_filesize=50M/g'/etc/php/7.4/fpm/php。ini sudo sed-i's/post_max_size=8M/post_max_size=50M/g'/etc/php/7.4/fpm/php。伊尼 然后重启PHP-FPM。 sudo systemctl重启php7。2-fpm Nginx还设置了上传文件大小的限制。Nginx设置的默认最大上传文件大小限制为1MB。如果使用Nginx,请编辑Nginx配置文件。 sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 在SSL虚拟主机中添加以下行。 客户最大身体尺寸50米; 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx Roundcube中有3个用于附件/文件上传的插件: 数据库附件 文件系统附件 冗余附件 Roundcube只能使用一个插件来上传附件/文件。我发现数据库附件插件很容易出错,给你带来麻烦。要禁用它,请编辑Roundcube配置文件。 sudo nano/var/www/roundcube/config/config。php公司 向下滚动到此文件的末尾。您将看到一个活动插件列表。从列表中删除“数据库附件”。保存并关闭文件。 设置多个邮件域 要承载多个邮件域,请阅读以下文章: 如何在Ubuntu上的PostfixAdmin中托管多个邮件域 故障排除提示 如果遇到错误,可以在/var/log/apache2/roundcube_error上查看web服务器错误日志。log(如果您使用的是Apache),或/var/log/nginx/roundcube。错误(如果您使用的是Nginx。),Roundcube错误也会记录在/var/www/Roundcube/logs/目录中。 与存储服务器的连接失败 如果您在尝试登录RoundCube时看到“连接到存储服务器失败”错误,可能是因为 Dovecot服务器未运行。您可以使用sudo systemctl restart Dovecot重新启动Dovecot,并使用systemctl status Dovecot检查其状态。 您正在使用自签名的TLS证书。Roundcube需要由受信任的证书颁发机构(如Let's Encrypt)颁发的有效TLS证书。 你的TLS证书过期了。您可以使用sudo certbot renew续订Let's Encrypt TLS证书,然后重新启动Postfix和Dovecot(sudo systemctl restart Postfix Dovecot)。 您还可以尝试在Roundcube服务器上的/etc/hosts文件中添加自定义DNS条目,如步骤8所述,以便Roundcube可以正确解析邮件服务器主机名。 无法从服务器加载邮件 如果您看到“内部错误:无法从服务器加载邮件”错误,可能是因为您试图打开已删除的电子邮件(无效URL)。尝试转到邮件根域(mail.example.com)查看它是否有效。 收尾 我希望本教程能帮助您在Ubuntu 18.04上安装Roundcube Webmail。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和窍门?
-
使用Apache/Nginx在Ubuntu 20.04上安装Roundcube Webmail
Roundcube是一个用PHP编写的免费开源、功能齐全的webmail客户端。webmail是浏览器中的邮件客户端,这意味着您可以从web浏览器访问电子邮件,而不是从Mozilla Thunderbird这样的桌面邮件客户端读取和发送电子邮件。本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu20.04上安装Roundcube webmail。 圆形立方体特征 Roundcube的功能包括: 通讯录 文件夹管理 消息搜索 消息过滤器 拼写检查 MIME支持 PGP加密和签名 用户可以在Roundcube中更改密码。 Roundcube 1.4版本 Roundcube 1.4经过两年的开发,于2019年11月10日发布。此版本的特点是: 一种称为弹性皮肤的灵敏皮肤,具有全方位移动设备支持 电子邮件重新发送(反弹)功能 改进的MailDevelope集成 支持Redis和Memcached缓存 支持SMTPUTF8和GSSAPI 再加上许多改进和错误修复 先决条件 为了学习本教程,假设 Postfix SMTP服务器和Dovecot IMAP服务器已安装在您的Ubuntu 20.04服务器上 您已经在Ubuntu 20.04服务器上安装了LAMP堆栈或LEMP堆栈。 如果没有,请单击以上链接并按照说明完成先决条件。请注意,如果您以前使用iRedMail设置过电子邮件服务器,那么您的服务器满足所有要求,并且Roundcube已经安装在您的服务器上。 现在让我们继续安装Roundcube。 第一步:在Ubuntu 20.04上下载Roundcube Webmail 通过SSH登录Ubuntu服务器,然后运行以下命令从Roundcube Github存储库下载最新的1.4稳定版本。 wgethttps://github.com/roundcube/roundcubemail/releases/download/1.4.6/roundcubemail-1.4.6-complete.tar.gz 注意:您可以始终使用上述URL格式从命令行下载Roundcube。如果出现新版本,只需用新版本号替换1.4.6即可。您可以在Roundcube下载页面查看是否有新版本。 提取tarball,将新创建的文件夹移动到web根目录(/var/www/),同时将其重命名为roundcube。 tar xvf roundcubemail-1.4.6-complete。焦油gz sudo mv RoundCubeEmail-1.4.6/var/www/roundcube 第2步:安装依赖项 运行以下命令安装所需的PHP扩展。 sudo apt安装php-net-ldap2 php-net-ldap3 php-imagick php7。4-常见php7。4-gd php7。4-imap php7。4-json php7。4-卷曲php7。4-zip php7。4-XMLPHP7。4-Mb字符串php7。4-bz2 php7。4-intl php7。4-gmp 安装Composer,它是PHP的依赖项管理器。 sudo-apt-install-composer 切换到roundcube目录。 cd/var/www/roundcube 使用Composer安装Roundcube Webmail所需的所有依赖项(第三方库)。 composer安装--无开发人员 如果看到“无需安装或更新”消息,则所有依赖项都已安装。 使web服务器用户(www数据)成为临时和日志目录的所有者,以便web服务器可以写入这两个目录。 sudo chown www data:www data temp/logs/-R 步骤3:为Roundcube创建MariaDB数据库和用户 以root用户身份登录MariaDB shell。 sudo mysql-u root 然后使用以下命令为Roundcube创建一个新数据库。本教程将其命名为roundcube,您可以对数据库使用任何您喜欢的名称。 创建数据库roundcube默认字符集utf8 COLLATE utf8_general_ci; 接下来,使用以下命令在localhost上创建一个新的数据库用户。同样,本教程将其命名为roundcubeuser,您可以使用任何您喜欢的名称。用首选密码替换密码。 创建用户roundcubeuser@localhost由“密码”标识; 然后将新数据库的所有权限授予新用户,以便稍后Roundcube webmail可以写入数据库。 授予roundcube上的所有权限。*到roundcubeuser@localhost; 刷新特权表以使更改生效。 同花顺特权; 退出MariaDB外壳: 出口 将初始表导入roundcube数据库。 sudo mysql roundcube</var/www/roundcube/SQL/mysql。最初的sql 步骤4:为Roundcube创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用Apache web服务器,请为Roundcube创建一个虚拟主机。 sudo nano/etc/apache2/网站可用/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除现有内容。) sudo nano/etc/apache2/sites available/mail。实例通用域名格式。形态 将以下文本放入文件中。替换邮件。实例com与你的真实域名,别忘了为它设置DNS记录。 <;虚拟主机*:80>;服务器名邮件。实例com DocumentRoot/var/www/roundcube/ErrorLog${APACHE_LOG_DIR}/roundcube_error。log CustomLog${APACHE_log_DIR}/roundcube_访问。日志合并<;目录/>;选项如下SymLinks AllowOverride All</目录>&书信电报;目录/var/www/roundcube/>;选项如下SymLinks Multiview allow Override All Order allow,deny allow from All</目录></VirtualHost>; 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite圆形立方体。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. Nginx 如果使用Nginx web服务器,请为Roundcube创建虚拟主机。 sudo nano/etc/nginx/conf.d/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除现有内容。) sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 将以下文本放入文件中。替换域名,不要忘记为其设置DNS记录。 服务器{listen 80;listen[:]:80;server_name mail.example.com;root/var/www/roundcube/;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;}地点~/。php${try_files$uri=404;fastcgi_pass unix:/run/php/php7.4-fpm.sock;fastcgi_index index.php;fastcgi_脚本_文件名$document_root$fastcgi_脚本_name;包含fastcgi_参数;}地点~/。著名的/acme挑战{allow all;}位置~^/(自述文件|安装|许可证|更改日志|升级)${deny all;}位置~^/(bin | SQL)/{deny all;}较长的浏览器缓存寿命可以加快对页面位置的重复访问~*/。(jpg | jpeg | gif | png | webp | svg | woff | woff2 | ttf | css | js | ico | xml)${accesslog off lognot found off;expires 360d;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. 第5步:启用HTTPS 强烈建议您使用TLS加密您的网络邮件。我们可以通过安装Let's Encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d mail。实例通用域名格式 如果使用Apache,请安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d mail。实例通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 注意:如果您遵循了我的Postfix/Dovecot教程,现在在同一台服务器上安装了Roundcube,那么certbot可能会告诉您邮件的证书。实例com已经存在,如下所示,因此您可以选择将现有TLS证书安装到web服务器配置文件中。 步骤6:添加本地DNS条目 建议在邮件服务器上编辑/etc/hosts文件并添加以下条目,这样Roundcube就不必查询公共DNS,这将稍微加快网页加载速度。 127.0.0.1本地主机邮件。实例通用域名格式 第7步:在Web浏览器中完成安装 在web浏览器中,转到Roundcube安装程序页面。 web安装程序将首先检查是否安装了PHP扩展、数据库和第三方库。如果你遵循本教程,那么所有的要求都应该得到满足。 点击下一步按钮。在第2页中,转到数据库设置部分。您需要填写在步骤3中创建的MariaDB数据库详细信息。 IMAP和SMTP部分允许您配置如何接收和提交电子邮件。为IMAP输入以下值。 IMAP主机:ssl://mail.example.com港口:993 为SMTP设置输入以下值。 SMTP端口:tls://mail.example.com港口:587。请注意,必须使用tls://作为端口587的前缀。端口465应使用ssl://前缀。 接下来,您可以向下滚动到Plugins部分来启用一些插件。例如,密码插件、标记为垃圾插件等等。我启用了所有这些。(在/var/www/roundcube/config/config.inc.php文件中安装后,您始终可以禁用插件。) 完成后,单击创建配置按钮,该按钮将根据您输入的信息创建配置。您需要复制配置并将其另存为config。inc.php位于/var/www/roundcube/config/目录下。 一旦打开配置。创建inc.php文件后,单击“继续”按钮。在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。请注意,在测试SMTP配置时,需要在发件人字段中输入完整的电子邮件地址。 如果测试失败,则可以单击2。在页面顶部创建配置链接,返回步骤2并重新创建配置。inc.php文件。 如果测试成功,请在不使用/installer的情况下转到您的Webmail域并登录。 Roundcube网络邮件接口 现在,您应该从文档根目录中删除整个安装程序文件夹,或者确保在配置中启用_安装程序选项。inc.php文件已禁用。 sudo rm/var/www/roundcube/installer/-r 这些文件可能会向公众公开服务器密码和加密密钥等敏感配置数据。确保无法从浏览器访问安装程序页面。 步骤8:配置筛选消息过滤器 您可以在Roundcube webmail中创建文件夹,然后创建规则将电子邮件过滤到不同的文件夹中。为此,需要使用以下命令安装ManageSieve服务器。 sudo apt安装多佛科特筛网多佛科特筛网 默认情况下,Postfix使用其内置的本地传递代理(LDA)将入站电子邮件移动到消息存储(收件箱、已发送邮件、垃圾、垃圾邮件等)。我们可以将其配置为使用Dovecot通过LMTP协议发送电子邮件,LMTP协议是SMTP的简化版本。LMTP允许一个高度可扩展和可靠的邮件系统,如果你想使用sieve插件过滤到不同文件夹的入站邮件,它是必需的。 安装Dovecot LMTP服务器。 sudo apt安装dovecot lmtpd 编辑Dovecot主配置文件。 sudo nano/etc/dovecot/dovecot。形态 将lmtp和SIVE添加到支持的协议中。 协议=imap lmtp筛 保存并关闭文件。然后编辑Dovecot 10母版。conf文件。 sudo nano/etc/dovecot/conf.d/10-master。形态 将lmtp服务定义更改为以下内容。 服务lmtp{unix_listener/var/spool/postfix/private/dovecot lmtp{group=postfix mode=0600 user=postfix} 接下来,编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。第一行告诉Postfix通过dovecot LMTP服务器将电子邮件发送到本地消息存储。第二行在后缀中禁用SMTPUTF8,因为Dovecot LMTP不支持此电子邮件扩展。 邮箱_transport=lmtp:unix:private/dovecot lmtp smtputf8_enable=no 保存并关闭文件。打开/etc/dovecot/conf.d/15-lda。conf文件。 sudo nano/etc/dovecot/conf.d/15-lda。形态 滚动到文件末尾,取消对mail_plugins行的注释,并将sieve插件添加到本地交付代理(LDA)。 协议lda{#要加载的插件的空格分隔列表(默认为全局邮件插件)。邮件插件=$mail_插件筛} 保存并关闭文件。如果你能找到20个lmtp。conf文件位于/etc/dovecot/conf.d/目录下,那么您还应该在该文件中启用sieve插件,如下所示。 协议lmtp{mail_plugins=quota sieve} 编辑/etc/dovecot/conf.d/10-mail。conf文件。 sudo nano/etc/dovecot/conf.d/10-mail。形态 筛选脚本存储在每个用户的主目录下。如果您遵循我的PostfixAdmin教程并使用虚拟邮箱域,那么您需要通过在文件中添加以下行来为虚拟用户启用mail_home,因为默认情况下虚拟用户没有主目录。 mail_home=/var/vmail/%d/%n 保存并关闭文件。 最后,重新启动Postfix和Dovecot。 sudo systemctl重启后缀dovecot 现在,您可以转到Roundcube webmail,打开一封电子邮件,单击“更多”按钮,然后选择“创建过滤器”以创建邮件过滤器。例如,我创建了一个过滤器,可以移动从redhat发送的所有电子邮件。com转到Red Hat文件夹。 如果您没有创建过滤器选项,可能是因为您没有启用ManageSeeve插件。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 在该文件末尾的数组中添加managesieve插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','managesieve',…); 保存并关闭文件。 请注意,如果将筛选过滤器集从旧邮件服务器移动到新邮件服务器,则需要转到设置->;筛选,然后单击操作并启用筛选集,否则Dovecot LMTP服务器将不执行筛选筛选。 第9步:从电子邮件标题中删除敏感信息 默认情况下,Roundcube将添加一个用户代理电子邮件头,指示您正在使用Roundcube webmail和版本号。你可以告诉Postfix忽略它,这样收件人就看不到它了。运行以下命令创建头检查文件。 sudo nano/etc/postfix/smtp_头_检查 将以下行放入文件中。 /^用户代理*Roundcube网络邮件/忽略 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。 smtp_header_checks=regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap/etc/postfix/smtp头检查 重新加载后缀以使更改生效。 sudo systemctl重新加载后缀 现在,Postfix在发送邮件时不会在邮件头中包含User Agent:Roundcube Webmail。 第10步:在Roundcube中配置密码插件 Roundcube包含一个密码插件,允许用户从webmail界面更改密码。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 确保此文件末尾的插件列表中有密码插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','password',…); 保存并关闭文件。 然而,我们需要先配置这个插件,然后它才能工作。运行以下命令将分布式密码插件配置文件复制到新文件。 sudo cp/var/www/roundcube/plugins/password/config。inc.php。dist/var/www/roundcube/plugins/password/config。php公司 编辑密码插件配置文件。 sudo nano/var/www/roundcube/plugins/password/config。php公司 找到以下行: $config['password_db_dsn']=''; 此参数用于告诉密码插件用户密码的存储位置。默认情况下,该值为空,它将查询不存储用户密码的roundcube数据库。如果您遵循了我的PostfixAdmin教程,那么用户密码将存储在PostfixAdmin中。邮箱表,因此我们需要将值更改为: $config['password_db_dsn']='mysql://postfixadmin:postfixadmin_database_password@127.0.0.1/postfixadmin'; 通知密码插件连接到postfixadmin数据库。如果您不记得postfixadmin数据库密码,可以在/etc/dovecot/dovecot sql中找到它。conf.ext文件。如果您的PostfixAdmin密码包含一个引号字符,那么您可以使用反斜杠(/')对其进行转义。 然后找到下面一行。 $config['password_query']=“选择更新密码(%c,%u)”; 将其更改为以下内容。 $config['password_query']='UPDATE mailbox SET password=%D,modified=NOW(),其中username=%u'; 我建议启用密码强度检查器,以防止用户设置弱密码。转到该文件的开头,可以找到以下行。 $config['passwordu strengthu driver']=null; 我们可以使用ZXCVN密码强度驱动程序,因此将其更改为: $config['password_strength_driver']=“zxcvn”; 在此文件中添加以下行以仅允许强密码。 $config['password_zxcvn_min_score']=5; 注意:$config['password_minimum_score']参数不适用于zxcvn驱动程序,所以请不要管它。 您还可以设置密码的最小长度。找到下面这行。 $config['password_minimum_length']=0; 将其更改为: $config['password_minimum_length']=8; 回想一下,我们在PostfixAdmin教程中使用了ARGON2I密码方案,因此我们还需要配置密码插件以使用ARGON2I。在文件中找到以下行。 $config['password_algorithm']='clear'; 默认情况下,密码将以明文形式存储,将值更改为以下值以使用Dovecot的内置密码算法。 $config['password_algorithm']='dovecot'; 然后找到下面一行,它告诉Dovecot的密码散列生成器位于何处。 $config['password_dovecotpw']='/usr/local/sbin/dovecotpw';//多佛科特一号。十、 将其更改为以下内容。 $config['password_dovecotpw']='/usr/bin/doveadm pw-r 5'; 然后找到下面一行,它告诉我们将使用哪个密码方案。 $config['password_dovecotpw_method']='CRAM-MD5'; 将其更改为: $config['password_dovecotpw_method']='ARGON2I'; 找到下面这行。 $config['password_dovecotpw_with_method']=false; 变假为真。这将在散列密码中添加一个{ARGON2I}前缀,以便您识别所使用的密码方案。 $config['password_dovecotpw_with_method']=true; 保存并关闭文件。由于该文件包含数据库密码,我们应该只允许www数据用户读取和写入该文件。 sudo chown www-data:www-data/var/www/roundcube/plugins/password/config。inc.php sudo chmod 600/var/www/roundcube/plugins/password/config。php公司 现在,用户应该能够在Roundcube webmail界面中更改密码。 如何设置假期/外出消息 我们可以使用筛选过滤器创建休假/外出消息。转到Roundcube设置->;过滤器。然后单击“创建”按钮创建过滤器。 给这个文件管理器起一个类似“外出”的名字。 新过滤器未被禁用,因此您可以不使用该按钮。 在范围字段中,选择所有消息。 在操作设置中选择Replay with message,然后输入将自动发送的消息。 在发送消息的频率中输入1。将其他文本字段留空。 点击保存按钮,你就完成了。 回到办公室后,可以切换“过滤器禁用”按钮,然后单击“保存”按钮禁用此过滤器。 增加上传文件大小限制 如果使用PHP-FPM运行PHP脚本,则上传到Roundcube的图像、PDF文件等文件不能大于2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano/etc/php/7.4/fpm/php。伊尼 找到下面一行(第846行)。 上传最大文件大小=2M 如下所示更改值。请注意,此值不应大于Postfix SMTP服务器设置的附件大小限制。 上传最大文件大小=50M 然后找到下一行(第694行)。 立柱最大尺寸=8M 更改PHP将接受的POST数据的最大大小。 立柱最大尺寸=50M 保存并关闭文件。或者,您可以运行以下两个命令来更改值,而无需手动打开文件。 sudo sed-i's/upload_max_filesize=2M/upload_max_filesize=50M/g'/etc/php/7.4/fpm/php。ini sudo sed-i's/post_max_size=8M/post_max_size=50M/g'/etc/php/7.4/fpm/php。伊尼 然后重启PHP-FPM。 sudo systemctl重启php7。4-fpm Nginx还设置了上传文件大小的限制。Nginx设置的默认最大上传文件大小限制为1MB。如果使用Nginx,请编辑Nginx配置文件。 sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 在SSL虚拟主机中添加以下行。 客户最大身体尺寸50米; 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx Roundcube中有3个用于附件/文件上传的插件: 数据库附件 文件系统附件 冗余附件 Roundcube只能使用一个插件来上传附件/文件。我发现数据库附件插件很容易出错,给你带来麻烦。要禁用它,请编辑Roundcube配置文件。 sudo nano/var/www/roundcube/config/config。php公司 向下滚动到此文件的末尾。您将看到一个活动插件列表。从列表中删除“数据库附件”。保存并关闭文件。 设置多个邮件域 要承载多个邮件域,请阅读以下文章: 如何在Ubuntu上的PostfixAdmin中托管多个邮件域 故障排除提示 如果遇到错误,可以在/var/log/apache2/roundcube_error上查看web服务器错误日志。log(如果您使用的是Apache),或/var/log/nginx/roundcube。错误(如果您使用的是Nginx。),Roundcube错误也会记录在/var/www/Roundcube/logs/目录中。 与存储服务器的连接失败 如果您在尝试登录RoundCube时看到“连接到存储服务器失败”错误,可能是因为 Dovecot服务器未运行。您可以使用sudo systemctl restart Dovecot重新启动Dovecot,并使用systemctl status Dovecot检查其状态。 您正在使用自签名的TLS证书。Roundcube需要由受信任的证书颁发机构(如Let's Encrypt)颁发的有效TLS证书。 你的TLS证书过期了。您可以使用sudo certbot renew续订Let's Encrypt TLS证书,然后重新启动Postfix和Dovecot(sudo systemctl restart Postfix Dovecot)。 您还可以尝试在Roundcube服务器上的/etc/hosts文件中添加自定义DNS条目,如步骤8所述,以便Roundcube可以正确解析邮件服务器主机名。 无法从服务器加载邮件 如果您看到“内部错误:无法从服务器加载邮件”错误,可能是因为您试图打开已删除的电子邮件(无效URL)。尝试转到邮件根域(mail.example.com)查看它是否有效。 筛选消息筛选器不工作? 如果按照步骤8按字母顺序设置筛选过滤器,但仍然无法使其工作,那么可以在Dovecot中启用调试以找出问题所在。 sudo nano/etc/dovecot/dovecot。形态 在该文件末尾添加以下行以启用Dovecot中的调试。 mail_debug=是 保存并关闭文件。然后重启多佛科特。 sudo systemctl重启dovecot 接下来,向您的域电子邮件地址发送一封测试电子邮件,并打开邮件日志文件。 sudo nano/var/log/mail。日志 您可以找到Sieve消息过滤器的调试信息。例如,我发现Dovecot无法运行我的筛选脚本。 1月10日11:35:24邮件dovecot:lmtp([email ;protected])调试:筛选:中止运行脚本`/var/vmail/linuxbabe。com/xiao/。多佛科特。斯文 事实证明,我的筛滤器有太多规则,其中一些规则相互冲突。我删除了那些相互冲突的规则,它又起作用了。 如何升级Roundcube 这很简单。例如,下面介绍如何升级到Roundcube 1.5.0。 将Roundcube的最新版本下载到您的主目录。 cd~wgethttps://github.com/roundcube/roundcubemail/releases/download/1.5.0/roundcubemail-1.5.0-complete.tar.gz 提取档案。 tar xvf roundcubemail-1.5.0-complete。焦油广州 将所有者更改为www数据。 chown www-data:www-data-roundcubemail-1.5.0/-R 然后运行安装脚本。 RoundCubeEmail-1.5.0/bin/installto。sh/var/www/roundcube/ 完成后,登录Roundcube webmail并单击“关于”按钮检查您使用的Rouncube版本。 收尾 我希望本教程能帮助您在Ubuntu 20.04上安装Roundcube Webmail。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和窍门?
-
如何使用Nginx在Ubuntu 16.04上安装Roundcube Webmail
Roundcube是一款用PHP编写的免费开源网络邮件软件。webmail是浏览器中的邮件客户端,这意味着您不必从Thunderbird这样的桌面邮件客户端读取和发送电子邮件,还可以从web浏览器访问电子邮件服务器。本教程将向您展示如何使用Nginx、MariaDB和PHP7在Ubuntu 16.04 VPS上安装Roundcube webmail。 先决条件 假设 Postfix SMTP服务器和Dovecot IMAP服务器安装在Ubuntu 16.04上 您已经在Ubuntu 16.04上安装了LEMP堆栈(Nginx、MariaDB和PHP7)。 如果没有,请单击以上链接并按照这些说明完成先决条件。虽然本教程是为Ubuntu16.04编写的,但它可以很容易地适应Debian、CentOS和Arch Linux。现在让我们开始。 第一步:在Ubuntu 16.04上下载Roundcube Webmail 虽然Roundcube可以从Ubuntu存储库中获得,但它需要ApacheWeb服务器作为依赖项。我们使用的是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 重新命名作曲家。将json dist文件发送给composer。json。 mv composer.json-dist composer.json 要使用LDAP通讯簿,请编辑composer。json文件。 nano composer.json 将“建议”中的项目移至“要求”部分,如下所示。删除版本号后的解释文本。还要注意,最后一项不是以逗号结尾的。 保存并关闭文件。然后安装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 user(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用户身份登录时,你需要在command前面加上sudo并输入密码。(您不需要像下面这样输入MariaDB root用户密码。) mysql -u root -p 然后使用以下命令为Roundcube创建一个新数据库。本教程将其命名为RoundCube Email,您可以对数据库使用任何您喜欢的名称。 create database roundcubemail; 接下来,使用以下命令在localhost上创建一个新的数据库用户。同样,本教程将其命名为roundcubeuser,您可以使用任何您喜欢的名称。 create user roundcubeuser@localhost; 为用户设置密码。用首选密码替换密码。 set password for roundcubeuser@localhost= password("your-password"); 然后将新数据库的所有权限授予新用户,以便稍后Roundcube webmail可以写入数据库。 grant all privileges on roundcubemail.* to roundcubeuser@localhost identified by 'your-password'; 刷新权限以使更改生效。 flush privileges; 退出MariaDB外壳: exit; 将初始表导入RoundCube电子邮件数据库。 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获得免费证书。 首先,安装Let's Encrypt client(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部分,输入您自己的postfix SMTP服务器和Dovecot IMAP服务器的详细信息。要在IMAP上使用SSL/TLS连接,请输入前缀为SSL://的主机名。端口号为993,用于安全的IMAPS连接。(我记得在以前版本的Roundcube中,可以将前缀imaps://与主机名一起使用。它可能不再有效。) 在SMTP设置中,输入前缀为tls://的电子邮件服务器主机名以在端口587上使用STARTTLS。如果您的电子邮件服务器支持SMTPS,请输入带有前缀ssl://的电子邮件服务器主机名,以便在端口465上使用ssl。在smtp_user和smtp_pass字段中,分别输入%u和%p。 接下来,您可以向下滚动到Plugins部分来启用一些插件。例如:密码插件、标记为垃圾插件等等。 完成后,单击创建配置按钮,该按钮将根据您输入的信息创建配置。您需要复制配置并将其另存为config。inc.php位于/usr/share/nginx/roundcube/config/目录中。 单击“继续”按钮。在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。 如果测试失败,则可以单击2。在页面顶部创建配置链接,返回步骤2并重新创建配置。inc.php文件。 如果测试成功,请在不使用/installer的情况下转到您的Webmail域并登录。 Roundcube网络邮件接口 现在,您应该从文档根目录中删除整个安装程序文件夹,或者确保在配置中启用_安装程序选项。inc.php已禁用。 sudo rm /usr/share/nginx/roundcubemail/installer/ -r 这些文件可能会向公众公开服务器密码和加密密钥等敏感配置数据。确保无法从浏览器访问此安装程序。 我希望本教程能帮助您在Ubuntu16.04上安装带有Nginx、MariaDB和PHP7的Roundcube Webmail。一如既往,如果你觉得这篇文章有用,请订阅我们的免费时事通讯,或在谷歌+、推特或Facebook页面上关注我们。