Cypht 轻量级开源网页邮件聚合器

MariaDB(MySQL)

安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
brew install mariadb

# 随系统自动启动(推荐用于开发环境)
brew services start mariadb
# 或者,仅本次启动,直到下次重启
mysql.server start

# 初始化数据库,将数据库信息安装上去(可能有的人会提示已经安装,不管它)
sudo mysql_install_db

# 初始化root账号及数据库各种设定
sudo mysql_secure_installation

# 初始化引导
Enter current password for root (enter for none): <– 初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,建议设置,输入Y按回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的root的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户,建议删除,Y删除,n不删除
Disallow root login remotely? [Y/n] <– 是否禁止root远程登录,按需配置,Y禁止远程登录,n开启远程登录
Remove test database and access to it? [Y/n] <– 是否删除test数据库,Y删除、n留着
Reload privilege tables now? [Y/n]<– 是否重新加载权限表,建议重新加载,Y重新加载,n不重新加载
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

卸载

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
brew uninstall mariadb

# 手动删除残留
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /private/var/db/receipts/mysql

修改端口

为了与可能已安装的 MySQL 实例隔离,避免冲突,修改 MariaDB 端口。

对于通过 Homebrew 安装的 MariaDB,主配置文件通常在 /opt/homebrew/etc/my.cnf,同时它会包含 /opt/homebrew/etc/my.cnf.d/ 目录下的文件。建议在该目录下创建一个新文件(如 server.cnf)进行设置。

1
2
3
4
5
6
# 在 /opt/homebrew/etc/my.cnf.d/server.cnf 文件中添加或修改以下内容
[mysqld]
port = 3307  # 设置为与MySQL不同的端口,如3307
bind-address = 0.0.0.0  # 允许所有网络接口的连接,包括局域网
datadir = /opt/homebrew/var/mysql-maria  # 设置一个独立的数据目录
socket = /tmp/mariadb.sock  # 设置一个独立的socket文件

示例中的 /opt/homebrew/var/mysql-maria 符合 Homebrew 在 macOS 上的惯例。你需要手动创建这个目录并为其设置正确的所有者权限 :

1
2
sudo mkdir -p /opt/homebrew/var/mysql-maria
sudo chown -R $(whoami):admin /opt/homebrew/var/mysql-maria

关键提示:在初始化数据库之前,必须确保新的数据目录是空的​ 。


Socket文件配置:Socket 文件用于本地进程间通信。将其设置为与默认的 /tmp/mysql.sock不同的路径(如 /tmp/mariadb.sock)可以避免与 MySQL 冲突 。配置完成后,本地客户端连接时可能需要通过 -S参数指定这个新的 socket 文件路径,例如:mysql -u root -p -S /tmp/mariadb.sock


重启服务:初始化成功后,重新启动 MariaDB 服务以应用新的配置 。

1
brew services restart mariadb

远程连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 在宿主机登录 MariaDB 服务器
mysql -u root -p -P 3307
Enter password: 

# 执行以下 SQL 命令,查看用户的主机权限设置
MariaDB [(none)]> SELECT user, host FROM mysql.user WHERE user = 'root';
+------+-----------+
| User | Host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.002 sec)

# 创建 'root'@'%' 用户
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';

# 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

# 刷新权限
FLUSH PRIVILEGES;

验证权限配置

完成授权后,强烈建议您进行验证,以确保配置正确无误。

  1. 查看用户列表:可以运行以下命令,确认 ‘root’@’%’ 用户是否已存在。
1
SELECT user, host FROM mysql.user WHERE user = 'root';

您应该能看到两条记录:‘root’@’localhost’ 和 ‘root’@’%’。


  1. 查看具体权限:可以运行以下命令,检查该用户被授予的权限。
1
SHOW GRANTS FOR 'root'@'%';

如果一切正常,输出会显示该用户对所有数据库(.)拥有全部权限(ALL PRIVILEGES)。


总结:‘root’@’localhost’ 和 ‘root’@’%‘是两个完全独立的用户账户,尽管它们共享同一个用户名 root。你可以为它们设置不同的密码和权限。核心决策点在于:是否需要从另一台机器远程登录数据库。在安全性至上的今天,严格控制 ‘root’@’%‘的使用是保证数据库安全的关键一环。

部署Cypht

先通过 CREATE DATABASE cypht CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 创建数据库,推荐指定字符集,确保兼容性 。utf8mb4 支持更广泛的字符(如表情符号)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
services:
  cypht:
    image: cypht/cypht:2.5.1
    ports:
      - "80:80"
    environment:
      # === 重要:初始认证配置 ===
      # 以下两行仅在首次安装后首次登录时使用。
      # 登录成功后,请务必在网页版设置中修改管理员密码。
      # 修改密码后,**必须**将这两行从本配置中删除或注释掉,然后重启容器。
      # 否则重启后,环境变量中的旧密码将覆盖您修改的新密码,导致登录失败。
      - AUTH_USERNAME=admin # 初始账号
      - AUTH_PASSWORD=admin # 初始密码
      # 数据库连接配置 - 关键修改点
      - DB_CONNECTION_TYPE=host
      - DB_DRIVER=mysql
      - DB_HOST=host.docker.internal  # 使用特殊DNS指向宿主机
      - DB_PORT=3307
      - DB_NAME=cypht
      - DB_USER=xxxx                  # 用户
      - DB_PASS=xxxx                  # 密码
      # 会话与配置存储方式
      - SESSION_TYPE=DB
      - USER_CONFIG_TYPE=DB
    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 # 邮件附件

添加邮箱

QQ邮箱

图1
  1. 用电脑浏览器登录您的QQ邮箱网页版 (mail.qq.com)。
  2. 点击顶部 “设置”​ -> 选择 “账户”​ 选项卡。
  3. 向下滚动找到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”​ 这个区域。
  4. 找到 “开启IMAP/SMTP服务”​ 或 “生成授权码”​ 的选项,按照提示(可能需要验证密保)生成一个 16位的授权码。
  5. 复制这串授权码,然后粘贴到Cypt这个“密码”输入框里即可。

图2
  • 名称:QQ邮箱
  • Email or Username:邮箱账号
  • 密码:上面获取的授权码

图3
  1. 配置 IMAP​ (用于接收邮件)
  • Address (地址): imap.qq.com
  • Port (端口): 993
  • 加密选项: 选择 ✅ 使用TLS​ (这是最常用的安全连接方式)。
  1. 配置 SMTP​ (用于发送邮件)
  • ddress (地址): smtp.qq.com
  • Port (端口): 465。
  • 加密选项: 选择 ✅ 使用TLS​ (这是最常用的安全连接方式)。
  1. 其他选项 (可暂时不填或按需填写)
  • Setup JMAP Server: 不勾选 (QQ邮箱不支持JMAP)。
  • 从集成页面隐藏: 通常不勾选。
  • Reply to (回复地址): 可以留空,或填写您的QQ邮箱 xxxxx@qq.com
  • 签名: 可以留空,后续在设置中添加。
  • Set this profile default (设为默认配置文件): 如果这是您的主要邮箱,可以勾选。

图4
0%