Rainloop + password plugin

Rainloop là email client đơn giản, hiện đại và nhanh chóng trên nền web.

Rainloop cho nhập sẵn nhiều account, chuyển qua lại giữa các account dễ dàng.

Cài đặt Rainloop

# Tải về
wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip

# Giải nén
unzip rainloop-community-latest.zip -d /path/to/www/rainloop

# Cài đặt
http://domain.name/rainloop/?admin

# user: admin
# password: 12345

# Thêm domain

Thêm vào iRedMail

# Tạo file /etc/nginx/templates/rainloop.tmpl
location = /rainloop {
  return 301 /rainloop/;
}

location ~ ^/rainloop/(.*\.php)$ {
  include /etc/nginx/templates/hsts.tmpl;
  include /etc/nginx/templates/fastcgi_php.tmpl;
  fastcgi_param SCRIPT_FILENAME /path/to/www/rainloop/$1;
}

location ~ ^/rainloop/(.*) {
  alias /path/to/www/rainloop/$1;
  index index.php;
}

location ^~ /rainloop/data {
  deny all;
}

# Thêm vào /etc/nginx/sites-enabled/00-default-ssl.conf
## Chuyển hướng subdomain về folder
server {
  listen 443 ssl http2;
  listen [::]:443;
  server_name ... iredmail.example.com ...;
  return 308 https://mail.lyle.info$sub_to_folder$request_uri;
}
server {
  listen 443 ssl http2;
  listen [::]:443;
  server_name mail.example.com;
  ...
  include /etc/nginx/templates/rainloop.tmpl;
  ...
}
# Đổi subdomain thành folder
map $host $sub_to_folder {
  ...
  rainloop.example.com /rainloop;
  ...
}

Khi đó có thể gọi https://rainloop.example.com hay https://mail.example.com/rainloop đều được.

Password plugin cho Rainloop

Rainloop không có password plugin chính thức tương thích iRedMail.

Thông thường các plugin đều gọi doveadm để tạo mật khẩu và gặp lỗi với dovecot phiên bản 2.2.13 hiện nay. Vì vậy phải sửa hàm tạo mật khẩu, chuyển sang dùng hàm hash của PHP thay cho doveadm.

Có thể dùng plugin sau, tuy tương đối cũ nhưng đơn giản:

rainloop-iredmail

# Tải về file .zip
wget https://github.com/erickvasilev/rainloop-iredmail/archive/refs/heads/master.zip

# Giải nén thư mục iredmail vào /path/to/www/rainloop/data/_data_/_default_/plugins

# Sửa file iredmail/iRedMailChangePasswordDriver.php
protected function crypt($sPassword)
{
  $salt = random_bytes(4);
  $crypted = hash('sha512', $sPassword . $salt, true);
  return '{SSHA512}' . base64_encode($crypted . $salt);
  $sEscapedPassword = escapeshellcmd($sPassword);
  return shell_exec("doveadm pw -s 'ssha512' -p '{$sEscapedPassword}'");
}

# Vào giao diện admin của iRedMail, bật plugins, chọn iredmail
# Điền password của vmailadmin

Comments Off on Rainloop + password plugin

Filed under Software

Comments are closed.