Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MAILDIRMAKE(1)			 S. Varshavchik.		  MAILDIRMAKE(1)

NAME
     maildirmake - create maildirs and maildir folders

SYNOPSIS
     maildirmake [options...] {maildir}

DESCRIPTION
     The  maildirmake command creates maildirs, and maildir folders and performs
     some  routine  maintenance  on  them.  This  documentation  describes   the
     maildirmake command from the Courier mail server, which creates an extended
     form  of  maildirs  that  implements additional extensions beyond the basic
     maildir properties that were first implemented in the Qmail mail server.

OPTIONS
     -S
	 create a "sharable" maildir. A sharable maildir has slightly  different
	 permissions which allows creation of publicly-shared folders.

     -q quota
	 install  a quota on the maildir. See maildirquota(7)[1] for more infor-
	 mation. The specified maildir gets automatically created if it does not
	 exist; otherwise the existing maildir's quota gets updated.  quota  may
	 be:

	 ####S
	     Specifies	the quota in the total number of bytes for all messages.
	     "10000000S" specifies a quota of ten million bytes.

	 ####C
	     Specifies the quota in the total number of messages in the maildir.
	     "10000S" specifies a quota of ten thousand messages.

     -f folder
	 do not create a maildir, but create a folder in an existing maildir.

     -F folder
	 Like the -f option, except that the folder's name is  given  using  the
	 system  locale's  character  set.  Non-Latin characters in the folder's
	 name must be given to the -f option using IMAP's UTF8 encoding. The  -F
	 option  takes	the  folder name specified using the console's character
	 set.

     -s mode
	 create a publicly accessible folder in an  existing  sharable	maildir.
	 First,  use  the  -S  option  to  create  a sharable maildir. Then, run
	 maildirmake again with the -s	option	to  create  publicly  accessible
	 folders.   mode  is  a  comma-separated list of the following keywords:
	 read - readonly folder, only you can write  messages  to  this  folder;
	 write - anyone can read and write messages to this folder; group - only
	 allow	members  of  your  own	system	group to access messages in this
	 folder (instead of everyone).

     --add name=pathname, --del name
	 create or delete the directories and  links  needed  to  access  shared
	 folders. See below for more information.

     --checkutf8 maildir maildirfilter
	 Perform  a sanity check to verify that a pre-unicode format maildir can
	 be converted to a unicode-format maildir. See	"Converting  pre-unicode
	 format maildirs", below, for more information.

     --convutf8 maildir maildirfilter
	 Convert a pre-unicode format maildir can be converted to a unicode-for-
	 mat  maildir.	See "Converting pre-unicode format maildirs", below, for
	 more information.

   FOLDERS
     This maildirmake command supports enhanced maildirs that contain folders.

     By itself, maildirmake makes a new subdirectory maildir,  and  creates  all
     the  necessary  structures.  The -f option creates a new "folder" within an
     existing maildir.	maildir must already exist, and the maildirmake  command
     will create a new folder in the maildir.

     Folders are simply subdirectories inside the main maildir whose names start
     with  a period, and which are themselves maildirs. For example, the command
     "maildirmake -f Drafts mail/Maildir" creates mail/Maildir/.Drafts, that has
     the usual tmp, new and cur. You MUST use the -f option, instead of specify-
     ing mail/Maildir/.Drafts directly, in order to correctly initialize certain
     enhanced maildir features.

     Folders  cannot  be  created  directly  within   other   folders.	 Running
     maildirmake  -f Urgent mail/Maildir/.Drafts will not work. Instead, the pe-
     riod character is designated as a hierarchy separator, run  maildirmake  -f
     Drafts.Urgent  mail/Maildir  instead. This creates mail/Maildir/.Drafts.Ur-
     gent, and all mail software that supports enhanced maildirs will  interpret
     it as a subfolder Urgent of the Drafts folder.

   SHARED FOLDERS
     This  is  another extension to the Maildir format that allows folders to be
     shared between multiple clients.

	 Note

	 The Courier  IMAP  server  implements	two  types  of	shared	folders:
	 filesystem  permission-based  shared folders, as well as virtual shared
	 folders based on IMAP access control lists. Use the maildirmake command
	 to implement  shared  folders	based  on  filesystem  permissions.  The
	 maildiracl(1)[2]  command  manages access control lists, which are used
	 by virtual shared folders.

	 See the Courier IMAP server documentation for more information.

     First, you need to create a collection of sharable folders, as  a	separate
     maildir:

	 maildirmake -S /usr/local/share/maildirs/notices

     Then, create individuals folders that will be accessed in shared mode:

	 maildirmake -s write -f Weekly /usr/local/share/maildirs/notices

     In  this example, the "Weekly" folder is created, with read/write access to
     everyone. Multiple folders can be created in the same maildir, with differ-
     ent access permissions. Everyone can create a sharable maildir. The  access
     privileges  for individual folders are set by the -s option, and are imple-
     mented using traditional filesystem permissions.

     Use the --add and --del options to add a sharable maildir	to  an	existing
     maildir. Client software that implements this extension will now know where
     to find sharable folders:

	 maildirmake --add notices=/usr/local/share/maildirs/notices $HOME/Maildir

     $HOME/Maildir  is	your  main  maildir.  The argument to -add is nick=path.
     nick is a nickname for this collection of sharable folders, and path is the
     location of the sharable maildir. All folders in the sharable maildir  that
     you  have access to -- such as "Weekly", in this case, will now be accessi-
     ble. Multiple sharable maildirs can be added, by giving each one  a  unique
     nick.

     The --del option "disconnects" the sharable maildir from the main maildir.

   GLOBAL SHARED FOLDERS
     Normally  -add  command must be run for every maildir which needs to access
     the  sharable  maildir.  Alternatively  the  file	 /usr/local/etc/courier-
     imap/maildirshared  can  be  created,  to specify a default set of sharable
     maildirs. Each line in this file takes the following format:

	 nick<tab>path

     nick is a short nickname for the sharable maildir, <tab> is  a  single  tab
     character, path is the pathname to the sharable maildir.

   ACCESSING SHARED FOLDERS
     You may have read or write access to a shared folder. If you have write ac-
     cess,  you  can add messages to the shared folder. You can also delete mes-
     sages that you've added.

     Anyone can create a sharable maildir, so if the sharable maildir  is  actu-
     ally created by you, can can delete any message, not just your own.

CONVERTING PRE-UNICODE FORMAT MAILDIRS
     This section is relevant to:

     *	 Updating Courier-IMAP to version 5.0, and later, from prior versions of
	 Courier-IMAP, or:

     *	 Updating  SqWebmail  to  version 6.0, and later, from prior versions of
	 SqWebmail, or:

     *	 Updating Courier to version 1.0, and  later,  from  prior  versions  of
	 Courier.

     These  versions  have  been  updated to implement native Unicode support in
     several E-mail-related protocols. It is already expected that updating  In-
     ternet  standards	to use native Unicode-formatted E-mail messages will not
     be 100% backwards-compatible, in terms  of  E-mail  client  support.  Given
     that,  this  major update to Unicode will also introduce some backwards-in-
     compatible changes to the internal structure of maildirs, as  a  major  up-
     grade  to	simplify Unicode support going forward. Might as well go through
     the pain of a major upgrade once.

     maildirmake's --checkutf8 and --convutf8 options are tools to aid	in  con-
     version of existing mailboxes to the new Unicode-based naming standard.

   Background
     Mail  folders in a maildir are hidden subdirectories. For example: a folder
     name "Mailing list" is a maildir subdirectory named  $HOME/Maildir/.Mailing
     list ($HOME/Maildir is the main mailbox).

     Prior  to the unicode update, non-English characters in folder names used a
     convention based on the non-standard "modified-UTF7" encoding used by IMAP.
     A	folder	named	"RA(C)sumA(C)"	 is   a   maildir   subdirectory   named
     $HOME/Maildir/.R&AOk-sum&AOk-.    The    current	versions   of	Courier,
     Courier-IMAP, and SqWebmail, now creates $HOME/Maildir/.RA(C)sumA(C)  using
     the UTF8 encoding. This appears as plain ".RA(C)sumA(C)" (hidden) subdirec-
     tory on modern UTF8-based systems.

     Consequently, any existing maildirs with folders that use non-English names
     must  be  converted  as part of updating to the current version of Courier,
     Courier-IMAP, and SqWebmail from pre-unicode versions. This does not happen
     automatically when updating to the current version. This must be done manu-
     ally given the wide variety of individual mail server  configurations  that
     are possible.

   Unicode conversion overview
     Updating from pre-unicode versions involves:

     *	 Renaming  the actual maildir folders, $HOME/Maildir/.names into unicode
	 names (using UTF8).

     *	 Updating the $HOME/Maildir/courierimapsubscribed file, which is a  list
	 of subscribed IMAP folders, if it exists.

     *	 Updating  any maildrop mail filtering recipes, $HOME/.mailfilter, if it
	 exists, to reference the unicode maildir folders; or updating any  cus-
	 tom  site  mail  filtering  engine that delivers to maildir folders, to
	 reference the correct subdirectory names.

   Unicode conversion steps
     The --checkutf8 and --convutf8 options  to  maildirmake  convert  a  single
     maildir to the new unicode format:

	 $ ./maildirmake --checkutf8 ~/Maildir ~/.mailfilter
	 Checking /home/mrsam/Maildir:
	 Mail filter to INBOX.R&AOk-sum&AOk- updated to INBOX.RA(C)sumA(C)
	 Subscription to INBOX.R&AOk-sum&AOk- changed to INBOX.RA(C)sumA(C)
	 Rename INBOX.R&AOk-sum&AOk- to INBOX.RA(C)sumA(C)
	 Verified /home/mrsam/Maildir/courierimapsubscribed
	 Verified /home/mrsam/.mailfilter
	 $ ./maildirmake --convutf8 ~/Maildir ~/.mailfilter
	 Checking /home/mrsam/Maildir:
	 Mail filter to INBOX.R&AOk-sum&AOk- updated to INBOX.RA(C)sumA(C)
	 Subscription to INBOX.R&AOk-sum&AOk- changed to INBOX.RA(C)sumA(C)
	 Rename INBOX.R&AOk-sum&AOk- to INBOX.RA(C)sumA(C)
	 Updating /home/mrsam/Maildir/courierimapsubscribed
	 Updating /home/mrsam/.mailfilter

     --checkutf8 goes through the motions of converting a single maildir to Uni-
     code,  but  without making any actual changes.  --convutf8 does the conver-
     sion for real. The first required parameter is the maildir to convert.  The
     second parameter is optional, and specifies the corresponding maildrop fil-
     tering  recipe, but only if SqWebMail generates the mail filtering recipes.
     SqWebMail's mail filtering recipes  are  parsable,  and  can  be  automati-
     cally-converted.  Non-SqWebMail-generated	.mailfilters cannot be converted
     automatically. The second parameter must be omitted, and the mail filtering
     recipe must be converted by hand.

	 Note

	 All this work is only needed if maildirs have folders with  non-English
	 names.  Ignore everything you've just read if all folder names are Eng-
	 lish-only.  --checkutf8 and --convutf8 will not do anything, and  noth-
	 ing needs to be done.

     To convert all mailboxes to Unicode all at once:

     *	 A shell script needs to run the --checkutf8 option for every mailbox. A
	 list  of  all	accounts'  maildirs needs to be prepared in advance, to-
	 gether  with  the  corresponding  .mailfilters   (where   appropriate).
	 courier-authlib's  authenumerate  command  is	usually  a good starting
	 point. It's ok to explicitly specify each mailbox's  .mailfilter,  when
	 using	SqWebMail  even if a particular mailbox does not use it. It will
	 be ignored. The list of all accounts'	maildirs  gets	converted  to  a
	 shell	script	that  runs  maildirmake with the --checkutf8 option. The
	 script should report any maildir whose --checkutf8  option  reports  an
	 error, and maildirmake exits with a non-zero status.

	 It is safe to run --checkutf8 without shutting down your mail server. A
	 non-zero  exit  from  --checkutf8 indicates a problem (see below) for a
	 particular maildir.

     *	 Once --checkutf8 does not find any problems with any mailbox, shut down
	 the mail server, run --checkutf8 one more time for all mailboxes,  then
	 if  everything  goes  well, upgrade Courier, Courier-IMAP, or SqWebMail
	 and run --convutf8 on every mailbox before restarting the server.

	 Note

	 --convutf8 is a one-shot deal. Do not run --convutf8 a second time  af-
	 ter  it  successfully	converted a maildir. In nearly all cases nothing
	 will happen, but there are rare edge cases where some folder names  may
	 get garbled, or it fails completely.

   Resolving unicode conversion problems
     The  only	likely	problems  that might be encountered is the fall-out from
     buggy IMAP clients that did not follow the  pre-Unicode  naming  convention
     for  non-Latin  folder  names. The customized IMAP "modified-UTF7" encoding
     convention for non-Latin folder names is mostly an IMAP client  convention,
     and  the pre-Unicode version of Courier-IMAP did not enforce it. The server
     took the name from the IMAP client, as is.

     Unicode conversion (--checkutf8 or --convutf8) fails if it finds  a  folder
     name  that does not correctly use IMAP's "modified-UTF7" encoding. This can
     only be resolved manually, by renaming the folder. This  may  also  involve
     manually  editing	courierimapsubscribed and .mailfilter if they exist. The
     bad folder name should be removed from courierimapsubscribed. For .mailfil-
     ter it is sufficient to remove only the comments that  precede  the  actual
     maildrop  rule,  and  --convutf8  will  remove  the entire rule, by itself.
     --convutf8 actually reads only  the  machine-parsable  comments  in  SqWeb-
     Mail-generated  .mailfilter  (plus a few other things in the file), and re-
     places the .mailfilter with the Unicode version based solely on the  parsed
     data.

   After the Unicode conversion
     The  current,  Unicode  version  of  Courier-IMAP supports both Unicode and
     non-Unicode  IMAP	clients;  however  unlike   the   pre-Unicode	version,
     Courier-IMAP  rejects requests from non-Unicode IMAP clients to use or cre-
     ate folders that are not properly encoded.

     Encountering a bad folder during conversion strongly suggests the	presence
     of  an IMAP client that does not correctly encode non-English folder names.
     Such an IMAP client will likely have problems after the conversion.

SEE ALSO
     maildir(5)[3], maildiracl(1)[2], maildirkw(1)[4], maildirwatch(1)[5], mail-
     drop(1)[6], maildirquota(7)[1], deliverquota(8)[7], maildropfilter(7)[8].

AUTHOR
     Sam Varshavchik
	 Author

NOTES
      1. maildirquota(7)
	 http://www.courier-mta.org/maildirquota.html

      2. maildiracl(1)
	 http://www.courier-mta.org/maildiracl.html

      3. maildir(5)
	 http://www.courier-mta.org/maildir.html

      4. maildirkw(1)
	 http://www.courier-mta.org/maildirkw.html

      5. maildirwatch(1)
	 http://www.courier-mta.org/maildirwatch.html

      6. maildrop(1)
	 http://www.courier-mta.org/maildrop.html

      7. deliverquota(8)
	 http://www.courier-mta.org/deliverquota.html

      8. maildropfilter(7)
	 http://www.courier-mta.org/maildropfilter.html

Courier Mail Server		   05/03/2026			  MAILDIRMAKE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=maildirmake&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help