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

# rspamc(1)

rspamd command line client

## NAME

`rspamc` - rspamd command line client

## SYNOPSIS

rspamc \[*options*\] \[*command*\] \[*input-file*\]...

rspamc –help

## DESCRIPTION

`rspamc` is a simple rspamd client, primarily for classifying or learning messages. `rspamc` supports the following commands:

- •

  Scan commands:

  - •

    `symbols`: scan message and show symbols (default command)

- •

  Control commands

  - •

    `learn_spam`: learn message as spam

  - •

    `learn_ham`: learn message as ham

  - •

    `fuzzy_add`: add message to fuzzy storage (check `-f` and `-w` options for this command)

  - •

    `fuzzy_del`: delete message from fuzzy storage (check `-f` option for this command)

  - •

    `stat`: show rspamd statistics

  - •

    `stat_reset`: show and reset rspamd statistics (useful for graphs)

  - •

    `counters`: display rspamd symbols statistics

  - •

    `uptime`: show rspamd uptime

  - •

    `add_symbol`: add or modify symbol settings in rspamd

  - •

    `add_action`: add or modify action settings

Control commands that modify rspamd state are considered privileged and require a password to be specified with the `-P` option (see **OPTIONS**, below, for details).

This depends on a controller’s settings and is discussed in the `rspamd-workers` page (see **SEE ALSO**, below, for details).

`Input files` may be either regular file(s) or a directory to scan. If no files are specified `rspamc` reads from the standard input. Controller commands usually do not accept any input, however learn\* and fuzzy\* commands requires input.

## OPTIONS

- \-h *host\[:port\]*, --connect=*host\[:port\]*

  Specify host and port

- \-P *password*, --password=*password*

  Specify control password. Can be an absolute or relative path, in which case the password will be read from that file.

- \-c *name*, --classifier=*name*

  Classifier to learn spam or ham (bayes is used by default)

- \-w *weight*, --weight=*weight*

  Weight for fuzzy operations

- \-f *number*, --flag=*number*

  Flag for fuzzy operations

- \-p, --pass

  Pass all filters

- \-v, --verbose

  More verbose output

- \-i *ip address*, --ip=*ip address*

  Emulate that message was received from specified ip address

- \-u *username*, --user=*username*

  Emulate that message was received from specified authenticated user

- \-d *user@domain*, --deliver=*user@domain*

  Emulate that message was delivered to specified user (for LDA/statistics)

- \-F *user@domain*, --from=*user@domain*

  Emulate that message has specified SMTP FROM address

- \-r *user@domain*, --rcpt=*user@domain*

  Emulate that message has specified SMTP RCPT address

- \--helo=*helo\_string*

  Imitate SMTP HELO passing from MTA

- \--hostname=*hostname*

  Imitate hostname passing from MTA (rspamd assumes that it is verified by MTA)

- \-t *seconds*, --timeout=*seconds*

  Timeout for waiting for a reply (can be floating point number, e.g. 0.1)

- \-b *host:port*, --bind=*host:port*

  Bind to specified ip address

- \-R, --human

  Output human readable report. The first line of the output contains the message score and three threshold scores, in this format:

-

  ```
      score/greylist/addheader/reject,action=N:ACTION,spam=0|1,skipped=0|1
  ```

- \-j, --json

  Output formatted JSON

- \--ucl

  Output UCL

- \--raw

  Output raw data received from rspamd (compacted JSON)

- \--headers

  Output HTTP headers from a reply

- \--extended-urls

  Output URLs in an extended format, showing full URL, host and the part of host that was used by surbl module (if enabled).

- \-n *parallel\_count*, --max-requests=*parallel\_count*

  Maximum number of requests to rspamd executed in parallel (8 by default)

- \-e *command*, --execute=*command*

  Execute the specified command with either mime output (if `mime` option is also specified) or formatted rspamd output

- \--mime

  Output the full mime message instead of scanning results only

- \--header=*header*

  Add custom HTTP header for a request. You may specify header in format `name=value` or just `name` for an empty header. This option can be repeated multiple times.

- \--sort=*type*

  Sort output according to a specific field. For `counters` command the allowed values for this key are `name`, `weight`, `frequency` and `hits`. Appending `:asc` to any of these types inverts sorting order.

- \--commands

  List available commands

## RETURN VALUE

On exit `rspamc` returns `0` if operation was successful and an error code otherwise.

## EXAMPLES

Check stdin:

-

  ```
  rspamc < some_file
  ```

Check files:

-

  ```
  rspamc symbols file1 file2 file3
  ```

Learn files:

-

  ```
  rspamc -P pass learn_spam file1 file2 file3
  ```

Add fuzzy hash to set 2:

-

  ```
  rspamc -P pass -f 2 -w 10 fuzzy_add file1 file2
  ```

Delete fuzzy hash from other server:

-

  ```
  rspamc -P pass -h hostname:11334 -f 2 fuzzy_del file1 file2
  ```

Get statistics:

-

  ```
  rspamc stat
  ```

Get uptime:

-

  ```
  rspamc uptime
  ```

Add custom rule’s weight:

-

  ```
  rspamc add_symbol test 1.5
  ```

Add custom action’s weight:

-

  ```
  rspamc add_action reject 7.1
  ```

## SEE ALSO

Rspamd documentation and source code may be downloaded from ⟨https://rspamd.com/⟩\\c .
