---
name: "dbclean"
section: "8"
platform: "linux"
package: "dcc-server"
version: "1.2.74-2"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/dbclean"
---

# dbclean(8)

Clean Distributed Checksum Clearinghouse Database

## NAME

**dbclean** – Clean Distributed Checksum Clearinghouse Database

## SYNOPSIS

**dbclean** \[**-dDfFNRPSVq**\] \[**-i** *id*\]\[ **-a** \[*server-addr*\] \[*,port*\]\] \[**-h** *homedir*\]\
 \[**-G** *on*\] \[**-s** *hash-size*\] \[**-e** *seconds*\] \[**-E** *spamsecs*\]\
 \[**-t** *type,allsecs,threshold,bulksecs*\] \[**-L** *ltype,facility.level*\]

## DESCRIPTION

**Dbclean** creates empty, rebuilds corrupted, and deletes or expires old reports of checksums from DCC databases. It should be installed where it will be found with the path given the DCC server daemon when the daemon needs to expand the hash table. See [dccd(8)](/dccd/8.md). It should also be run by [cron(8)](/cron/8.md) approximately daily.

If the hash table in the database has been damaged, **dbclean** tries to repair the database.

The contents of the *whitelist* file are built into the DCC server's database. Changes to the whitelist are not effective until dbclean is run to expire reports. White or blacklists can also be used by DCC clients, and generally work better there.

### OPTIONS

The following options are available:

- **-d**

  enables debugging output. Additional **-d** options increase the number of messages.

- **-D**

  indicates that [dccd(8)](/dccd/8.md) started **dbclean**.

- **-F**

  uses read() and write() instead of mmap() in some cases to access the DCC  database. This works better on some versions of Solaris provided the entire DCC database fits in RAM and provided the file system has not been tuned for the large, random accesses of a DCC database. It is the default on Solaris.

- **-f**

  turns off **-F**.

- **-N**

  creates a new, empty database. There must not be an existing database and the DCC server, [dccd(8)](/dccd/8.md), must not be running.

- **-R**

  repairs a database.

- **-P**

  expires old checksums from a database using the **-e**, **-E**, and **-t** values from the preceding use of **dbclean**. **-P** cannot be used with **-e**, **-E**, or **-t**. Note also that using **-P** differs from not using **-e** **-E** or **-t**, because in the absence of all four, their default values are used.

- **-S**

  says that the DCC server, [dccd(8)](/dccd/8.md), is not running and so **dbclean** should run stand-alone and not try to tell the DCC server about changes to the database. **-i** is not needed when **-S** is present.

- **-V**

  displays the version of the DCC database cleaner.

- **-q**

  quiets the announcement of results at the end.

- **-i** *id*

  specifies the DCC ID recognized by the local DCC server as its own. This ID allows the DCC server to recognize commands from **dbclean** to stop using the database while it is being cleaned.

- **-a**

  \[*server-addr*\] \[*,port*\] is commonly used to specify a UDP port or IP address of the local server other than the default.

- **-h** *homedir*

  overrides the default DCC home directory, which is often /var/dcc.

- **-G** *on*

  cleans a greylist database.

- **-s** *hash-size*

  specifies a size for the hash table. By default the hash table is rebuilt to be approximately 80% full based on an estimate of the number of distinct checksums in the main file.

- **-e** *seconds*

  specifies that reports older than *seconds* and with totals below their **-t** thresholds should be deleted. Reports older than *seconds* of checksums that have been reported more recently are summarized in the database. The default value is 2 days or the value of **-E**, whichever is smaller. The 2 day default is reduced if the system does not appear to have enough RAM to hold the database. The minimum is 1 hour. *Seconds* can also be *NEVER* or a number of hours, days, or weeks followed by *HOURS*, *H*, *DAYS*, *D*, *WEEKS* or *W*.

  DCC servers that are not very busy and are isolated or do not receive "floods" of checksums from busy servers should use longer values to increase their chances of recognizing bulk mail.

- **-E** *spamsecs*

  changes the expiration of checksums exceding **-t** thresholds from the default of 30 days or the explicit value of **-e**, whichever is larger. The 30 day default is reduced if the system does not have enough RAM to hold the database. *Spamsecs* can also be *NEVER* or a number of hours, days, or weeks followed by *HOURS*, *H*, *DAYS*, *D*, *WEEKS* or *W*.

- **-t** *type,allsecs*\[*,threshold,bulksecs*\]

  overrides the global **-e** setting and specifies that reports of checksums of *type* with total counts of at least *threshold* should be kept for *bulksecs* seconds. All reports should be kept for the shorter duration, *allsecs* seconds. The threshold is either a number or the string *MANY* indicating millions of targets. By default **dbclean** acts as if given **-t** *Fuz1,seconds,20,spamsecs* **-t** *Fuz2,seconds,20,spamsecs*, where *seconds* is the value for **-e** and *spamsecs* is the value for **-E**. All other checksum types act as if **-t** *type,seconds* were specified. *Allsecs* and *bulksecs* can also be *NEVER* or a number of hours, days, or weeks followed by *HOURS*, *H*, *DAYS*, *D*, *WEEKS* or *W*.

- **-L** *ltype,facility.level*

  specifies how messages should be logged. *Ltype* must be *error* or *info* to indicate which of the two types of messages are being controlled. *Level* must be a [syslog(3)](/syslog/3.md) level among *EMERG*, *ALERT*, *CRIT*, *ERR*, *WARNING*, *NOTICE*, *INFO*, and *DEBUG*. *Facility* must be among *AUTH*, *AUTHPRIV*, *CRON*, *DAEMON*, *FTP*, *KERN*, *LPR*, *MAIL*, *NEWS*, *USER*, *UUCP*, and *LOCAL0* through *LOCAL7*. The default is equivalent to

  ```
  -L info,MAIL.NOTICE -L error,MAIL.ERR
  ```

**dbclean** exits 0 on success, and \> 0 if an error occurs.

## FILES

- */var/dcc*

  is the DCC home directory containing data and control files.

- *dcc\_db*

  is the main file containing mail checksums.

- *dcc\_db.hash*

  mail checksum database hash table.

- *grey\_db*

  is the database of greylist checksums.

- *grey\_db.hash*

  is the greylist database hash table.

- *dcc\_db-new*, *dcc\_db-new.hash*, *grey\_db-new*, *grey\_db-new.hash*

  new database and hash files until they are renamed.

- *dcc\_db-old*, *grey\_db-old*

  previous database files.

- *ids*

  list of IDs and passwords, as described in [dccd(8)](/dccd/8.md).

- *whitelist*

  contains the DCC server whitelist in the format described in [dcc(8)](/dcc/8.md).

- *grey\_whitelist*

  contains the greylist server whitelist.

## SEE ALSO

[cdcc(8)](/cdcc/8.md), [cron(8)](/cron/8.md), [dcc(8)](/dcc/8.md), [dccd(8)](/dccd/8.md), [dblist(8)](/dblist/8.md), [dccifd(8)](/dccifd/8.md), dccm(8), [dccproc(8)](/dccproc/8.md).

## HISTORY

Implementation of **dbclean** was started at Rhyolite Software in 2000. This describes version 1.2.74.
