node package manager
Easy collaboration. Discover, share, and reuse code in your team. Create a free org ยป

smtpeshka

smtpeshka Build Status

NPM

Virtual SMTP-server for debugging mail messages third-party applications

Overview

Virtual SMTP-server based on Haraka Mail Server using plug-ins. E-mail messages sent by third-party applications are not sent to the address. E-mail message are written to JSON file.

Installation

Installation is fairly straightforward, just install the npm module:

$ npm install -g smtpeshka

Running smtpeshka

Create a project for to store your sent messages and config files.

$ mkdir my-smtp-test
$ cd my-smtp-test
$ smtpeshka

Now configure your mail application to send emails via SMTP:

SMTP host: localhost
SMTP port: 2525

Start your application with these settings and send any e-mail message. Your message will not be sent to the address. This message is saved in the folder sent-emails your project my-smtp-test.

Web

Sent messages can be viewed in a browser at http://localhost:2580

API

GET localhost:2580/api

E-mail list

[
  {
    "html": <p>Hello World!</p>",
    "text": "Hello World!",
    "headers": {
      "received": "from person.local (ip6-localhost [::1]) by Server ...",
      "date": "Thu, 22 Jan 2015 23:09:13 +0300",
      "to": "user@example.com",
      "from": "E-mail Tester <>",
      "subject": "Hello",
      "message-id": "5684b0c0bd9a38962535083a3d5c79dc",
      "x-priority": "normal"
    },
    "subject": "Hello",
    "messageId": "5684b0c0bd9a38962535083a3d5c79dc",
    "priority": "normal",
    "from": [
      {
        "address": "info@localhost",
        "name": "Local Server"
      }
    ],
    "to": [
      {
        "address": "user@example.com",
        "name": "User"
      }
    ],
    "date": "2015-01-22T20:09:13.000Z"
  }
]

GET localhost:2580/api/email/:messageId

E-mail by message-id

{
    "html": <p>Hello World!</p>",
    "text": "Hello World!",
    "headers": {
      "received": "from person.local (ip6-localhost [::1]) by Server ...",
      "date": "Thu, 22 Jan 2015 23:09:13 +0300",
      "to": "user@example.com",
      "from": "E-mail Tester <>",
      "subject": "Hello",
      "message-id": "5684b0c0bd9a38962535083a3d5c79dc",
      "x-priority": "normal"
    },
    "subject": "Hello",
    "messageId": "5684b0c0bd9a38962535083a3d5c79dc",
    "priority": "normal",
    "from": [
      {
        "address": "info@localhost",
        "name": "Local Server"
      }
    ],
    "to": [
      {
        "address": "user@example.com",
        "name": "User"
      }
    ],
    "date": "2015-01-22T20:09:13.000Z"
  }

GET localhost:2580/api/status

Status SMTPeshka

{
  "web": {
    "port": 2580
  },
  "SMTP": {
    "port": 2525
  },
  "transport": {
    "json": {
      "saveto": "/home/user/my-smtp-test/sent-emails"
    }
  },
  "haraka": {
    "prog": {
        "dir": "/usr/local/lib/node_modules/smtpeshka/node_modules/Haraka"
     },
    "config": {
      "source": {
        "dir": "/usr/local/lib/node_modules/smtpeshka/haraka-def"
      },
      "build": {
        "dir": "/tmp/smtpeshka/haraka"
      }
    }
  }
}

Configuration

SMTPeshka can be configured using JSON in a smtpeshka.json in directory run the SMTPehska. For example:

"log": {
    "console": {
        "level": "debug"
    }
},
"web": {
    "port": 12580
},
"SMTP": {
    "port": 12525
},
"transport": {
    "json": {
        "saveto": "<%= directory %>/my-emails"
    }
},
"haraka": {
    "config": {
        "build": {
            "dir": "<%= directory %>/tmp"
        }
    }
}

License

MIT