Haraka 开源项目使用教程
1. 项目目录结构及介绍
Haraka 是一个高度可扩展的 Node.js 邮件服务器,其目录结构如下:
Haraka/
├── bin/
│ ├── haraka.js
│ └── ...
├── config/
│ ├── host_list
│ ├── plugins
│ └── ...
├── contrib/
├── docs/
├── http/
├── outbound/
├── plugins/
├── test/
├── .editorconfig
├── .eslintrc.yaml
├── .gitignore
├── .gitmodules
├── .lgtm.yml
├── .npmignore
├── CONTRIBUTORS.md
├── Changes.md
├── Dockerfile
├── LICENSE
├── Plugins.md
├── README.md
├── TODO
├── connection.js
├── endpoint.js
├── haraka.js
├── haraka.sh
├── host_pool.js
├── line_socket.js
├── logger.js
├── package.json
├── plugins.js
├── rfc1869.js
├── run_tests
├── server.js
├── smtp_client.js
├── tls_socket.js
└── transaction.js
目录介绍
- bin/: 包含 Haraka 的可执行文件,如
haraka.js
。 - config/: 包含 Haraka 的配置文件,如
host_list
和plugins
。 - contrib/: 包含一些贡献者的文件和工具。
- docs/: 包含 Haraka 的文档文件。
- http/: 包含与 HTTP 相关的文件。
- outbound/: 包含与出站邮件相关的文件。
- plugins/: 包含 Haraka 的插件文件。
- test/: 包含测试文件。
- .editorconfig: 编辑器配置文件。
- .eslintrc.yaml: ESLint 配置文件。
- .gitignore: Git 忽略文件。
- .gitmodules: Git 子模块配置文件。
- .lgtm.yml: LGTM 配置文件。
- .npmignore: NPM 忽略文件。
- CONTRIBUTORS.md: 贡献者列表。
- Changes.md: 变更日志。
- Dockerfile: Docker 配置文件。
- LICENSE: 许可证文件。
- Plugins.md: 插件文档。
- README.md: 项目介绍文件。
- TODO: 待办事项。
- connection.js: 连接处理文件。
- endpoint.js: 端点处理文件。
- haraka.js: Haraka 主文件。
- haraka.sh: Haraka 启动脚本。
- host_pool.js: 主机池处理文件。
- line_socket.js: 行套接字处理文件。
- logger.js: 日志处理文件。
- package.json: 项目依赖配置文件。
- plugins.js: 插件管理文件。
- rfc1869.js: RFC1869 处理文件。
- run_tests: 测试运行脚本。
- server.js: 服务器处理文件。
- smtp_client.js: SMTP 客户端处理文件。
- tls_socket.js: TLS 套接字处理文件。
- transaction.js: 事务处理文件。
2. 项目启动文件介绍
Haraka 的启动文件主要是 bin/haraka.js
和 haraka.sh
。
bin/haraka.js
这是 Haraka 的主启动文件,负责初始化服务器并加载配置和插件。
haraka.sh
这是一个启动脚本,通常用于在 Unix/Linux 系统上启动 Haraka 服务。
3. 项目配置文件介绍
Haraka 的配置文件主要位于 config/
目录下。
config/host_list
这个文件定义了 Haraka 将接受邮件的域名列表。例如:
domain.com
example.com
config/plugins
这个文件定义了 Haraka 将加载的插件列表。例如:
tls
auth/flat_file
spamassassin
config/smtp_forward.ini
这个文件定义了 SMTP 转发配置,用于指定邮件的转发目标。例如:
host=smtp.example.com
port=587
通过这些配置文件,你可以自定义 Haraka 的行为,以满足你的特定需求。