Sign inDemoInstall

Package Overview
File Explorer

Install Socket

Protect your apps from supply chain attacks


mail account ping (maping) - utility for checking sets of mail servers (SMTP/IMAPv4). Saves results to database and may generate an SVG data visualization matrix from the results. For the moment, please refer to the documentation on


Version published


#maping - [![Build Status](](
mail account ping - utility for checking sets of mail servers (SMTP/IMAPv4).
Saves results to database and is able to generate an SVG data visualization matrix from the results.


* Cross-platform - targeting all platforms go targets
* No hard CGO dependency, although it needs the system x509 certificate store


* Implementing SMTP 8BITMIME, AUTH, STARTTLS (using net/smtp)
* Implementing IMAP4rev1 using [go-imap]( - including support for AUTHENTICATE with CRAM-MD5
* SMTPS and IMAPS support (Explicit SSL) - supports AUTH PLAIN/LOGIN over secure connection
* Supporting virtually any mail hoster offering IMAP access


* Fully configurable using JSON-like syntax (extended with comments)
* Automatic test pair generation using post-processed cartesian products
* Concurrent execution of tests using worker pool
* Integrated, pure go database using [ql](
* Stores gzip compressed protocol logs alongside with test data in a separate database table


* Test data visualization in an SVG matrix (separate tool)
* Ability to visualize latest or specific dataset from given database

###To be done

* Unit tests
* godoc

#Getting started

You will need to have a working go environment installed. Refer to your distributions manual, the [go manual]( or support forums on how to accomplish this.

go get
go get

*Since we are using ql as database, you may need to build with tag "purego", if you want to avoid any CGO dependency while 
building. This disables some speed optimizations for the built-in database ql.
Please see [this issue](*

After this command, the executables maping and gensvg will be in $GOPATH/bin. Use the example,json configuration from this repository or from $GOPATH/src/ to create a new configuration. By default, maping will look for config.json in its own directory and for /etc/maping.json. You may also specifiy a configuration file on the command line (see below).
After the first run, you may use the gensvg command to create a SVG visualization of the generated test data from the database like this:

$GOPATH/bin/gensvg -db="maping.db"

#Command usage reference

$ gensvg --help
Usage of gensvg:
  -db="maping.db": Path to database
  -output="output.svg": Output file (SVG format) - will be overwritten
  -timestamp=0: Visualize dataset identified by timestamp - leave out or 0 to use latest
$ maping --help
Usage of maping:
  -config="config.json": Path to configuration file

#Example output
Please note this is a rasterized representation of the original vector-based SVG output of the gensvg command
The values are given in seconds between sending a test mail and the last SMTP server in the chain receiving the mail. This assumes every tested host has its time synced, e.g. via NTP.


Copyright 2015 NF Design UG (haftungsbeschraenkt). All rights reserved.
Use of this source code is governed by the Apache License v2.0
which can be found in the LICENSE file.


Last updated on 09 Apr 2015

Did you know?

Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.


Related posts

SocketSocket SOC 2 Logo


  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc