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

FreeBSD Manual Pages


home | help
LOCKMAIL(1)		    Double Precision, Inc.		   LOCKMAIL(1)

       lockmail	- create mail lock files

       lockmail	[-r] [-t timeout] {lockfile} {program} [argument...]

       lockmail	is a helper utility for	working	with mailbox files. Mailbox
       files must be locked to prevent other applications from modifying the
       mailbox at the same time. Different system use different	locking
       conventions.  lockmail uses two of the most common locking mechanisms
       in use, which should work reliably on most systems.

       lockfile	is the pathname	to an existing mailbox file. By	default,
       lockmail	tries to lock the mailbox every	five seconds (if the mailbox
       is already locked), and will give up after three	minutes. After the
       mailbox is successfully locked, lockmail	runs program as	a child
       process,	with any optional arguments. When program terminates, lockmail
       removes the mailbox lock, and terminates	itself.

	   If a	regular	lock fails, try	a read-only lock. Use this option to
	   lock	mailbox	files in a read-only directory.

       -t timeout
	   If the lock attempt fails, try again	for up to timeout seconds. The
	   actual timeout is rounded up	to the next five second	interval (a
	   lock	attempt	is tried every five seconds).

       This section briefly describes the locking mechanism used by lockmail.
       lockmail	uses three different locking conventions in order to maximize
       compatibility with other	mail software: C-Client	folder locks,
       dot-locks, and file locks.

   C-Client folder locks
       Mail software based on the C-Client library creates lock	files named
       /tmp/.dddddd.iiiiii. Here, dddddd and iiiiii are	the device number and
       the inode number	of the mailbox file (the st_dev	and st_ino fields in
       the inode), in hexadecimal. If the process ID saved in the C-Client
       folder lock file	is not valid, lockmail concludes that it's a stale
       lock file, and will remove it.

	   A race condition exists where a C-Client process is killed after it
	   creates a lock file,	but before saving its process ID in the	lock
	   file. The race window is very small,	but it exists. The C-Client
	   library does	not appear to ever clear out the lock file.

	   lockmail attempts to	resolve	this race condition by deleting
	   zero-length lock files that are at least five minutes old.

       lockmail	also creates, and honors dot-lock files. Dot-lock files	are
       first created as	temporary files, then linked to	lockfile.lock. The
       link operation fails if the dot-lock file already exists.  lockmail
       uses an enhanced	method of dot-locking, where its process ID, and the
       name of the server where	lockmail is running is also saved in its
       dot-lock	file. If the operation fails due to an existing	dot-lock file
       that was	created	by another lockmail process on the same	server,	and
       the process ID no longer	exists,	this stale dot-lock file is removed
       immediately. In all other situations a dot-lock file older than five
       minutes is considered stale, and	removed.

	   A failure to	create a dot-lock file is silently ignored if the
	   reason for the failure is because lockmail does not have the	write
	   permission in the dot-lock file's directory.	The incoming mail
	   spool directory (usually /var/mail) typically does not have global
	   write permissions, so the attempt to	create the dot-lock file in
	   the spool directory will fail, and lockmail will be content with
	   using file-locking only.

   File	locks
       The final locking mechanism lockmail uses is the	operating system's
       file locking facility. If lockmail fails	to obtain all three locks,
       lockmail	will sleep for five seconds and	try again. The only exception
       is a failure to create a	dot-lock because of no write access to the
       dot-lock	file's directory, which	is ignored. If lockmail	still fails to
       obtain all required locks in the	amount of time specified by the	-t
       option (or its default value), lockmail will terminate with the
       EX_TEMPFAIL exit	code.

       lockmail	runs program after obtaining the last file lock, waits until
       program terminates, and releases	all locks.  program must terminate
       before any of the locks obtained	by lockmail expire, and	are considered
       stale.  lockmail	will then terminate with the same exit code as

       lockmail	terminates with	the same exit status as	programlockmail
       terminates with the EX_TEMPFAIL exit status if it was unable to obtain
       a lock, or if program was killed	by a signal.

       maildrop(1)[1], sendmail(8).

       Sam Varshavchik

	1. maildrop(1)

Courier	Mail Server		  06/20/2015			   LOCKMAIL(1)


Want to link to this manual page? Use this URL:

home | help