以前一直使用的网易邮箱大师,确实很好用,但是免费版上限是10个邮箱,最近我的邮箱超过10个了,所以就想着换到了thunderbird,不过内存占用比网易大200M,而且不知道是不是我配置的问题,每天开机自启动后都会提示邮箱登录失败,会弹出好几个重试的弹框。

所以我就想着能不能在自己的服务器搭一个直接用网页访问邮件客户端,于是就找到了Cypht

环境准备

  1. 首先要有一台云服务器,可以选择雨云服务器,这是我目前用着还不错的,对新用户很友好,另外雨云还有云应用,可以直接部署Roundcube(也是一个邮件客户端,功能和cypht一样)

  2. 安装docker和docker compose

    手动安装:Debian / Ubuntu 安装 Docker 以及 Docker Compose 教程 - 烧饼博客

    或者去轩辕镜像,里面有一键安装的教程

    image-20260323110745374

  3. 安装mysql

    • 有面板的用面板装,没有面板的按Debian 11/12 安装与配置 MySQL 8.x (2025 版)装,不过太麻烦了,建议直接用邮箱去SQLPub Serverless注册个免费的mysql,免费额度够用了,而且是国内的,速度快

    • 有了mysql之后,在本地装一个navicat,测试一下能不能连接

    • 在navicat中点击左上角的连接,然后选择mysql

      image-20260323095711445

    • 在这里输入你的数据库地址、端口、用户名、密码

      image-20260323095744857

    • 点击左下角的测试连接,能连上的话再点击右下角的确定

    • 如果是自己部署或者宝塔部署的mysql,记得在这里新建一个名叫cypht的数据库,sqlpub申请的数据库就不用创建了,直接用就行

      • 右键这个连接,点击新建数据库

        image-20260323100028306

      • 这样选,然后确定即可

        image-20260323100117950

开始安装

  1. 创建所需目录

    1
    2
    3
    4
    mkdir -p /home/cypht/data/log/{nginx,supervisord,php}
    mkdir /home/cypht/data/fonts
    mkdir /home/cypht/data/user_settings
    mkdir /home/cypht/data/user_attachments
  2. 进入目录

    1
    cd /home/cypht
  3. 用vim编写配置文件,没有vim就apt install vim -y安装一下,一般都有

    1
    vim docker-compose.yml

    i进入编辑模式,shift+insert将以下内容粘贴到里面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    version: '3'

    services:
    cypht:
    image: cypht/cypht:latest # 现在最新版是2.7.0
    container_name: cypht
    restart: unless-stopped
    ports:
    - "8088:80"
    env_file:
    - ./cypht-prod.env
    volumes:
    - ./data/log/nginx:/var/log/nginx
    - ./data/log/php:/var/log/php
    - ./data/log/supervisord:/var/log/supervisord
    - ./data/fonts:/usr/local/share/cypht/site/fonts
    # 应用数据持久化目录
    - ./data/user_settings:/var/lib/hm3/users # 用户配置和设置
    - ./data/user_attachments:/var/lib/hm3/attachments # 邮件附件

    然后esc退出编辑模型,输入:进入末行模式,然后输入wq回车即可完成保存并退出的操作

  4. 编写环境变量文件

    1
    vim cypht-prod.env

    复制以下内容到cypht-prod.env

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    AUTH_USERNAME=admin    # 登录用户名
    AUTH_PASSWORD=admin # 登录密码
    DB_CONNECTION_TYPE=host
    DB_DRIVER=mysql
    DB_HOST=your.mysql.com # 数据库地址
    DB_PORT=3306 # 数据库端口
    DB_NAME=cypht # 数据库名称
    DB_USER=root # 数据库用户名
    DB_PASS='123456' # 数据库密码

    ENABLE_REDIS=false

    SESSION_TYPE=DB
    USER_CONFIG_TYPE=DB

    也是保存退出即可

    目前用这些环境变量就够了,其他环境变量可参考https://github.com/cypht-org/cypht/blob/master/.env.example

    要了解每个变量的含义,参见这里的描述:https://github.com/cypht-org/cypht/blob/master/config/app.php

  5. 启动容器

    1
    docker compose up -d

    如果镜像拉取不下来的话,去轩辕镜像搞个加速链接

    或者用毫秒镜像的加速连接(不过显示是307天前更新,也不知道还好不好使):docker pull docker.1ms.run/cypht/cypht:latest

    不管是用哪个加速链接拉取的镜像,到最后都要打个标签,不然配置文件不认

    1
    docker tag  docker.1ms.run/cypht/cypht:latest  cypht/cypht:latest
  6. 去navicat看看数据库有没有表生成,出现这4张表就说明启动基本没问题,有问题的话用命令docker compose logs -f看看容器的日志,然后丢给AI(:))

    image-20260323100557166

  7. 去云服务器厂商的后台放行8088端口

  8. 然后用ip:8088就能访问cypht了

    image-20260323100732628

开始使用

  1. 输入cypht-prod.env中配置的用户名和密码即可登录

  2. 登录之后是英文的,先去setting➡️site➡️general➡️language,选择Chinese Simplified,然后划到最下面点击保存,就变成中文了

    image-20260323101049966

    image-20260323101107023

  3. 之后添加邮箱,选择服务器➡️IMAP-JMAP-SMTP Servers➡️Add a new server(我这里已经加了很多邮箱了)

    image-20260323101302942

  4. 比如先加个qq邮箱,这里需要授权码,授权码要去qq邮箱里获取

    • 进入QQ邮箱,点击右上角的设置➡️账号与安全

      image-20260323101555670

    • 会跳转到另一个页面,选择安全设置,找到POP3/IMAP/SMTP/Exchange/CardDAV 服务,这里我是已经开启了,也已经生成过授权码了,这个授权码生成的时候要自己找个地方记住,因为只会显示一次

      image-20260323101712695

  5. 得到授权码之后,回到cypht填写邮箱信息,这里需要的密码就是授权码,填写完成后点击下一步

    image-20260323101927466

  6. 如果只是当做收件服务器的话就不用勾选Sender account,勾选的话可以在cypht里进行发件操作。

    端口都是用的加密端口,所要选择使用TLS

    image-20260323102547896

  7. 点击finish后,左侧列表就会出现电子邮件这个菜单,点击去就能看到你添加的邮箱了

    image-20260323102838202

  8. 添加其他邮箱也是一样的操作,163、189、139等等,他们的imap和smtp服务器百度查一下就知道了,记得用加密的端口,选择使用TLS

    谷歌邮箱的话还需要给服务器配置代理,否则服务器连不上外网,无法登录谷歌邮箱。当然,如果你是香港服务器那最好了,国内访问快,又能连外网

    配置代理用这个项目nelvko/clash-for-linux-install: 😼 优雅地使用基于 clash/mihomo 的代理环境,之后我再抽个时间写它的教程吧

  9. last but not least,一定要保存!!!

    当你添加完邮箱之后,有没有发现左上角多了个小标志?点一下就会跳转到保存界面,输入你的登录密码,然后保存

    image-20260323103601152

    或者直接到设置➡️保存,然后进行保存

    就是因为这个保存太隐蔽了,导致我每次添加完邮箱后发现换个浏览器登录数据就没了,搞了一天,搜教程,问AI,都没有提到这个保存,最后想到这个左上角的小东西,点进去我就茅厕顿开了 :)