使用Apache/Nginx在Ubuntu 20.04上安装Roundcube Webmail
- 技术文档
- 2022.03.23
- 浏览:674
文章目录[隐藏]
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-d mail。实例通用域名格式
如果使用Apache,请安装Certbot Apache插件。
sudo apt安装python3 certbot apache
并运行此命令以获取并安装TLS证书。
sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email-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()调试:筛选:中止运行脚本`/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。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和窍门?