Prevent Simultaneous Rebuilds
The alias database files can be rebuilt in two ways:
automatically, by the daemon or by users sending
mail (and thereby indirectly running
sendmail),[207] or explicitly, by users rebuilding the
database with newaliases (or
the -bi
command-line switch). To prevent one rebuild from
compromising and corrupting another,
sendmail uses file
locking.
The sendmail program uses flock(2) or fcntl(2) with F_SETLK to lock the aliases file (depending on how it was compiled). If the aliases file is already locked (because the database is currently being rebuilt), sendmail prints the following message:
Alias file name is already being rebuilt
If sendmail is attempting to
rebuild because it was run as
newaliases or with the
-bi
command-line switch, the previous message is
printed, and the program exits. Otherwise, the
previous message is printed, and
sendmail waits for the
aliases file to become
unlocked.
Once the aliases file is locked,
sendmail next looks to see
whether the key @
appears in the database. If that key is missing,
sendmail knows the database
is still being rebuilt. If the AliasWait
option (AliasWait on page 973) has a value,
sendmail waits that amount of
time for the other rebuild to finish. If the
AliasWait
option is missing or has a zero value,
sendmail plows ahead,
trusting the previous lock to prevent simultaneous
rebuilds.
The sendmail program waits the
number of seconds specified by the AliasWait
option for an
@
key to appear in the database. If that ...
Get sendmail, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.