Due to the order in commands table, "c" maps to "copy", not "chdir" as man page says. "cd" and "ch" work instead. Two alternative fixes: either man page or the order of commands - leaving for you to decide. IMHO better to update man page than muscle memory of old time users.
Index: mail.1 =================================================================== RCS file: /cvs/src/usr.bin/mail/mail.1,v retrieving revision 1.70 diff -u -p -r1.70 mail.1 --- mail.1 16 Dec 2014 18:37:17 -0000 1.70 +++ mail.1 3 Jan 2015 20:49:55 -0000 @@ -422,12 +422,14 @@ If the command is given with no argument, the current set of alternate names is displayed. .It Ic chdir -.Pq Ic c +.Pf ( Ic ch +or +.Ic cd ) Changes the user's working directory to that specified, if given. If no directory is given, then changes to the user's login directory. .It Ic copy -.Pq Ic co +.Pq Ic c The .Ic copy command does the same thing that Alternatively, keeping man page, but moving copy command down: Index: cmdtab.c =================================================================== RCS file: /cvs/src/usr.bin/mail/cmdtab.c,v retrieving revision 1.13 diff -u -p -r1.13 cmdtab.c --- cmdtab.c 27 Oct 2009 23:59:40 -0000 1.13 +++ cmdtab.c 3 Jan 2015 20:41:36 -0000 @@ -69,9 +69,9 @@ const struct cmd cmdtab[] = { { "unread", { unread }, MSGLIST, 0, MMNDEL }, { "Unread", { unread }, MSGLIST, 0, MMNDEL }, { "!", { shell }, I|STRLIST, 0, 0 }, - { "copy", { copycmd }, M|STRLIST, 0, 0 }, { "chdir", { schdir }, M|RAWLIST, 0, 1 }, { "cd", { schdir }, M|RAWLIST, 0, 1 }, + { "copy", { copycmd }, M|STRLIST, 0, 0 }, { "save", { save }, STRLIST, 0, 0 }, { "source", { source }, M|RAWLIST, 1, 1 }, { "set", { set }, M|RAWLIST, 0, 1000 },