Skip to main content

An asyncio-based library to communicate with SpamAssassin's SPAMD service.

Project description

pypi docs license unit integration python

aiospamc is a client for SpamAssassin that you can use as a library or command line tool.

The implementation is based on asyncio; so you can use it in your applications for asynchronous calls.

The command line interface provides user-friendly access to SpamAssassin server commands and provides both JSON and user-consumable outputs.

Documentation

Detailed documentation can be found at: https://aiospamc.readthedocs.io/

Requirements

  • Python 3.9 or higher

  • certifi for updated certificate authorities

  • loguru for structured logging

  • typer for the command line interface

Examples

Command-Line Tool

aiospamc is your interface to SpamAssassin through CLI. To submit a message for a score, use:

# Take the output of gtube.msg and have SpamAssasin return a score
$ cat ./gtube.msg | aiospamc check
1000.0/5.0

# Ping the server
$ aiospamc ping
PONG

Library

import asyncio
import aiospamc


GTUBE = """Subject: Test spam mail (GTUBE)
Message-ID: <GTUBE1.1010101@example.net>
Date: Wed, 23 Jul 2003 23:30:00 +0200
From: Sender <sender@example.net>
To: Recipient <recipient@example.net>
Precedence: junk
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is the GTUBE, the
    Generic
    Test for
    Unsolicited
    Bulk
    Email

If your spam filter supports it, the GTUBE provides a test by which you
can verify that the filter is installed correctly and is detecting incoming
spam. You can send yourself a test mail containing the following string of
characters (in upper case and with no white spaces and line breaks):

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

You should send this test mail from an account outside of your network.
""".encode("ascii")


# Ping the SpamAssassin server
async def is_alive():
    pong = await aiospamc.ping()
    return True if pong.status_code == 0 else False

asyncio.run(is_alive())
# True


# Get the spam score of a message
async def get_score(message):
    response = await aiospamc.check(message)
    return response.headers.spam.score, response.headers.spam.threshold

asyncio.run(get_score(GTUBE))
# (1000.0, 5.0)


# List the modified headers
async def list_headers(message):
    response = await aiospamc.headers(message)
    for line in response.body.splitlines():
        print(line.decode())

asyncio.run(list_headers(GTUBE))
# Received: from localhost by DESKTOP.
#         with SpamAssassin (version 4.0.0);
#         Wed, 30 Aug 2023 20:11:34 -0400
# From: Sender <sender@example.net>
# To: Recipient <recipient@example.net>
# Subject: Test spam mail (GTUBE)
# Date: Wed, 23 Jul 2003 23:30:00 +0200
# Message-Id: <GTUBE1.1010101@example.net>
# X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on DESKTOP.
# X-Spam-Flag: YES
# X-Spam-Level: **************************************************
# X-Spam-Status: Yes, score=1000.0 required=5.0 tests=GTUBE,NO_RECEIVED,
#         NO_RELAYS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no
#         version=4.0.0
# MIME-Version: 1.0
# Content-Type: multipart/mixed; boundary="----------=_64EFDAB6.3640FAEF"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiospamc-1.1.1.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

aiospamc-1.1.1-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file aiospamc-1.1.1.tar.gz.

File metadata

  • Download URL: aiospamc-1.1.1.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aiospamc-1.1.1.tar.gz
Algorithm Hash digest
SHA256 14856f154c8c96e25b09bb291b6a15c65578aa59bfd2d2da8c8b26a3d76e409c
MD5 9286c768d7a00330436acd80ee482485
BLAKE2b-256 8af74ae0daa1e59823232aeb88cc48f0c2d61779b04270af0630c78c2c6dd11b

See more details on using hashes here.

File details

Details for the file aiospamc-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: aiospamc-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for aiospamc-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a70c6b294cbd14d80095d69e8d9497f14456504f88ad3a05aa9cf1c9c59d84a0
MD5 8563eb4c58a2906a9a509629b785b270
BLAKE2b-256 7b2b09c8ca5efa6ff091f855ae5e7d6a8114ec85036943936503284896073b33

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page