UPASFS(4) UPASFS(4)
NAME
upasfs, startupasfs - mail file server
SYNOPSIS
upas/fs [ -f mailbox ] [ -bnps ] [ -m mntpoint ]
startupasfs
DESCRIPTION
Fs is a user level file system that reads mailboxes and pre-
sents them as a file system. A user normally starts fs in
his/her profile after starting plumber(4) and before start-
ing a window system, such as rio(1) or acme(1). The file
system is used by nedmail and acme(1)'s mail reader to parse
messages. Fs also generates plumbing messages used by biff
and faces(1) to provide mail announcements.
Startupasfs is a shell script suitable for use in one's pro-
file. It runs fs -s for the invoking user if none is
already running, and always mounts the user's posted fs on
/mail/fs.
The mailbox itself becomes a directory under /mail/fs. Each
message in the mailbox becomes a numbered directory in the
mailbox directory, and each attachment becomes a numbered
directory in the message directory. Since an attachment may
itself be a mail message, this structure can recurse ad nau-
seam.
Each message and attachment directory contains the files:
body the message minus the RFC822 style headers
cc the address(es) from the CC: header
date the date in the message, or if none, the time
of delivery
digest an SHA1 digest of the message contents
disposition inline or file
filename a name to use to file an attachment
from the from address in the From: header, or if
none, the address on the envelope.
header the RFC822 headers
info described below, essentially a summary of the
header info
inreplyto contents of the in-reply-to: header
mimeheader the mime headers
raw the undecoded MIME message
rawbody the undecoded message body
rawheader the undecoded message header
replyto the address to send any replies to.
subject the contents of the subject line
Page 1 Plan 9 (printed 10/24/25)
UPASFS(4) UPASFS(4)
to the address(es) from the To: line.
type the MIME content type
unixheader the envelope header from the mailbox
The info file contains the following information, one item
per line. Lists of addresses are single-space separated.
sender address filename
recipient addresses SHA1 digest
cc addresses bcc addresses
reply address in-reply-to: contents
envelope date RFC822 date
subject message senders
MIME content type message id
MIME disposition number of lines in body
Deleting message directories causes the message to be
removed from the mailbox.
The mailbox is reread and the structure updated whenever the
mailbox changes. Message directories are not renumbered.
The file /mail/fs/ctl is used to direct fs to open/close new
mailboxes or to delete groups of messages atomically. The
messages that can be written to this file are:
open path mboxname opens a new mailbox. path is
the file to open, and mboxname
is the name that appears under
/mail/fs.
close mboxname close mboxname. The close takes
affect only after all files open
under /mail/fs/mboxname have
been closed.
delete mboxname number ... Delete the messages with the
given numbers from mboxname.
The options are:
-ffile use file as the mailbox instead of the default,
/mail/box/username/mbox.
-b stands for biffing. Each time new mail is
received, a message is printed to standard output
containing the sender address, subject, and number
of bytes. It is intended for people telnetting in
who want mail announcements.
-n Don't open a mailbox initially. Overridden by -f.
-p turn off plumbing. Unless this is specified, fs
sends a message to the plumb port, seemail, from
source mailfs for each message received or deleted.
The message contains the attributes
sender=<contents of from file>, filetype=mail,
Page 2 Plan 9 (printed 10/24/25)
UPASFS(4) UPASFS(4)
mailtype=deleted or new, and length=<message length
in bytes>. The contents of the message is the full
path name of the directory representing the mes-
sage.
-s causes fs to post itself in /srv with a name of the
form /srv/upasfs.user.
-m specifies a mount point other than /mail/fs.
Fs will exit once all references to its directory have dis-
appeared.
Fs interprets mailbox file names of the form
/proto/host/user to mean access an account on host using the
given protocol. Authentication is delegated to factotum(4).
The final /user may be omitted, in which case the user name
is gleaned from the key held by factotum. The following pro-
tocols are supported:
pop cleartext POP with password authentication
apop cleartext POP with challenge-response (APOP)
authentication
pops
poptls TLS-encrypted POP with password authentication
apops
apoptls TLS-encrypted POP with challenge-response (APOP)
authentication
imap cleartext IMAP
imaps TLS-encrypted IMAP
The two IMAP protocols allow an optional fourth field speci-
fying a mailbox name, for example /imap/server/user/stored.
Poptls and apoptls connect to port 110 in plaintext and
start TLS using the POP STLS command. Pops and apops con-
nect to port 995 and start TLS before initiating the POP
conversation. Imaps connects to port 993 and starts TLS
before initiating the IMAP conversation. There should prob-
ably be an imaptls protocol as well. (Imaptls would connect
to port 143 in plaintext and start TLS using the IMAP START-
TLS command. (That's the nice thing about standards-there's
so many to choose from.))
FILES
/mail/box/* mail directories
/mail/box/*/mbox mailbox files
/mail/box/*/L.reading mutual exclusion lock for multiple
mbox readers
/mail/box/*/L.mbox mutual exclusion lock for altering
mbox
SOURCE
/sys/src/cmd/upas/fs
Page 3 Plan 9 (printed 10/24/25)
UPASFS(4) UPASFS(4)
/rc/bin/startupasfs
SEE ALSO
aliasmail(8), faces(1), filter(1), mail(1), marshal(1),
mlmgr(1), nedmail(1), qer(8), rewrite(6), send(8), upasfs(4)
Page 4 Plan 9 (printed 10/24/25)