An asyncio-based library to communicate with SpamAssassin's SPAMD service.
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14856f154c8c96e25b09bb291b6a15c65578aa59bfd2d2da8c8b26a3d76e409c |
|
MD5 | 9286c768d7a00330436acd80ee482485 |
|
BLAKE2b-256 | 8af74ae0daa1e59823232aeb88cc48f0c2d61779b04270af0630c78c2c6dd11b |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a70c6b294cbd14d80095d69e8d9497f14456504f88ad3a05aa9cf1c9c59d84a0 |
|
MD5 | 8563eb4c58a2906a9a509629b785b270 |
|
BLAKE2b-256 | 7b2b09c8ca5efa6ff091f855ae5e7d6a8114ec85036943936503284896073b33 |