ค้นหาเว็บไซต์

ติดตั้ง RainLoop Webmail (ไคลเอนต์อีเมลบนเว็บ) โดยใช้ 'Nginx และ Apache' ใน Arch Linux


Rainloop เป็นเว็บแอปพลิเคชันโอเพ่นซอร์สฟรีที่เขียนด้วย PHP ซึ่งมีอินเทอร์เฟซเว็บที่ทันสมัยและรวดเร็วในการเข้าถึงอีเมลของคุณจากผู้ให้บริการเมลโดเมนหลักทุกราย เช่น Yahoo, Gmail, Outlook และอื่นๆ อีกมากมาย เช่นเดียวกับเซิร์ฟเวอร์เมลในเครื่องของคุณเอง และยัง ทำหน้าที่เป็น MUA (Mail User Agent) โดยการเข้าถึงเซิร์ฟเวอร์เมลของโดเมนผ่านโปรโตคอล IMAP และ SMTP

การสาธิต RainLoop

ดูการตั้งค่าหน้าสาธิตโดยผู้เขียนได้ที่ http://demo.rainloop.net/

เมื่อคุณปรับใช้ Rainloop บนเซิร์ฟเวอร์ของคุณแล้ว สิ่งเดียวที่ต้องทำคือเข้าถึงโดเมน Rainloop ของคุณผ่านเว็บเบราว์เซอร์ และให้ข้อมูลประจำตัวสำหรับเซิร์ฟเวอร์เมลโดเมนที่เปิดใช้งานของคุณ

บทช่วยสอนนี้ครอบคลุมกระบวนการติดตั้งเว็บเมล Rainloop บน Arch Linux จากไฟล์การกำหนดค่ามุมมองทั้งสองสำหรับ Apache และ Nginx ใช้โดเมนท้องถิ่นเสมือนที่กำหนดค่าผ่านไฟล์โฮสต์ภายในเครื่อง โดยไม่มีเซิร์ฟเวอร์ DNS

หากคุณต้องการข้อมูลอ้างอิงเกี่ยวกับการติดตั้ง Rainloop บนระบบ Debian และ Red Hat โปรดไปที่บทความเว็บเมล RainLoop ก่อนหน้าที่

  1. ติดตั้ง RainLoop Webmail บนระบบที่ใช้ Debian และ Red Hat

ความต้องการ

สำหรับ Nginx
  1. ติดตั้ง LEMP (Nginx, PHP, MySQL พร้อมกลไก MariaDB และ PhpMyAdmin) ใน Arch Linux
  2. สร้างโฮสต์เสมือนในเว็บเซิร์ฟเวอร์ Nginx
สำหรับอาปาเช่
  1. ติดตั้ง LAMP (Linux, Apache, MySQL/MariaDB และ PHP/PhpMyAdmin) ใน Arch Linux

ขั้นตอนที่ 1: สร้างโฮสต์เสมือนสำหรับ Nginx หรือ Apache

1. สมมติว่าคุณได้กำหนดค่าเซิร์ฟเวอร์ของคุณ (Nginx หรือ Apache) ตามที่อธิบายไว้ในลิงก์การนำเสนอด้านบน สิ่งแรกที่คุณต้องทำคือ เพื่อสร้างรายการ DNS พื้นฐานบนไฟล์ hosts ในเครื่องที่ชี้ไปที่ IP ระบบ Arch Linux

บนระบบ Linux ให้แก้ไขไฟล์ /etc/hosts และรวมโดเมนเสมือน Rainloop ของคุณไว้หลังรายการ localhost

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 แล้ว ให้สร้างการกำหนดค่า Virtual Hosts และ SSL ที่จำเป็นสำหรับ Apache หรือ Nginx

โฮสต์เสมือน Nginx

สร้างไฟล์ชื่อ rainloop.lan ในเส้นทาง /etc/nginx/sites-available/ ด้วยการกำหนดค่าต่อไปนี้

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

ในขั้นตอนถัดไป ให้สร้างไฟล์ Certificate และ Keys สำหรับ SSL Virtual Host และเพิ่มชื่อโดเมนเสมือนของคุณ (rainloop.lan >) บนใบรับรอง ชื่อสามัญ

sudo nginx_gen_ssl.sh

หลังจากสร้างใบรับรองและคีย์ SSL แล้ว ให้สร้างเส้นทางไฟล์เว็บเซิร์ฟเวอร์ Rainloop root (วางที่มีไฟล์ Rainloop PHP อยู่) จากนั้นเปิดใช้งาน Virtual Hosts และรีสตาร์ท Nginx daemon เพื่อใช้การกำหนดค่า

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

อาปาเช่โฮสต์เสมือน

สร้างไฟล์ใหม่ชื่อ rainloop.conf ใน /etc/httpd/conf/sites-available/ โดยมีเนื้อหาดังต่อไปนี้

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>

จากนั้นสร้างเนื้อหาไฟล์เทียบเท่า SSL สำหรับ Apache

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 Certificate และ Keys สำหรับ SSL Virtual Host และเพิ่มใส่ชื่อโดเมนเสมือนของคุณ (rainloop.lan ) บนใบรับรอง ชื่อสามัญ

sudo apache_gen_ssl

หลังจากสร้างใบรับรองและคีย์ SSL แล้ว ให้เพิ่มเส้นทาง DocumentRoot ของ Rainloop จากนั้นเปิดใช้งาน Virtual Hosts และรีสตาร์ท Apache daemon เพื่อใช้การกำหนดค่า

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

ขั้นตอนที่ 2: เพิ่มส่วนขยาย PHP ที่จำเป็น

3. ไม่ว่าคุณจะใช้เว็บเซิร์ฟเวอร์ Apache หรือ Nginx คุณต้องเปิดใช้งานส่วนขยาย PHP ต่อไปนี้บน php.ini และยังรวมเส้นทาง DocumentRoot ของเว็บเซิร์ฟเวอร์ใหม่ไปยังคำสั่ง open_basedir

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 จากเว็บไซต์อย่างเป็นทางการไปยังไดเรกทอรี Document Root แต่ก่อนอื่นให้ติดตั้งยูทิลิตี้ระบบ wget และ unzip

sudo pacman -S unzip wget

6. ดาวน์โหลดแพ็คเกจแหล่งล่าสุด Rainloop zip archive โดยใช้คำสั่ง wget หรือโดยใช้เบราว์เซอร์เพื่อนำทางไปยัง http://rainloop.net/downloads/

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: กำหนดค่า Rainloop ผ่านทางเว็บอินเตอร์เฟส

9. แอปพลิเคชัน Rainloop สามารถกำหนดค่าได้สองวิธี: การใช้เชลล์ระบบของผ่านเบราว์เซอร์ หากคุณต้องการกำหนดค่าผ่านเทอร์มินัล ให้เปิดและแก้ไขไฟล์ application.ini ที่อยู่ใน /srv/www/rainloop/data/_data_da047852f16d2bc7352b24240a2f1599/_default_/configs/

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 จะจัดเตรียมไฟล์การกำหนดค่าเซิร์ฟเวอร์เมลของโดเมน Gmail, Yahoo และ Outlook แต่คุณสามารถเพิ่มไฟล์การกำหนดค่าอื่นๆ ได้ โดเมนเมลเซิร์ฟเวอร์หากคุณต้องการ

14. หากต้องการเข้าสู่ระบบเซิร์ฟเวอร์อีเมลของคุณ โปรดชี้เบราว์เซอร์ของคุณไปที่ https://rainloop.lan และระบุข้อมูลรับรองเซิร์ฟเวอร์โดเมนของคุณ

สำหรับการกำหนดค่าเพิ่มเติม โปรดไปที่หน้าเอกสารอย่างเป็นทางการของ Rainloop ที่ http://rainloop.net/docs/

ด้วย Rainloop คุณสามารถเข้าถึงเมลเซิร์ฟเวอร์จากอุปกรณ์ใดๆ ที่มีเบราว์เซอร์ได้ตราบใดที่เซิร์ฟเวอร์ของคุณมีการเชื่อมต่ออินเทอร์เน็ต ข้อเสียเพียงอย่างเดียวของการใช้แอปพลิเคชัน Rainloop ใน Arch Linux คือการขาดแพ็คเกจปลั๊กอิน poppassd ที่จำเป็น เพื่อเปลี่ยนรหัสผ่านบัญชีอีเมล