npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

spamc-stream

v1.0.2

Published

A stream-enabled module to connect to SpamAssassin spamd daemon and process requests

Downloads

15

Readme

spamc-stream

spamc-stream is a nodejs module that connects to spamassassin's spamd daemon. You are able to:

  • Check a message for a spam score and return back what spamassassin matched on
  • Stream Messages from any Readable Nodejs Stream
  • Ability to train Spamassassin with Ham and Spam
  • and everything else that spamc is capable of

Build Status

Usage

npm install spamc-stream

This example will parse a message to spamassassin to perform a report and will callback on success using a file stream. Note that there is no transformation happening on spamc-stream's side therefore the stream is directly piped into the TCP/NET connection.

var fs = require('fs');
var Spamc = require('spamc-stream');
var client = new Spamc();

var reporter = client.report();

var fsStream = fs.createReadStream('./tmp/file');
fsStream.pipe(reporter);

reporter.on('report', function(report) {
  console.log("Was the email a spam?", report.isSpam);
})

reporter.on('error', function(error) {
  console.log(error);
})

Connection settings

You can define connection settings such as host, port and timeout when creating a new instance:

var Spamc = require('spamc-stream');
// Args, Host, Port, Timeout (seconds)
var client = new Spamc('localhost', 783, 15);

Note that the default port for Spamassassin is set to 783 and Connection Timeout is in seconds.

Methods

  • ping - Check if Spamc is working. Returns two arguments of error and pong. If Pong is true then Spamc is available.
  • check (headers:Object) Returns: PassThrough Stream - checks a message for a spam score and returns an object of information.
  • report ↑ - like symbols but matches also includes a small description.
  • symbols ↑ - like check but also returns what the message matched on.
  • reportIfSpam ↑ - only returns a result if message is spam.
  • process ↑ - like check but also returns a processed message with extra headers.
  • headers ↑ - like check but also returns the message headers in a array.
  • spam ↑ - parse a message to spamassassin and learn it as spam
  • ham ↑ - parse a message to spamassassin and learn it as ham
  • forget ↑ - parse a message to spamassassin and forget it
  • tell ↑ - ability to tell spamassassin that the message is spam
  • revoke ↑ - abilty to tell spamassassin that the message is not spam

↑ : Follows the same argument pattern as the previous

Header

All functions take a header argument before returning a PassThrough Stream. Documentation on these headers is available here.

Note: To maintain protocol API compatibility it is advised to pass a 'Content-length' header with every request like so:

var fs = require('fs');
var Spamc = require('spamc-stream');
var client = new Spamc();

var spam = fs.createReadStream('./samples/easyspam');
var spamLength = fs.statSync('./samples/easyspam').size;

var reporter = client.report({ 'Content-length': spamLength });
spam.pipe(reporter);
// ...

License

This module is heavily based on work of Carl Glaysher and who doesn't love the MIT license?