From 8b21aa84f92bb130fccf0b88d544831cf26a9eb7 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Thu, 8 Jul 2021 21:58:55 +0100 Subject: [PATCH] Use .yggmail TLD --- README.md | 2 +- cmd/yggmail/main.go | 2 +- internal/smtpserver/session.go | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 90d6c5d..2ea152c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Yggmail is a single-binary all-in-one mail transfer agent which sends and receiv * All mail exchange traffic between any two Yggmail nodes is always end-to-end encrypted without exception; * Yggdrasil and Yggmail nodes on the same network are discovered automatically using multicast or you can configure a static Yggdrasil peer. -Email addresses are based on your public key, like `neilalexander@e3bf4665ae1ff714e0112040af8ddfc8e4b664a28e4afa40746e13952550f9ef`. +Email addresses are based on your public key, like `neilalexander@e3bf4665ae1ff714e0112040af8ddfc8e4b664a28e4afa40746e13952550f9ef.yggmail`. ## Quickstart diff --git a/cmd/yggmail/main.go b/cmd/yggmail/main.go index 2f2b856..1d9eb1f 100644 --- a/cmd/yggmail/main.go +++ b/cmd/yggmail/main.go @@ -92,7 +92,7 @@ func main() { panic(err) } fmt.Printf("Created user %q\n", *createuser) - fmt.Printf("Email address will be %s@%s\n", *createuser, hex.EncodeToString(pk)) + fmt.Printf("Email address will be %s@%s%s\n", *createuser, hex.EncodeToString(pk), smtpserver.TLD) os.Exit(0) } diff --git a/internal/smtpserver/session.go b/internal/smtpserver/session.go index d63b3e2..da2bc82 100644 --- a/internal/smtpserver/session.go +++ b/internal/smtpserver/session.go @@ -5,10 +5,15 @@ import ( "strings" ) +const TLD = ".yggmail" + func parseAddress(email string) (string, string, error) { + if !strings.HasSuffix(email, TLD) { + return "", "", fmt.Errorf("invalid TLD") + } at := strings.LastIndex(email, "@") if at == 0 { return "", "", fmt.Errorf("invalid email address") } - return email[:at], email[at+1:], nil + return email[:at], strings.TrimSuffix(email[at+1:], TLD), nil }