% RSPAMC(1) Rspamd User Manual

# 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/>.

[rspamd-workers]: https://rspamd.com/doc/workers/
