---
name: "mail.local"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/mail.local/8"
---

# mail.local(8)

store mail in a mailbox

## NAME

mail.local - store mail in a mailbox

## SYNOPSIS

**mail.local** \[**-7**\] \[**-B**\] \[**-b**\] \[**-d**\] \[**-D** *mbdb*\] \[**-l**\] \[**-s**\] \[**-f** *from*\|**-r** *from*\] \[**-h** *filename* \] *user ...*

## DESCRIPTION

**Mail.local** reads the standard input up to an end-of-file and appends it to each *user's* **mail** file.  The *user* must be a valid user name.

The options are as follows:

- **-7**

  Do not advertise 8BITMIME support in LMTP mode.

- **-B**

  Turn off the attempts to notify the \`\`biff'' service.

- **-b**

  Return a permanent error instead of a temporary error if a mailbox exceeds quota.

- **-d**

  Specify this is a delivery (for backward compatibility). This option has no effect.

- **-D** *mbdb*

  Specify the name of the mailbox database which is used to look up local recipient names. This option defaults to "pw", which means use getpwnam().

- **-f** *from*

  Specify the sender's name.

- **-l**

  Turn on LMTP mode.

- **-s**

  Turn off the [fsync(2)](/fsync/2.md) call that forces the mailbox to be committed to disk before returning a "success" status.

- **-r** *from*

  Specify the sender's name (for backward compatibility). Same as -f.

- **-h** *filename*

  Store incoming mail in *filename* in the user's home directory instead of a system mail spool directory.

The next options are only available if **mail.local** has been compiled with -DHASHSPOOL.

- **-H** *hashtypehashdepth*

  Select hashed mail directories. Valid hash types are **u** for user name and **m** for MD5 (requires compilation with -DHASHSPOOLMD5). Example: **-H** *u2* selects user name hashing with a hash depth of 2. Note: there must be no space between the hash type and the depth.

- **-p** *path*

  Specify an alternate mail spool path.

- **-n**

  Specify that the domain part of recipient addresses in LMTP mode should not be stripped.

Individual mail messages in the mailbox are delimited by an empty line followed by a line beginning with the string \`\`From ''. A line containing the string \`\`From '', the sender's name and a time stamp is prepended to each delivered mail message. A blank line is appended to each message. A greater-than character (\`\`\>'') is prepended to any line in the message which could be mistaken for a \`\`From '' delimiter line (that is, a line beginning with the five characters \`\`From '' following a blank line).

The mail files are exclusively locked with  [flock(2)](/flock/2.md)  while mail is appended,  and a **user.lock** file also is created while the mailbox is locked  for compatibility with older MUAs.

If the \`\`biff'' service is returned by  [getservbyname(3)](/getservbyname/3.md),  the biff server is notified of delivered mail.

The **mail.local** utility exits 0 on success, and \>0 if an error occurs.

## ENVIRONMENT

- TZ

  Used to set the appropriate time zone on the timestamp.

## FILES

- /tmp/local.XXXXXX

  temporary files

- /var/mail/user

  user's default mailbox directory

- /var/mail/user.lock

  lock file for a user's default mailbox

## SEE ALSO

[mail(1)](/mail/1.md),  [flock(2)](/flock/2.md),  [getservbyname(3)](/getservbyname/3.md),  [comsat(8)](/comsat/8.md),  [sendmail(8)](/sendmail/8.md)

## WARNING

**mail.local** escapes only "^From " lines that follow an empty line. If all lines starting with "From " should be escaped, use the 'E' flag for the local mailer in the sendmail.cf file.

## HISTORY

A superset of **mail.local** (handling mailbox reading as well as mail delivery) appeared in  Version 7 AT&T UNIX  as the program **mail**.
