Smail/README.md
2023-07-30 17:59:25 +08:00

110 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PMail
> The current code is not stable, be sure to record the log! Lost letters or letters parsed wrong can find out the original content of the mail from the log!
## [中文文档](./README_CN.md)
## Introduction
An extremely lightweight mailbox server designed for personal use scenarios.
## Features
* Single file operation and easy deployment.
* The binary file is only 15MB and takes up less than 10M of memory during the run.
* Support dkim, spf checksum, [Email Test](https://www.mail-tester.com/) score 10 points if correctly configured.
## Disadvantages
* At present, only the core function of sending and receiving emails has been completed. Basically, it can only be used by a single person, and does not deal with issues related to permission management in the process of multiple users.
* The UI is ugly
# How to run
## 1、Generate DKIM secret key
Generate public and private keys by the dkim-keygen tool of the [go-msgauth](https://github.com/emersion/go-msgauth) project
Put the key in the `config/dkim` directory.
## 2、Set DNS
Add the following records to your domain DNS settings
| type | hostname | address / value |
|------|----------------------|----------------------|
| A | smtp | server ip |
| MX | _ | smtp.YourDomain |
| TXT | _ | v=spf1 a mx ~all |
| TXT | default._domainkey | Your DKIM public key |
## 3、Domain SSL Key
Prepare the certificate of `smtp.YourDomain`, the private key in ".key" format and the public key in ".crt" format
Put the certificate in the `config/ssl` directory.
## 4、Build(or download)
1、installed `nodejs` and `yarn`
2、installed `golang`
3、exec `./build.sh`
## 5、Config
Modify the `config.json` file in the config directory and fill in your secret key and domain information.
Tips:
MySQL database name must is `pmail`, and charset must is `utf8_general_ci`.
Configuration file description :
```json
{
"domain": "demo.com", // Your domain
"dkimPrivateKeyPath": "config/dkim/dkim.priv", // dkim private key
"SSLPrivateKeyPath": "config/ssl/private.key", // ssl private key
"SSLPublicKeyPath": "config/ssl/public.crt", // ssl public key
"mysqlDSN": "username:password@tcp(127.0.0.1:3306)/pmail?parseTime=True&loc=Local", // mysql connect infonation
"weChatPushAppId": "", // WeChat public account appid (for new email message push) . If you don't need it, you can make it empty.
"weChatPushSecret": "", // WeChat api secret
"weChatPushTemplateId": "", // push template id
"weChatPushUserId": "" // wechat user id
}
```
## 6、Run
exec `pmail` and check port of 25、80.
The webmail service address is http://yourip. Default account is `admin` and password is `admin`
## 7、Email Test
Check if your mailbox has completed all the security configuration. It is recommended to use [https://www.mail-tester.com/](https://www.mail-tester.com/) for checking.
# For Developer
## Project Framework
1、 FE: vue3+element-plus
The code is in `fe` folder.
2、Server: golang + mysql
The code is in `server` folder.
## Plugin Development
Reference this file. `server/hooks/wechat_push/wechat_push.go`
# What's More
Welcome PR! Welcome Issues! The project need a Logo !