Wyszukiwanie w witrynie

Zainstaluj RainLoop Webmail (internetowy klient poczty e-mail) przy użyciu „Nginx i Apache” w Arch Linux


Rainloop to bezpłatna aplikacja internetowa typu open source napisana w języku PHP, która zapewnia szybki, nowoczesny interfejs sieciowy umożliwiający dostęp do wiadomości e-mail u wszystkich głównych dostawców poczty domenowej, takich jak Yahoo, Gmail, Outlook i wielu innych, a także na własnych lokalnych serwerach pocztowych, a także działa jako MUA (Mail User Agent), uzyskując dostęp do serwerów pocztowych domeny za pośrednictwem protokołów IMAP i SMTP.

Wersja demonstracyjna RainLoopa

Rzuć okiem na konfigurację strony demonstracyjnej autorstwa autora pod adresem http://demo.rainloop.net/.

Po wdrożeniu Rainloop na swoich serwerach jedyne, co pozostaje do zrobienia, to uzyskać dostęp do domeny Rainloop za pośrednictwem przeglądarki internetowej i podać dane uwierzytelniające dla włączonego serwera poczty domeny.

W tym samouczku omówiono proces instalacji poczty internetowej Rainloop w systemie Arch Linux z obu punktów widzenia plików konfiguracyjnych dla Apache i Nginx, przy użyciu wirtualnej domeny lokalnej skonfigurowanej za pomocą lokalnego pliku hosts, bez serwera DNS.

Jeśli potrzebujesz również informacji na temat instalacji Rainloop w systemach Debian i Red Hat, zapoznaj się z poprzednim artykułem RainLoop Webmail pod adresem.

  1. Zainstaluj usługę RainLoop Webmail w systemach opartych na Debianie i Red Hat

Wymagania

Dla Nginxa
  1. Zainstaluj LEMP (Nginx, PHP, MySQL z silnikiem MariaDB i PhpMyAdmin) w Arch Linux
  2. Twórz wirtualne hosty na serwerze internetowym Nginx
Dla Apache'a
  1. Zainstaluj LAMP (Linux, Apache, MySQL/MariaDB i PHP/PhpMyAdmin) w Arch Linux

Krok 1: Utwórz wirtualne hosty dla Nginx lub Apache

1. Zakładając, że skonfigurowałeś swoje serwery (Nginx lub Apache) zgodnie z opisem w górnych linkach do prezentacji, pierwszą rzeczą, którą musisz zrobić, to aby utworzyć podstawowy wpis DNS w lokalnym pliku hosts, który wskazuje adres IP systemu Arch Linux.

W systemie Linux edytuj plik /etc/hosts i dołącz domenę wirtualną Rainloop po wpisie localhost.

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

W systemie Windows edytuj C:\Windows\System32\drivers\etc\hosts i dodaj następujący wiersz na dole.

192.168.1.33       rainloop.lan

2. Po zweryfikowaniu domeny lokalnej za pomocą polecenia ping utwórz niezbędne konfiguracje Hosty wirtualne i SSL dla Apache lub Nginx.

Hosty wirtualne Nginx

Utwórz plik o nazwie rainloop.lan w ścieżce /etc/nginx/sites-available/ z następującą konfiguracją.

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

Dodaj następującą zawartość pliku.

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;
    }
 }

Następnie utwórz zawartość pliku równoważną SSL.

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

Dodaj następującą zawartość pliku.

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;
    }
 }

W następnym kroku wygeneruj plik Certyfikatu i Klucze dla Wirtualnego hosta SSL i dodaj nazwę swojej domeny wirtualnej (rainloop.lan) na certyfikacie Nazwa zwyczajowa.

sudo nginx_gen_ssl.sh

Po wygenerowaniu certyfikatu i kluczy SSL utwórz główną ścieżkę pliku serwera WWW Rainloop (miejsce, w którym znajdują się pliki PHP Rainloop), następnie włącz wirtualne hosty i zrestartuj demona Nginx, aby zastosować konfiguracje.

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

Hosty wirtualne Apache

Utwórz nowy plik o nazwie rainloop.conf w /etc/httpd/conf/sites-available/ z następującą treścią.

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

Dodaj następującą zawartość pliku.

<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>

Następnie utwórz zawartość pliku równoważną SSL dla Apache.

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

Dodaj następującą zawartość pliku.

<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>

Następnym krokiem jest utworzenie pliku Certyfikatu SSL i Kluczy dla Wirtualnego hosta SSL i dodanie nazwy domeny wirtualnej (rainloop.lan ) w certyfikacie Nazwa zwyczajowa.

sudo apache_gen_ssl

Po utworzeniu certyfikatu i kluczy SSL dodaj ścieżkę DocumentRoot Rainloop, następnie włącz Virtual Hosts i zrestartuj demona Apache, aby zastosować konfiguracje.

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

Krok 2: Dodaj niezbędne rozszerzenia PHP

3. Niezależnie od tego, czy używasz serwera WWW Apache czy Nginx, musisz włączyć następujące rozszerzenia PHP w php.ini plik i dołącz także nową ścieżkę serwera WWW DocumentRoot do dyrektywy open_basedir.

sudo nano /etc/php/php.ini

Znajdź i odkomentuj następujące rozszerzenia 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

Również instrukcja open_basedir powinna wyglądać tak.

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

4. Po modyfikacji pliku php.ini zrestartuj serwer, a następnie sprawdź plik phpinfo, aby sprawdzić, czy protokoły SSL są włączone.

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

Krok 3: Pobierz i zainstaluj pocztę internetową RainLoop

5. Teraz nadszedł czas, aby pobrać i rozpakować aplikację Rainloop z oficjalnej strony internetowej do katalogu Document Root, ale najpierw zainstaluj narzędzia systemowe wget i unzip.

sudo pacman -S unzip wget

6. Pobierz najnowszy pakiet źródłowy archiwum zip Rainloop za pomocą polecenia wget lub za pomocą przeglądarki, aby przejść do http://rainloop.net/downloads/.

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

7. Po zakończeniu pobierania wypakuj archiwum Rainloop do ścieżki głównej dokumentów hosta wirtualnego ( /srv/www/rainloop/ ).

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

8. Następnie ustaw następujące uprawnienia na domyślnej ścieżce aplikacji.

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

Krok 4: Skonfiguruj Rainloop za pośrednictwem interfejsu internetowego

9. Aplikację Rainloop można skonfigurować na dwa sposoby: za pomocą powłoki systemowej lub przez przeglądarkę. Jeśli chcesz skonfigurować przez terminal, otwórz i edytuj plik application.ini znajdujący się w /srv/www/rainloop/data/_data_da047852f16d2bc7352b24240a2f1599/_default_/configs/.

10. Aby uzyskać dostęp do interfejsu administracyjnego z przeglądarki, użyj następującego adresu URL https://rainloop.lan/?admin, a następnie podaj domyślne dane uwierzytelniające aplikacji.

User= admin
Password= 12345

11. Po pierwszym logowaniu zostaniesz poproszony o zmianę domyślnego hasła, więc radzę to zrobić.

12. Jeśli chcesz umożliwić logowanie kontaktom do bazy danych MySQL i utworzyć nową bazę danych z użytkownikiem uprzywilejowanym, podaj dane uwierzytelniające bazy danych w Kontaktach pola.

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. Domyślnie Rainloop udostępnia pliki konfiguracyjne serwerów poczty w domenach Gmail, Yahoo i Outlook, ale możesz dodać inne domeny serwerów pocztowych, jeśli chcesz.

14. Aby zalogować się na serwerze pocztowym, wskaż przeglądarkę na https://rainloop.lan i podaj dane uwierzytelniające serwera domeny.

Dalsze konfiguracje można znaleźć na oficjalnej stronie dokumentacji Rainloop pod adresem http://rainloop.net/docs/.

Dzięki Rainloop możesz uzyskać dostęp do serwerów pocztowych z dowolnego urządzenia wyposażonego w przeglądarkę, o ile Twój serwer ma połączenie z Internetem, jedynym minusem korzystania z aplikacji Rainloop w Arch Linux jest brak potrzebnego pakietu wtyczek poppassd aby zmienić hasło do konta e-mail.