Giter VIP home page Giter VIP logo

sndslib's Introduction

SNDS LIB

Build Status codecov Python 3 Updates Total alerts Language grade: Python

Process and verify data from Microsoft's Smart Network Data Service (SNDS) API easily.

SNDSLIB is a wrapper around SNDS Automated Data Access API to facilitate fast data process and analysis.


Table of content


What is SNDS?

Smart Network Data Service (SNDS) is a platform to monitor data from IPs that send emails to Microsoft's servers.

If you send a substantial volume of email messages from your IPs, your can get valuable information about IP reputation, possible blocks, spam complaints and spamtraps hits.

First, you need to sign up for SNDS, request access for your IPs, then enable the Automates Data Access to recieve your API key.


Installation

SNDSLIB has no external dependencies. It runs just with python 3.6 or higher.

pip install sndslib

Simple example of library usage:

    >>> from sndslib import sndslib

    # Connects with snds to get usage data
    >>> r = sndslib.get_data('mykey')

    # Sndslib can give a summary of the state of all IPs
    >>> sndslib.summarize(r)
    {'red': 272, 'green': 710, 'yellow': 852, 'traps': 1298, 'ips': 1834, 'date': '12/31/2019'}

    # even get whole information about a specific IP
    >>> sndslib.search_ip_status('1.1.1.1', r)
    {'activity_end': '12/31/2019 7:00 PM',
    'activity_start': '12/31/2019 10:00 AM',
    'comments': '',
    'complaint_rate': '< 0.1%',
    'data_commands': '1894',
    'filter_result': 'GREEN',
    'ip_address': '1.1.1.1',
    'message_recipients': '1894',
    'rcpt_commands': '1895',
    'sample_helo': '',
    'sample_mailfrom': '',
    'trap_message_end': '',
    'trap_message_start': '',
    'traphits': '0'}

    # Connects with snds to get blocked ranges
    >>> r = sndslib.get_ip_status('mykey')

    # Sndslib can parse the information and extract all blocked IPs
    >>> blocked_ips = sndslib.list_blocked_ips(r)
    >>> print(blocked_ips)
    ['1.1.1.1', '1.1.1.2']

    # Even get all rdns for these IPs
    >>> sndslib.list_blocked_ips_rdns(blocked_ips)
    [{'ip': '1.1.1.1', 'rdns': 'foo.bar.exemple.com'},
     {'ip': '1.1.1.2', 'rdns': 'foo2.bar.exemple.com'}]

CLI

This library contains a CLI to facilitate fast operations in the terminal. Here are some examples of their usage:

Summary of all IPs status

snds -k 'your-key-here' -s

Example output:

Date: 12/31/2020
IPs:       1915
Green:      250
Yellow:    1175
Red:        490
Trap Hits:  990
Blocked:    193

Individual report of a IP

snds -k 'your-key-here' -ip '1.1.1.1'

Example output:

Activity: 1/31/2020 11:59 AM until 1/31/2020 11:59 PM
IP:         1.1.1.1
Messages:    183057
Filter:       GREEN
Complaint:   < 0.1%
Trap Hits:        3

List all IPs blocked

snds -k 'your-key-here' -l

Example output:

1.1.1.1
1.1.1.2
1.1.1.3
...

List all IPs blocked with rDNS

snds -k 'your-key-here' -r

Example output:

1.1.1.1;example.domain1.com
1.1.1.2;example.domain2.com
1.1.1.3;example.domain3.com
...

Incorporate SNDSLIB CLI

You can easily incorporate the sndslib CLI into your own command line tool by using the CLI adapter class:

    from sndslib import cli

    # ... parse key, date and ip arguments

    # Create a instance of the Cli
    command = cli.Cli(key, date)

    # to implement -s flag use
    command.summary()

    # to implement -ips flag use
    command.ip_data(ip)

    # to implement -l flag use
    command.list_blocked_ips()

    # to implement -r flag use
    command.list_blocked_ips_rdns()

More about SNDS

You can get more information about SNDS features in the Microsoft's official pages for SNDS and SNDS Automated Data Access.

sndslib's People

Contributors

emilyfaccin avatar the-alicia avatar undersfx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

sndslib's Issues

Initial Update

The bot created this issue to inform you that pyup.io has been set up on this repo.
Once you have closed it, the bot will open pull requests for updates as soon as they are available.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.