Following are steps for configuring email for plan9 Acme.

It was not hard to setup, but it took too long. I never found one page that covered everything from reading, to sending, to saving copies of outgoing mail. I had to read a lot of man pages, online posts, and source code to get everything working.

My hope is this post serves as one page that covers all the steps for configuring email for Acme.

Let me know if I've missed anything.

Overview

This post is focused on how to make it work, not why it works. Perhaps a future post will discuss what's going on under the hood.

The key things to understand are:

factotum(4) handles authentication

handles authentication mailfs handles connectivity

handles connectivity plumber(4) handles features like notification (which is not discussed here)

handles features like notification (which is not discussed here) Mail is a command and an executable acme uses to interact with mailfs

is a command and an executable uses to interact with acme(1) handles reading and writing email

The steps are slightly OpenBSD centric (6.3-current as of this writing), but easily adapted to other platforms that run plan9port.

The steps are also specific to reading email hosted by an IMAP server. POP3 should be similar. See the man pages for factotum(4) and upasfs(4).

I don't use the plan9 mailer. I replace it with msmtp(1), which is a handy SMTP client that behaves a lot like sendmail(8).

For more details about Mail, see $PLAN9/src/cmd/acme/mail/readme, and $PLAN9/src/cmd/acme/mail/*.c. I've also included a Resources section at the end.

Install

$ cd $PLAN9/src/cmd/upas/ $ doas mk install $ cd nfs $ doas mk install

Read Email

Start plumber(4) and factotum(4): $ 9 plumber $ 9 factotum Add credentials: # !password? tells factotum to prompt for password $ 9 factotum -g 'proto=pass service=imap server=mail.example.org \ user=user@example.org !password?' Start mailfs: # stunnel is required by mailfs for tls connections $ doas pkg_add -i stunnel # -t = use tls $ 9 mailfs -t mail.example.org Middle-click Mail in Acme to read email

Send Email

Install msmtp from ports for sending, Configure $HOME/.msmtprc: $ cat $HOME/.msmtprc # Set default values for all following accounts. logfile ~/no_bak/.cache/msmtp.log defaults auth on port 465 tls on # example.org # store password in ~/.netrc # or use password directive here account example host smtps.example.org from user@example.org user user@example.org # password supersekret Create $HOME/mail/pipefrom: $ cat $HOME/mail/pipefrom #!/bin/sh cat /dev/stdin | msmtp -f user@example.org $@ Create $HOME/mail/headers: # Necessary because otherwise marshal(1) will use your # $USER@hostname an environment variable called upasname # overrides the From: value in $HOME/mail/headers $ cat $HOME/mail/headers From: My Real Name <user@example.org> Middle-click Mail in the tag bar for the mail browser, Reply or middle-sweep Reply All to send email. You have to add your own Subject and To lines: To: user1@example.org To: user2@example.org Subject: Test Email Include: <path_to_file> Attach: <path_to_file> This is a test. Notice I didn't put a "From:" line above. My $HOME/mail/headers file will take care of that. Include: file places a copy of file in the message as an inline MIME attachment. Attach: file places a copy of file in the message as a regular MIME attachment. Middle-click Post to send.

About Outgoing Email

Mail always writes outgoing email in $HOME/mail/outgoing (if it exists), regardless of whether you're using IMAP.

I'm working on a patch to write the mail to an IMAP folder. I'll post something on the blog when it's ready.

For now, make sure you touch(1) $HOME/mail/outgoing, otherwise your outbound email will not be saved.

Another option would be to add a "Bcc:" header to yourself in $HOME/mail/headers.

Miscellaneous

msmtp(1) can be configured with multiple SMTP servers, selecting the correct server based on the sender, or a command line value, but there's no way to set the "From:" header while writing an email. Mail seems to strip it.

Perhaps I'll write a patch for that as well.

Resources

Acme