再也无法忍受 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
检查 php-fpm 是否开启
获取并解压 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 .
这里默认 Web 服务器用户为 www-data(Debian 包管理安装的 nginx 均使用此用户),如果 Web 服务器使用了其他用户,则修改为对应用户
配置 Web 服务器
- 在 /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; } }
- 软连接到 /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/rainloop /etc/nginx/sites-enabled/rainloop
- 启动 Web 服务器
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-compose.yml
新建 cypht 目录,新建 docker-compose.yml
mkdir cypht cd cypht vim docker-compose.yml
写入以下内容
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
浏览器访问 IP 地址进入 Cypht
效果
RainLoop
管理员界面
邮箱界面
Cypht
登陆后界面(可以设置登陆后进入邮箱界面)
主题描述很精准
接收邮件
Cypht 变更设置后需要再进入 Save 标签将设置写入磁盘,这一点不太方便