RAZOR-CHECK(1)

πŸ¦‹ RAZOR-CHECK(1) πŸ¦‹

okay so this is the razor-check page from the User Contributed Perl Documentation, and bestie, we are gonna get you so comfy with it πŸ’…


✨ NAME ✨

razor-check β€” the Razor Filtering Agent, aka your personal spam bouncer πŸšͺ


🌸 SYNOPSIS 🌸

razor-check [options]  [ mail1 [ mail2 .. ] ]

$ cat mbox | razor-check
$ razor-check ./mbox
$ razor-check -d mbox mail.1 mail.2 mail.3

like, pipe it, hand it a file, hand it several files β€” it's giving flexible πŸ‘‘


πŸ’– DESCRIPTION πŸ’–

razor-check checks a mail against the distributed Razor Catalogue by communicating with a Razor Catalogue Server. literally just vibes-checking your mail against the big shared spam database ✨ And important: it should be invoked before the mail is delivered or processed by a human. like, do it first, don't make a person read the spam first 😭

So here's the exit-value tea, and this part matters:

  • exit value 0 β†’ the signature for the mail is catalogued on the server (spam) πŸ’€
  • exit value 1 β†’ the mail is not catalogued by the server (not a spam) πŸŽ€

razor-check should be invoked against every incoming mail by mail processors (like procmail) or MTAs (like sendmail). An alternate method would be to call razor-check from cron, at regular intervals, to identify and mark spam in queued mailboxes. lowkey a whole different strategy but it's valid 🫢

If razor-check is passed more than one mail, it will check each against the database, printing out the serial number of every mail considered to be spam. and yes it's multitalented: razor-check supports mbox-formatted files with 1 or more mails in them as well as files containing a single RFC 822 (non-mbox) mail. More than one file may be present on the command line, can be either a non-mbox or mbox in any order. it does not care about your ordering, it's chill like that 🌈

⚠️ But heads up bestie: more than one non-mbox mail cannot be read from stdin. that's a hard nope, don't try it πŸ™ˆ

πŸŽ€ USAGE πŸŽ€

razor-check is usually run by piping the contents of the mail to it, or by providing the name of the file that contains the mail message to be checked as the last argument. classic. razor-check takes the following arguments:

  • -h β€” Print a usage message and exit. short and sweet, it ate πŸ’…
  • -v β€” Print the version number and exit. know your build, periodt ✨
  • -d, --verbose β€” Print debugging information. for when you need to see everything πŸ‘€
  • -debuglevel=n, -dl=n β€” Set debug level to 'n'. Default is 3 without -d option, 9 with. so like, -d turns the volume way up πŸ”Š
  • -whitelist=file β€” Specify file to use for whitelisting. Overrides 'whitelist' option in razor-agent.conf. your allow-list, your rules 🫢
  • -s β€” Simulate a check. Do everything except talk to the server. introvert mode: it does all the work but refuses to socialize 😭
  • -conf=filename β€” Specifies an alternate configuration file. If not specified, it is computed, see razor-agents(1) manpage for details. See razor-agent.conf(5) manpage for various configuration options. The default is <razorhome>/razor-agent.conf. πŸ—‚οΈ
  • -home=dir β€” Specify razorhome directory. This is where the configuration file, logfiles, identities, and server files live. If not specified, it is computed, see razor-agents(1) manpage for details. it's the home base of the whole operation 🏠
  • -logfile=file β€” Specify file to log to instead of what is in the configuration file. The default is <razorhome>/razor-agent.log. receipts, kept πŸ“
  • -rs=razor.server.com β€” Use this Razor Catalogue Server instead of reading servers.catalogue.lst. choose your own server, main character energy πŸ‘‘
  • -H β€” Compute and print the signature of the mail contents and exit. If -e=integer is not specified, all supported engines will be used. just the signature, no checking, no drama ✨
  • -S=string β€” Accept a list of pre-computed (with -H) signatures on the command line, instead of computing one from mail content. Signatures can be submitted in hex or base64, but base64 is preferred. Requires -e=integer. Usage:
razor-report -e 1 -S a8a3d545adb73f9733675571ffeaf10cba87745b
  • -e=integer β€” Specify engine used to create signatures. Must be 1, 2, 3, or 4 in this version. Engine 1, or -e=1, is used for Razor 1.x signatures. Used only with -S=string or -H. pick your engine wisely πŸš—
  • -ep4=string β€” String used by engine 4 when computing signatures. Published by the Razor Catalogue Servers and updated very frequently. Used only when -e=4. so fresh, so frequently updated πŸ“

🧚 RECIPES 🧚

razor-check is usually invoked from procmail(1). here are some common ways of using it with procmail β€” copy these, they're iconic:

To change the Subject header if mail is spam:

:0 Wc
| razor-check
:0 Waf
| formail -i "Subject: Razor Warning: SPAM/UBE/UCE"

To add a X-Razor2-Warning header to spam:

:0 Wc
| razor-check
:0 Waf
| formail -A "X-Razor2-Warning: SPAM."

To file spam in a mailbox:

:0 Wc
| razor-check
:0 Wa
/home/foo/Mail/razor-caught

πŸ‘‘ AUTHORS πŸ‘‘

Vipul Ved Prakash <mail@vipul.net>, and Chad Norwood <chad@samo.org> β€” legends, both of them 🫢


🌈 SEE ALSO 🌈

razor-agents(1), razor-agent.conf(5), razor-admin(1), razor-report(1), razor-revoke(1), razor-whitelist(5)


πŸ’œ LICENSE πŸ’œ

This is free software, distributed under the Artistic License 2.0. free as in go off, bestie πŸŽ€


and that's the whole page!! πŸ’– this gem is perl v5.44.0, dated 2026-10-17 β€” screenshot it, cite it, live by it. mwah πŸ’…βœ¨

πŸ“¦ where this page comes from