---
name: "fdm"
section: "1"
platform: "linux"
package: "fdm"
version: "2.2-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/fdm"
---

# fdm(1)

fetch and deliver mail

## NAME

**fdm** – fetch and deliver mail

## SYNOPSIS

**fdm** \[**-hklmnqv**\] \[**-a** *account*\] \[**-D** *name*=*value*\] \[**-f** *conffile*\] \[**-u** *user*\] \[**-x** *account*\] \[**fetch** \| **poll** \| **cache**\]

## DESCRIPTION

The **fdm** program fetches mail from a POP3 or IMAP server or from stdin and delivers it based on a ruleset in the configuration file.

The options are as follows:

- **-a** *name*

  Process only the specified account. This option may appear multiple times. The account name may include shell glob characters to match multiple accounts.

- **-D** *name*=*value*

  This option defines a macro for use when parsing the configuration file. The macro name must be prefixed with $ or % to specify a string or numeric macro. This option may appear multiple times.

- **-f** *conffile*

  Specify the configuration file location. Default is *~/.fdm.conf*, or */etc/fdm.conf* if that doesn't exist.

- **-h**

  Look at the HOME environment variable to ascertain the user's home directory.

- **-k**

  Keep all mail after delivery, regardless of whether it matches a **drop** action. Note that mails kept in this way will be refetched by **fdm** if it is run again on the same account.

- **-l**

  Log using [syslog(3)](/syslog/3.md) rather than to stderr.

- **-m**

  Ignore the lock file and run regardless of other instances of **fdm**.

- **-n**

  Do not process any accounts, just verify the configuration file syntax and exit.

- **-q**

  Quiet mode. Only print errors.

- **-u** *user*

  Specify the default user for delivery. This overrides the **default-user** option in the configuration file.

- **-v**

  Request verbose logging. This option may be specified multiple times. **-vv** will print information on configuration (useful with **-n**). **-vvvv** duplicates all traffic to and from remote servers to stdout. This feature is disabled when using the **-l** flag.

- **-x** *name*

  Exclude the named account. Multiple **-x** options may be specified. As with **-a**, shell glob characters may be used.

- **fetch** \| **poll** \| **cache**

  The **fetch** command instructs **fdm** to fetch and deliver messages. The **poll** command polls the accounts in the configuration file and reports a message count for each. **cache** allows **fdm** cache files to be manipulated: see the next section.

## CACHE COMMANDS

The following cache manipulation commands are supported:

- **cache** **add** *path* *string*

  - **cache** **remove** *path* *string*

  Add or remove *string* as a key in the cache at *path*.

- **cache** **list** \[*path*\]

  List the number of keys in the specified cache, or if *path* is omitted, in all caches declared in the configuration file.

- **cache** **dump** *path*

  Dump the contents of the cache *path* to stdout. Each key is printed followed by a space and the timestamp as Unix time.

- **cache** **clear** *path*

  Delete all keys from the cache at *path*.

## FILES

- *~/.fdm.conf*

  default **fdm** configuration file

- */etc/fdm.conf*

  default system-wide configuration file

- *~/.fdm.lock*

  default lock file

- */var/db/fdm.lock*

  lock file for root user

## SEE ALSO

[mail(1)](/mail/1.md), [fdm.conf(5)](/fdm.conf/5.md), [sendmail(8)](/sendmail/8.md)

## AUTHORS

Nicholas Marriott ⟨*nicholas.marriott@gmail.com*⟩
