网站搜索

在 Arch Linux 中使用“Nginx 和 Apache”安装 RainLoop Webmail(基于 Web 的电子邮件客户端)


Rainloop 是一个用 PHP 编写的免费开源 Web 应用程序,它提供了一个快速的现代 Web 界面,用于访问所有主要域邮件提供商(如 Yahoo、Gmail、Outlook 等)以及您自己的本地邮件服务器上的电子邮件,并且,通过 IMAP 和 SMTP 协议访问域邮件服务器,充当 MUA(邮件用户代理)。

RainLoop 演示

快速查看作者设置的演示页面:http://demo.rainloop.net/。

在服务器上部署 Rainloop 后,剩下要做的唯一一件事就是通过 Web 浏览器访问您的 Rainloop 域,并为已启用的域邮件服务器提供凭据。

本教程从 ApacheNginx 的配置文件两个角度介绍了 Arch Linux 上的 Rainloop Webmail 安装过程,使用通过本地主机文件配置的虚拟本地域,无需 DNS 服务器。

如果您还需要有关在 Debian Red Hat 系统上安装 Rainloop 的参考信息,请访问之前的 RainLoop Webmail 文章:

  1. 在基于 Debian 和 Red Hat 的系统上安装 RainLoop Webmail

要求

对于 Nginx
  1. 在 Arch Linux 中安装 LEMP(Nginx、PHP、带有 MariaDB 引擎的 MySQL 和 PhpMyAdmin)
  2. 在 Nginx Web 服务器中创建虚拟主机
对于阿帕奇
  1. 在 Arch Linux 中安装 LAMP(Linux、Apache、MySQL/MariaDB 和 PHP/PhpMyAdmin)

第 1 步:为 Nginx 或 Apache 创建虚拟主机

1. 假设您已按照上方演示链接中的说明配置了服务器(NginxApache),您需要做的第一件事是在本地 hosts 文件上创建一个基本的 DNS 条目,指向 Arch Linux 系统 IP。

在 Linux 系统上,编辑 /etc/hosts 文件并在 localhost 条目后包含您的 Rainloop 虚拟域。

127.0.0.1	localhost.localdomain  localhost     rainloop.lan
192.168.1.33	rainloop.lan

在 Windows 系统上,编辑 C:\Windows\System32\drivers\etc\hosts 并在底部添加以下行。

192.168.1.33       rainloop.lan

2. 使用ping命令验证本地域后,为创建必要的虚拟主机SSL配置>ApacheNginx

Nginx 虚拟主机

使用以下配置在 /etc/nginx/sites-available/ 路径中创建名为 rainloop.lan 的文件。

sudo nano /etc/nginx/sites-available/rainloop.conf

添加以下文件内容。

server {
    listen 80;
    server_name rainloop.lan;

    rewrite        ^ https://$server_name$request_uri? permanent;
    access_log /var/log/nginx/rainloop.lan.access.log;
    error_log /var/log/nginx/rainloop.lan.error.log;
    root /srv/www/rainloop/;

    # serve static files
    location ~ ^/(images|javascript|js|css|flash|media|static)/  {
     root    /srv/www/rainloop/;
     expires 30d;
    }

    location / {
        index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
 }

 location ^~ /data {
  deny all;
}

    location ~ \.php$ {
        #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
 }

然后创建 SSL 等效文件内容。

sudo nano /etc/nginx/sites-available/rainloop-ssl.conf

添加以下文件内容。

server {
    listen 443 ssl;
    server_name rainloop.lan;

       ssl_certificate     /etc/nginx/ssl/rainloop.lan.crt;
       ssl_certificate_key  /etc/nginx/ssl/rainloop.lan.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

    access_log /var/log/nginx/rainloop.lan.access.log;
    error_log /var/log/nginx/rainloop.lan.error.log;

   root /srv/www/rainloop/;

    # serve static files
    location ~ ^/(images|javascript|js|css|flash|media|static)/  {
      root    /srv/www/rainloop/;
      expires 30d;
    }

location ^~ /data {
  deny all;
}

    location / {
        index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
 }

    location ~ \.php$ {
        #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
 }

下一步为 SSL 虚拟主机生成证书文件和密钥并添加您的虚拟域名(rainloop.lan) 证书通用名称

sudo nginx_gen_ssl.sh

生成证书和 SSL 密钥后,创建 Rainloop root Web 服务器文件路径(Rainloop PHP 文件所在的位置),然后启用虚拟主机并重新启动 Nginx 守护程序以应用配置。

sudo mkdir -p /srv/www/rainloop
sudo n2ensite rainloop
sudo n2ensite rainloop-ssl
sudo systemctl restart nginx

阿帕奇虚拟主机

/etc/httpd/conf/sites-available/ 中创建一个名为 rainloop.conf 的新文件,其中包含以下内容。

sudo nano /etc/httpd/conf/sites-available/rainloop.conf

添加以下文件内容。

<VirtualHost *:80>
                ServerName rainloop.lan
                DocumentRoot "/srv/www/rainloop/"
                ServerAdmin [email 
                ErrorLog "/var/log/httpd/rainloop-error_log"
                TransferLog "/var/log/httpd/rainloop-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

然后为 Apache 创建 SSL 等效文件内容。

sudo nano /etc/httpd/conf/sites-available/rainloop-ssl.conf

添加以下文件内容。

<VirtualHost *:443>
                ServerName rainloop.lan
                DocumentRoot "/srv/www/rainloop/"
                ServerAdmin [email 
                ErrorLog "/var/log/httpd/rainloop-ssl-error_log"
                TransferLog "/var/log/httpd/rainloop-ssl-access_log"

SSLEngine on
SSLCertificateFile "/etc/httpd/conf/ssl/rainloop.lan.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/rainloop.lan.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

下一步是为 SSL 虚拟主机 创建 SSL 证书 文件和密钥,并添加您的虚拟域名 (rainloop.lan )证书通用名称

sudo apache_gen_ssl

创建证书和 SSL 密钥后,添加 Rainloop DocumentRoot 路径,然后启用虚拟主机并重新启动 Apache 守护程序以应用配置。

sudo mkdir -p /srv/www/rainloop
sudo a2ensite rainloop
sudo a2ensite rainloop-ssl
sudo systemctl restart httpd

第 2 步:添加必要的 PHP 扩展

3.无论您使用Apache还是Nginx网络服务器,您都需要在php.ini上启用以下PHP扩展> 文件,并且还包括 open_basedir 指令的新网络服务器 DocumentRoot 路径。

sudo nano /etc/php/php.ini

找到并取消注释以下 PHP 扩展。

extension=iconv.so
extension=imap.so
extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so ( enables IMAPS and SMTP SSL protocols on mail servers)
extension=pdo_mysql.so

另外 open_basedir 语句应该如下所示。

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/srv/www/

4.修改php.ini文件后,重新启动服务器,然后检查phpinfo文件以查看是否有SSL协议已启用。

----------On Apache Web Server----------
sudo systemctl restart httpd
----------On Nginx Web Server----------
sudo systemctl restart nginx
sudo systemctl restart php-fpm

第 3 步:下载并安装 RainLoop Webmail

5. 现在是时候从官方网站下载 Rainloop 应用程序并将其解压到文档根目录,但首先安装 wgetunzip 系统实用程序。

sudo pacman -S unzip wget

6.使用wget命令或使用浏览器导航至http://rainloop.net/downloads/下载最新的源包Rainloop zip存档。

wget http://repository.rainloop.net/v1/rainloop-latest.zip

7. 下载过程完成后,将 Rainloop 存档解压到虚拟主机文档根路径 ( /srv/www/rainloop/ )。

sudo unzip rainloop-latest.zip -d  /srv/www/rainloop/

8.然后在应用程序默认路径上设置以下权限。

sudo chmod -R 755 /srv/www/rainloop/
sudo chown -R http:http /srv/www/rainloop/

第 4 步:通过 Web 界面配置 Rainloop

9. Rainloop应用程序可以通过两种方式配置:使用系统shell或通过浏览器。如果您想通过终端进行配置,请打开并编辑位于 /srv/www/rainloop/data/_data_da047852f16d2bc7352b24240a2f1599/_default_/configs/ 中的 application.ini 文件。

10. 要从浏览器访问管理界面,请使用以下 URL 地址 https://rainloop.lan/?admin,然后提供默认应用程序凭据。

User= admin
Password= 12345

11.首次登录后,系统会警告您更改默认密码,因此我建议您这样做。

12.如果您想要联系人登录MySQL数据库并使用特权用户创建一个新数据库,则在联系人上提供数据库凭据> 领域。

mysql -u root -p
create database if not exists rainloop;
create user rainloop_user@localhost identified by “password”;
grant all privileges on rainloop.* to rainloop_user@localhost;
flush privileges;
exit;

13. 默认情况下,Rainloop 提供 GmailYahooOutlook 域邮件服务器配置文件,但您可以添加其他域如果您愿意,可以使用邮件服务器域。

14. 要登录邮件服务器,请将浏览器指向 https://rainloop.lan 并提供您的域服务器凭据。

如需进一步配置,请访问 Rainloop 官方文档页面:http://rainloop.net/docs/。

使用 Rainloop,只要您的服务器具有 Internet 连接,您就可以从任何具有浏览器的设备访问邮件服务器,到目前为止,在 Arch Linux 中使用 Rainloop 应用程序的唯一缺点是缺少所需的 poppassd 插件包更改电子邮件帐户密码。