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

usemail

v0.5.1

Published

Extendable framework for SMTP servers

Downloads

16

Readme

Usemail

Extendable framework for SMTP servers.

Motivation

I was looking at ways to build a custom mail server in Node. The obvious first candidate was Haraka. Being mature and stable, as well as extendable, it looked like a perfect fit. Haraka relies heavily on all kinds of configuration files though, whereas I prefer the "code over configuration" approach that is more prevalent in the Node community.

Next I looked into Nodemailer's smtp-server. This module meets all the low-level requirements for building mail servers in Node. What it doesn't do though, is define a standardized way to break things up in smaller, reusable functionalities. I wanted an extendable higher-level API on top of it, similar to web frameworks like Express and Fastify, but I couldn't find any. So I decided to build one myself.

Installation

npm install usemail

Usage

var usemail = require('usemail')
var filter = require('usemail-address-filter')
var spf = require('usemail-spf')

var mail = usemail()
var storage = new Map()

mail.from(spf())
mail.to(filter.allow({ addresses: ['[email protected]'] })
mail.use(usemail.parse())
mail.use(function (session) {
  storage.set(session.get('id'), session.get('text'))
})

mail.listen(25)

This example creates a basic mail server that stores the text of incoming messages in memory. First, before accepting the message, it validates the SPF records using usemail-spf. Then usemail-address-filter filters out all mails, except those sent to explicitly allowed recipients. Only when both those checks have passed, the incoming mail data is parsed and stored.

Plugins

So far, the following Usemail plugins are available on npm:

If you want to add your own to the list, feel free to open a PR!

License

Apache-2.0