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

FreeBSD Manual Pages

  
 
  

home | help
MAILDIRMAKE(1)		    Double Precision, Inc.		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
	   information.	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-format 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 specifying 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
       period character	is designated as a hierarchy separator,	run
       maildirmake -f Drafts.Urgent mail/Maildir instead. This creates
       mail/Maildir/.Drafts.Urgent, 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
       different access	permissions. Everyone can create a sharable maildir.
       The access privileges for individual folders are	set by the -s option,
       and are implemented 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 accessible. 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
       access, you can add messages to the shared folder. You can also delete
       messages	that you've added.

       Anyone can create a sharable maildir, so	if the sharable	maildir	is
       actually	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
       Internet	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-incompatible changes to the internal structure	of maildirs,
       as a major upgrade 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
       conversion 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 "Rsum" is a	maildir	subdirectory named
       $HOME/Maildir/.R&AOk-sum&AOk-. The current versions of Courier,
       Courier-IMAP, and SqWebmail, now	creates	$HOME/Maildir/.Rsum using the
       UTF8 encoding. This appears as plain ".Rsum" (hidden) subdirectory 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 manually 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 custom 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.Rsum
	   Subscription	to INBOX.R&AOk-sum&AOk-	changed	to INBOX.Rsum
	   Rename INBOX.R&AOk-sum&AOk- to INBOX.Rsum
	   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.Rsum
	   Subscription	to INBOX.R&AOk-sum&AOk-	changed	to INBOX.Rsum
	   Rename INBOX.R&AOk-sum&AOk- to INBOX.Rsum
	   Updating /home/mrsam/Maildir/courierimapsubscribed
	   Updating /home/mrsam/.mailfilter

       --checkutf8 goes	through	the motions of converting a single maildir to
       Unicode,	but without making any actual changes.	--convutf8 does	the
       conversion for real. The	first required parameter is the	maildir	to
       convert.	The second parameter is	optional, and specifies	the
       corresponding maildrop filtering	recipe,	but only if SqWebMail
       generates the mail filtering recipes.  SqWebMail's mail filtering
       recipes are parsable, and can be	automatically-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 English-only.  --checkutf8	and --convutf8 will not	do
	   anything, and nothing 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, together 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
	   after 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 .mailfilter 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 SqWebMail-generated	.mailfilter (plus a
       few other things	in the file), and replaces 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
       create 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],
       maildrop(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		  04/14/2022			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+14.3.quarterly>

home | help