7

自托管 WebMail 的选择 - RainLoop 和 Cypht

 3 years ago
source link: https://azhuge233.com/%e8%87%aa%e6%89%98%e7%ae%a1-webmail-%e7%9a%84%e9%80%89%e6%8b%a9-rainloop-%e5%92%8c-cypht/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
RainLoop 和 Cypht

文章目录 显示

再也无法忍受 Windows 自带(拉中之拉的)邮件客户端——更新频率比苹果 Mail 还慢,有幸下载到的邮件还有 95% 的几率无法自动正常显示

于是萌生了使用第三方邮件客户端的想法,但是几经搜索都没有找到满意的,手机 QQ 邮箱还有广告推送

因为平时只有接收验证码/看游戏推广的时候用到邮件,所以需求很简单:

  • 能接收邮件并正常显示
    • “能接收邮件”具体是指迅速下载邮件,而不是给我一个卡住的进度条/转转转的菊花圈(验证码都失效了还没下载完)
  • 支持多个邮箱登录
  • 甚至不需要发邮件功能

最好是这样的一个系统:WebMail 有单独的账户系统,登录 WebMail 的自带账户后链接多个邮箱获取邮件(并不是像 QQ 网页邮箱那种直接使用邮箱账号登录)

网上有很多开源自托管的 WebMail 服务,权衡搭建维护复杂度后决定尝试 RainLoop 和 Cypht,最终选择了Cypht,因为 RainLoop 需要直接使用邮箱账号登录,没有自带的账户系统

下文将展示如何在 Debian 10 下无域名搭建 RainLoop 和 Cypht

  • Debian 10

以下指令均在 root 用户下执行,其他用户请酌情添加 sudo

RainLoop

下文将安装 RainLoop 标准版,标准版不能用于商业用途,可以个人非盈利使用

RainLoop 基于 PHP,需要安装 PHP(>= 5.4) 环境,执行

apt install php7.3 php7.3-dev php7.3-fpm php7.3-curl nginx unzip
apt install php7.3 php7.3-dev php7.3-fpm php7.3-curl nginx unzip

检查 php-fpm 是否开启自托管 WebMail 的选择 - RainLoop 和 Cypht

获取并解压 RainLoop

wget http://www.rainloop.net/repository/webmail/rainloop-latest.zip
mkdir /var/www/rainloop
unzip rainloop-latest.zip -d /var/www/rainloop
wget http://www.rainloop.net/repository/webmail/rainloop-latest.zip
mkdir /var/www/rainloop
unzip rainloop-latest.zip -d /var/www/rainloop
cd /var/www/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .
cd /var/www/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .

这里默认 Web 服务器用户为 www-data(Debian 包管理安装的 nginx 均使用此用户),如果 Web 服务器使用了其他用户,则修改为对应用户

配置 Web 服务器

  1. /etc/nginx/sites-available 下新建配置文件 rainloop,写入以下内容
    server {
    listen 80 default_server;
    root /var/www/rainloop;
    index index.php;
    server_name [服务器 IP];
    location / {
    try_files $uri $uri/ =404;
    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    location ^~ /data {
    deny all;
    server {
            listen 80 default_server;
    
            root /var/www/rainloop;
    
            index index.php;
    
            server_name [服务器 IP];
    
            location / {
                    try_files $uri $uri/ =404;
            }
    
            location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            }
            
        location ^~ /data {
            deny all;
        }
    }
    
  2. 软连接到 /etc/nginx/sites-enabled
    ln -s /etc/nginx/sites-available/rainloop /etc/nginx/sites-enabled/rainloop
    ln -s /etc/nginx/sites-available/rainloop /etc/nginx/sites-enabled/rainloop
  3. 启动 Web 服务器
    nginx -t
    nginx -s reload
    nginx -t
    # 无误后
    nginx -s reload

浏览器访问 IP 地址进入 RainLoop

Cypht

由于本地安装 Cypht 的步骤非常繁琐,所以这里选择 docker

安装 docker / docker-compose

# docker
curl -sSL https://get.docker.com | sh
# docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker
curl -sSL https://get.docker.com | sh
# docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

编辑 docker-compose.yml

新建 cypht 目录,新建 docker-compose.yml

mkdir cypht
cd cypht
vim docker-compose.yml
mkdir cypht
cd cypht
vim docker-compose.yml

写入以下内容

version: '3'
services:
image: mariadb:10
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=[MYSQL 的 root 密码]
- MYSQL_DATABASE=cypht
- MYSQL_USER=cypht
- MYSQL_PASSWORD=[MYSQL 的 cypht 密码]
cypht:
image: sailfrog/cypht-docker:latest
volumes:
- ./cypht/users:/var/lib/hm3/users
ports:
- "80:80"
environment:
- CYPHT_AUTH_USERNAME=[cypht 登录账户名称]
- CYPHT_AUTH_PASSWORD=[cypht 登录账户密码]
- CYPHT_DB_CONNECTION_TYPE=host
- CYPHT_DB_HOST=db
- CYPHT_DB_NAME=cypht
- CYPHT_DB_USER=cypht
- CYPHT_DB_PASS=[MYSQL 的 cypht 密码]
- CYPHT_SESSION_TYPE=DB
version: '3'
services:
  db:
    image: mariadb:10
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=[MYSQL 的 root 密码]
      - MYSQL_DATABASE=cypht
      - MYSQL_USER=cypht
      - MYSQL_PASSWORD=[MYSQL 的 cypht 密码]
  cypht:
    image: sailfrog/cypht-docker:latest
    volumes:
      - ./cypht/users:/var/lib/hm3/users
    ports:
      - "80:80"
    environment:
      - CYPHT_AUTH_USERNAME=[cypht 登录账户名称]
      - CYPHT_AUTH_PASSWORD=[cypht 登录账户密码]
      - CYPHT_DB_CONNECTION_TYPE=host
      - CYPHT_DB_HOST=db
      - CYPHT_DB_NAME=cypht
      - CYPHT_DB_USER=cypht
      - CYPHT_DB_PASS=[MYSQL 的 cypht 密码]
      - CYPHT_SESSION_TYPE=DB

启动 Cypht

docker-compose pull
docker-compose up -d
docker-compose pull
# 无误后
docker-compose up -d

浏览器访问 IP 地址进入 Cypht

RainLoop

自托管 WebMail 的选择 - RainLoop 和 Cypht管理员界面

自托管 WebMail 的选择 - RainLoop 和 Cypht邮箱界面

Cypht

自托管 WebMail 的选择 - RainLoop 和 Cypht登陆后界面(可以设置登陆后进入邮箱界面)

自托管 WebMail 的选择 - RainLoop 和 Cypht主题描述很精准

自托管 WebMail 的选择 - RainLoop 和 Cypht接收邮件

自托管 WebMail 的选择 - RainLoop 和 CyphtCypht 变更设置后需要再进入 Save 标签将设置写入磁盘,这一点不太方便

相关


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK