list

server

This is the main dovel repository, it has the Go code to run dovel SMTP server.

curl https://dovel.email/server.tar tar

7b5d4ee

Author: blmayer (bleemayer@gmail.com)

Date: Thu Sep 14 15:40:40 2023 -0300

Parent: f887f0c

Minor adjustments

Diff

cmd/dovel/backend.go

commit 7b5d4ee02547fcb65c2de9c177863143d7e7eef6
Author: blmayer <bleemayer@gmail.com>
Date:   Thu Sep 14 15:40:40 2023 -0300

    Minor adjustments

diff --git a/cmd/dovel/backend.go b/cmd/dovel/backend.go
index 6ada099..061c6da 100644
--- a/cmd/dovel/backend.go
+++ b/cmd/dovel/backend.go
@@ -136,6 +136,7 @@ func (s *Session) Logout() error {
 	return nil
 }
 
+// TODO: remove pgp logic, move to client packages
 func (s *Session) Send(from string, tos []string, raw io.Reader) error {
 	email, err := mail.ReadMessage(raw)
 	if err != nil {

cmd/dovel/main.go

commit 7b5d4ee02547fcb65c2de9c177863143d7e7eef6
Author: blmayer <bleemayer@gmail.com>
Date:   Thu Sep 14 15:40:40 2023 -0300

    Minor adjustments

diff --git a/cmd/dovel/main.go b/cmd/dovel/main.go
index 28e5b20..47efe03 100644
--- a/cmd/dovel/main.go
+++ b/cmd/dovel/main.go
@@ -34,9 +34,11 @@ func main() {
 	json.NewDecoder(configFile).Decode(&cfg)
 	domain = cfg.Domain
 
-	v, err = vault.NewJSONPlainTextVault[email.User](cfg.VaultFile)
-	if err != nil {
-		panic(err)
+	if cfg.VaultFile != "" {
+		v, err = vault.NewJSONPlainTextVault[email.User](cfg.VaultFile)
+		if err != nil {
+			panic(err)
+		}
 	}
 
 	s := smtp.NewServer(backend{})

doc.go

commit 7b5d4ee02547fcb65c2de9c177863143d7e7eef6
Author: blmayer <bleemayer@gmail.com>
Date:   Thu Sep 14 15:40:40 2023 -0300

    Minor adjustments

diff --git a/doc.go b/doc.go
index edb7e06..e5f3ecf 100644
--- a/doc.go
+++ b/doc.go
@@ -1,25 +1,13 @@
 // email is a SMTP server that is simple to setup and use.
 //
-// This package has two parts:
-//  1. The dovel binary
-//  2. The library
+// The binary is the main server, it is configured using a single config
+// file which should be located in ~/.config/dovel/config.json. This server is
+// responsible to receive your emails and save them according to your hooks.
 //
-// # The binary
-//
-// This binary is the main server, it is configured using a single config
-// file which should be located in ~/.dovel-config.json. This server is
-// responsible to receive your emails and save them according to your config.
-// The other part is the optional web interface that is used to visualize your
-// mail.
-//
-// The structure of this config file is [git.derelict.garden/dovel/email/config.Config]. See that doc for more
+// The structure of this config file is
+// [git.derelict.garden/dovel/email/config.Config]. See that doc for more
 // info.
 //
-// # The library
-//
-// This package also delivers a subpackage called email, it contains
-// structs that are used through this project.
-//
 // # Setting up your email server
 //
 // Email works in a complex way, DNS records must match your server's
@@ -33,15 +21,27 @@
 //   - 465: is marked as deprecated.
 //   - 587: is also official by RFC, this port is used for TLS encrypted mail.
 //
-// The current recomendation in to use port 586. To configure this server see
-// [git.derelict.garden/dovel/email/config.Config].
+// The current recomendation is to use port 586. Dovel works with any port,
+// and the value must be set in the port field of the config file. To 
+// configure this server see [git.derelict.garden/dovel/email/config.Config].
+//
+// To receive email only the MX record is enough. Everytime dovel receives an
+// email it searches for an executable file in $XDG_CONFIG_DIR/dovel/hooks/
+// named receive-DOMAIN, for the DOMAIN receiving the email and executes it
+// passing the email in mbox format as standard input. Then it is up to the
+// script to decide what to do. See the scripts repo for examples.
+//
+// # Hooks
+//
+// A simple hook is a shell script that simply concatenates the received email
+// to a .mbox file, e.g. to receive email for your domain create a file named
+// receive-<DOMAIN> in the hooks folder with the following content:
+//
+//  #!/bin/sh
+//  cat > ~/mail/dovel.mbox
+//
 //
-// The server itself only receives email, for this feature only the MX record
-// is enough. Everytime dovel receives an email it searches for an executable
-// file in $XDG_CONFIG_DIR/dovel/hooks/ named receive-DOMAIN, for the DOMAIN
-// receiving the email and executes it passing the email in mbox format as
-// standard input. Then it is up to the script to decide what to do. See the
-// scripts repo for examples.
+// Be sure to make the file executable.
 //
 // # Configuring DNS records
 //
@@ -54,4 +54,8 @@
 //
 // Dovel also sends email, for that it needs a valid VaultFile path on the
 // config. That means you need at least one user descrived on the json file.
+// The format of that file is a JSON array of the [User] struct.
+// 
+// Dovel is listening to commands on the port specified in the config file
+// use any email client to communicate with dovel.
 package email