1. NAME

mutt_dotlock - Lock mail spool files.

2. SYNOPSIS

mutt_dotlock [-t|-f|-u|-d] [-p] [-r retries] file

3. DESCRIPTION

mutt_dotlock implements the traditional mail spool file locking method: To lock file, a file named file.lock is created. The program operates with group mail privileges if necessary.

4. OPTIONS

-t Just try.

mutt_dotlock won't actually lock a file, but inform the invoking process if it's at all possible to lock file.

-f Force the lock. If another process holds a lock on file longer than a certain amount of time,

mutt_dotlock will break that lock by removing the lockfile.

-u Unlock.

mutt_dotlock will remove file.lock.

-d Delete.

mutt_dotlock will lock file, remove it if it has length 0, and afterwards remove file.lock.

-p Use privileges. If given this option,

mutt_dotlock will operate with group mail privileges when creating and deleting lock files.

-r retries This command line option tells

mutt_dotlock to try locking retries times before giving up or (if invoked with the

-f command line option) break a lock. The default value is 5.

mutt_dotlock waits one second between successive locking attempts.

5. FILES

file.lock The lock file

mutt_dotlock generates.

6. SEE ALSO

R fcntl (2),

R flock (2),

R lockfile (1),

R mutt (1)

7. DIAGNOSTICS

mutt_dotlock gives all diagnostics in its return values:

0 - DL_EX_OK

    The program was successful.

1 - DL_EX_ERROR

    An unspecified error such as bad command line parameters, lack of system memory and the like has occured.

3 - DL_EX_EXIST

    The user wants to lock a file which has been locked by another process already. If

mutt_dotlock is invoked with the

-f command line option,

mutt_dotlock won't generate this error, but break other processes' locks.

4 - DL_EX_NEED_RPIVS

    This return value only occurs if

mutt_dotlock has been invoked with the

-t command line option. It means that

mutt_dotlock will have to use its group mail privileges to lock file.

5 - DL_EX_IMPOSSIBLE

    This return value only occurs if

mutt_dotlock has been invoked with the

-t command line option. It means that

mutt_dotlock is unable to lock file even with group mail privileges.

8. NOTES

mutt_dotlock tries to implement an NFS-safe dotlocking method which was borrowed from

lockfile (1).

If the user can't open file for reading with his normal privileges,

mutt_dotlock will return the

DL_EX_ERROR exit value to avoid certain attacks against other users' spool files. The code carefully avoids race conditions when checking permissions; for details of all this see the comments in dotlock.c.

9. HISTORY

mutt_dotlock is part of the Mutt mail user agent package. It has been created to avoid running mutt with group mail privileges.

10. AUTHOR

Thomas Roessler <>