From 0e45eb9a6953b02d422f9d2144c8229962ac0b40 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Wed, 3 Aug 2022 16:00:44 +0200 Subject: [PATCH] Update documentation --- doc/src/mutt_mail.png | Bin 0 -> 24325 bytes doc/src/mutt_mb.png | Bin 0 -> 39035 bytes doc/src/notes.md | 40 ++++++++++++++++++++++++- doc/src/setup.md | 24 ++++++++++++--- doc/src/validate.md | 66 ++++++++++++++++++----------------------- tests/inject_emails.sh | 9 ++++-- 6 files changed, 94 insertions(+), 45 deletions(-) create mode 100644 doc/src/mutt_mail.png create mode 100644 doc/src/mutt_mb.png diff --git a/doc/src/mutt_mail.png b/doc/src/mutt_mail.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d04e4bafad5a80082efa6bcdbf801ae42f9f08 GIT binary patch literal 24325 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 literal 0 HcmV?d00001 diff --git a/doc/src/mutt_mb.png b/doc/src/mutt_mb.png new file mode 100644 index 0000000000000000000000000000000000000000..d1bafaf5e68a5fcf08334798172c2acf741809a4 GIT binary patch literal 39035 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 literal 0 HcmV?d00001 diff --git a/doc/src/notes.md b/doc/src/notes.md index 33c98a0..3a4c954 100644 --- a/doc/src/notes.md +++ b/doc/src/notes.md @@ -1,4 +1,42 @@ # Notes +An IMAP trace extracted from Aerogramme: -*No note currently* +``` +S: * OK Hello +C: A1 LOGIN alan p455w0rd +S: A1 OK Completed +C: A2 SELECT INBOX +S: * 0 EXISTS +S: * 0 RECENT +S: * FLAGS (\Seen \Answered \Flagged \Deleted \Draft) +S: * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft \*)] Flags permitted +S: * OK [UIDVALIDITY 1] UIDs valid +S: * OK [UIDNEXT 1] Predict next UID +S: A2 OK [READ-WRITE] Select completed +C: A3 NOOP +S: A3 OK NOOP completed. + <---- e-mail arrives through LMTP server ----> +C: A4 NOOP +S: * 1 EXISTS +S: A4 OK NOOP completed. +C: A5 FETCH 1 FULL +S: * 1 FETCH (UID 1 FLAGS () INTERNALDATE "06-Jul-2022 14:46:42 +0000" + RFC822.SIZE 117 ENVELOPE (NIL "test" (("Alan Smith" NIL "alan" "smith.me")) + NIL NIL (("Alan Smith" NIL "alan" "aerogramme.tld")) NIL NIL NIL NIL) + BODY ("TEXT" "test" NIL "test" "test" "test" 1 1)) +S: A5 OK FETCH completed +C: A6 FETCH 1 (RFC822) +S: * 1 FETCH (UID 1 RFC822 {117} +S: Subject: test +S: From: Alan Smith +S: To: Alan Smith +S: +S: Hello, world! +S: . +S: ) +S: A6 OK FETCH completed +C: A7 LOGOUT +S: * BYE Logging out +S: A7 OK Logout completed +``` diff --git a/doc/src/setup.md b/doc/src/setup.md index 66a1b7e..f954ae3 100644 --- a/doc/src/setup.md +++ b/doc/src/setup.md @@ -8,10 +8,14 @@ cargo run -- first-login \ --k2v-endpoint http://127.0.0.1:3904 \ --s3-endpoint http://127.0.0.1:3900 \ --aws-access-key-id GK... \ - --aws-secret-access-key c0ffee... --bucket mailrage-me \ + --aws-secret-access-key c0ffee... \ + --bucket mailrage-me \ --user-secret s3cr3t ``` +*Note: user-secret is not the user's password. It is an additional secret used when deriving user's secret key from their password. The idea is that, even if user leaks their password, their encrypted data remain safe as long as this additional secret does not leak. You can generate it with openssl for example: `openssl rand -base64 30`. Read [Cryptography & key management](./crypt-key.md) for more details.* + + The program will interactively ask you some questions and finally generates for you a snippet of configuration: ``` @@ -39,12 +43,24 @@ s3_endpoint = "http://127.0.0.1:3900" k2v_endpoint = "http://127.0.0.1:3904" aws_region = "garage" +[lmtp] +bind_addr = "[::1]:12024" +hostname = "aerogramme.tld" + +[imap] +bind_addr = "[::1]:1993" + [login_static] default_bucket = "mailrage" + [login_static.users.me] bucket = "mailrage-me" user_secret = "s3cr3t" -alternate_user_secrets = [] +email_addresses = [ + "me@aerogramme.tld" +] + +# copy pasted values from first-login password = "$argon2id$v=19$m=4096,t=3,p=1$..." aws_access_key_id = "GK..." aws_secret_access_key = "c0ffee..." @@ -58,8 +74,8 @@ cargo run -- show-keys \ --k2v-endpoint http://127.0.0.1:3904 \ --s3-endpoint http://127.0.0.1:3900 \ --aws-access-key-id GK... \ - --aws-secret-access-key c0ffee... \ - --bucket mailrage-me + --aws-secret-access-key c0ffee... \ + --bucket mailrage-me \ --user-secret s3cr3t ``` diff --git a/doc/src/validate.md b/doc/src/validate.md index 9f4f6ec..57903f6 100644 --- a/doc/src/validate.md +++ b/doc/src/validate.md @@ -6,43 +6,35 @@ Start a server as follow: cargo run -- server ``` -Now you can use netcat to connect on the LMTP and IMAP endpoint to check that Aerogramme behaves as expected. As an example, here is an IMAP trace extracted from Aerogramme: +Inject emails: +```bash +./test/inject_emails.sh '' dxflrs ``` -S: * OK Hello -C: A1 LOGIN lx plop -S: A1 OK Completed -C: A2 SELECT INBOX -S: * 0 EXISTS -S: * 0 RECENT -S: * FLAGS (\Seen \Answered \Flagged \Deleted \Draft) -S: * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft \*)] Flags permitted -S: * OK [UIDVALIDITY 1] UIDs valid -S: * OK [UIDNEXT 1] Predict next UID -S: A2 OK [READ-WRITE] Select completed -C: A3 NOOP -S: A3 OK NOOP completed. - <---- e-mail arrives through LMTP server ----> -C: A4 NOOP -S: * 1 EXISTS -S: A4 OK NOOP completed. -C: A5 FETCH 1 FULL -S: * 1 FETCH (UID 1 FLAGS () INTERNALDATE "06-Jul-2022 14:46:42 +0000" - RFC822.SIZE 117 ENVELOPE (NIL "test" (("Alan Smith" NIL "alan" "smith.me")) - NIL NIL (("Alan Smith" NIL "alan" "aerogramme.tld")) NIL NIL NIL NIL) - BODY ("TEXT" "test" NIL "test" "test" "test" 1 1)) -S: A5 OK FETCH completed -C: A6 FETCH 1 (RFC822) -S: * 1 FETCH (UID 1 RFC822 {117} -S: Subject: test -S: From: Alan Smith -S: To: Alan Smith -S: -S: Hello, world! -S: . -S: ) -S: A6 OK FETCH completed -C: A7 LOGOUT -S: * BYE Logging out -S: A7 OK Logout completed + +Now you can connect your mailbox with `mutt`. +Start by creating a config file, for example we used the following `~/.muttrc` file: + +```ini +set imap_user = quentin +set imap_pass = p455w0rd +set folder = imap://localhost:1993 +set spoolfile = +INBOX +set ssl_starttls = no +set ssl_force_tls = no +mailboxes = +INBOX +bind index G imap-fetch-mail ``` + +And then simply launch `mutt`. +The first time nothing will happen as Aerogramme must +process your incoming emails. Just ask `mutt` to refresh its +view by pressing `G` (for *Get*). + +Now, you should see some emails: + +![Screenshot of mutt mailbox](./mutt_mb.png) + +And you can read them: + +![Screenshot of mutt mail view](./mutt_mail.png) diff --git a/tests/inject_emails.sh b/tests/inject_emails.sh index 1b1f5c7..a021170 100755 --- a/tests/inject_emails.sh +++ b/tests/inject_emails.sh @@ -1,12 +1,15 @@ #!/bin/sh -cd $(dirname $0) +SCRIPT=$0 +USER=$1 +SUBFOLDER=$2 +cd $(dirname $SCRIPT) function mail_lmtp_session ( echo -e "LHLO localhost\r" - for mail in $(find emails -name '*.eml'); do + for mail in $(find emails/$SUBFOLDER -name '*.eml' ); do echo -e "MAIL FROM: \r" - echo -e "RCPT TO: \r" + echo -e "RCPT TO: $USER\r" echo -e "DATA\r" cat $mail echo -e "\r"