/PMail

Private EMail Server

Primary LanguageGo

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!

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 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 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 :

{
  "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/ 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 !