diff --git a/src/cmd/upas/nfs/imap.c b/src/cmd/upas/nfs/imap.c
index e1a7777..0a93b6b 100644
--- a/src/cmd/upas/nfs/imap.c
+++ b/src/cmd/upas/nfs/imap.c
@@ -17,6 +17,7 @@
 	int		autoreconnect;
 	int		ticks;	/* until boom! */
 	char*	server;
+	char*	root;
 	int		mode;
 	int		fd;
 	Biobuf	b;
@@ -90,7 +91,7 @@
  */
 
 Imap*
-imapconnect(char *server, int mode)
+imapconnect(char *server, int mode, char *root)
 {
 	Imap *z;
 
@@ -100,6 +101,13 @@
 	z = emalloc(sizeof *z);
 	z->server = estrdup(server);
 	z->mode = mode;
+	if(root)
+		if(root[0] != 0 && root[strlen(root)-1] != '/')
+			z->root = smprint("%s/", root);
+		else
+			z->root = root;
+	else
+		z->root = "";
 	z->fd = -1;
 	z->autoreconnect = 0;
 	z->io = ioproc();
@@ -220,7 +228,9 @@
 		boxes[i]->exists = 0;
 		boxes[i]->maxseen = 0;
 	}
-	if(imapcmd(z, nil, "LIST %Z *", "") < 0)
+	if(imapcmd(z, nil, "LIST %Z *", z->root) < 0)
+		return -1;
+	if(z->root != nil && imapcmd(z, nil, "LIST %Z INBOX", "") < 0)
 		return -1;
 	if(z->nextbox && z->nextbox->mark)
 		z->nextbox = nil;
@@ -739,7 +749,8 @@
 		fd[1] = dup(p[0], -1);
 		fd[2] = dup(2, -1);
 		tmp = esmprint("%s:993", server);
-		if(threadspawnl(fd, "/usr/sbin/stunnel", "stunnel", "-c", "-r", tmp, nil) < 0){
+		if(threadspawnl(fd, "/usr/sbin/stunnel", "stunnel", "-c", "-r", tmp, nil) < 0
+		    && threadspawnl(fd, "/usr/bin/stunnel", "stunnel", "-c", "-r", tmp, nil) < 0){
 			free(tmp);
 			close(p[0]);
 			close(p[1]);
@@ -1222,22 +1233,32 @@
 		s = gsub(s, "/", "_");
 		s = gsub(s, sx->sx[3]->data, "/");
 	}
+
+	/*
+	 * INBOX is the special imap name for the main mailbox.
+	 * All other mailbox names have the root prefix removed, if applicable.
+	 */
+	inbox = 0;
+	if(cistrcmp(s, "INBOX") == 0){
+		inbox = 1;
+		free(s);
+		s = estrdup("mbox");
+	} else if(z->root && strstr(s, z->root) == s) {
+		t = estrdup(s+strlen(z->root));
+		free(s);
+		s = t;
+	}
 	
 	/* 
 	 * Plan 9 calls the main mailbox mbox.  
 	 * Rename any existing mbox by appending a $.
 	 */
-	inbox = 0;
-	if(strncmp(s, "mbox", 4) == 0 && alldollars(s+4)){
+	if(!inbox && strncmp(s, "mbox", 4) == 0 && alldollars(s+4)){
 		t = emalloc(strlen(s)+2);
 		strcpy(t, s);
 		strcat(t, "$");
 		free(s);
 		s = t;
-	}else if(cistrcmp(s, "INBOX") == 0){
-		inbox = 1;
-		free(s);
-		s = estrdup("mbox");
 	}
 
 	box = boxcreate(s);
diff --git a/src/cmd/upas/nfs/imap.h b/src/cmd/upas/nfs/imap.h
index c4677a9..3f3d2aa 100644
--- a/src/cmd/upas/nfs/imap.h
+++ b/src/cmd/upas/nfs/imap.h
@@ -1,7 +1,7 @@
 typedef struct Imap Imap;
 
 void		imapcheckbox(Imap *z, Box *b);
-Imap*		imapconnect(char *server, int mode);
+Imap*		imapconnect(char *server, int mode, char *root);
 int		imapcopylist(Imap *z, char *nbox, Msg **m, uint nm);
 void		imapfetchraw(Imap *z, Part *p);
 void		imapfetchrawbody(Imap *z, Part *p);
diff --git a/src/cmd/upas/nfs/main.c b/src/cmd/upas/nfs/main.c
index cd644db..121d974 100644
--- a/src/cmd/upas/nfs/main.c
+++ b/src/cmd/upas/nfs/main.c
@@ -22,17 +22,18 @@
 void
 usage(void)
 {
-	fprint(2, "usage: mailfs [-DVtx] [-s srvname] server\n");
+	fprint(2, "usage: mailfs [-DVtx] [-s srvname] [-r root] server\n");
 	threadexitsall("usage");
 }
 
 void
 threadmain(int argc, char **argv)
 {
-	char *server, *srvname;
+	char *server, *srvname, *root;
 	int mode;
 
 	srvname = "mail";
+	root = "";
 	mode = Unencrypted;
 	ARGBEGIN{
 	default:
@@ -52,6 +53,9 @@
 	case 'x':
 		mode = Cmd;
 		break;
+	case 'r':
+		root = EARGF(usage());
+		break;
 	}ARGEND
 
 	quotefmtinstall();	
@@ -65,7 +69,7 @@
 	boxinit();
 	fsinit0();
 
-	if((imap = imapconnect(server, mode)) == nil)
+	if((imap = imapconnect(server, mode, root)) == nil)
 		sysfatal("imapconnect: %r");
 	threadpostmountsrv(&fs, srvname, nil, 0);
 }
