More py3 fixes, switch to setuptools.

This commit is contained in:
Stuart D. Gathman
2020-06-12 16:51:38 -04:00
parent bf3108b938
commit cdae26af47
5 changed files with 31 additions and 52 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ include COPYING
include TODO include TODO
include NEWS include NEWS
include CREDITS include CREDITS
include README include README.md
include ChangeLog include ChangeLog
include MANIFEST.in include MANIFEST.in
include testsample.py include testsample.py
+4 -1
View File
@@ -72,10 +72,13 @@
from __future__ import print_function from __future__ import print_function
import smtplib import smtplib
import socket import socket
try:
from email.message import Message
except:
from email.Message import Message from email.Message import Message
import Milter import Milter
import Milter.dns as dns
import time import time
import dns
## Send DSN. ## Send DSN.
# Try the published MX names in order, rejecting obviously bogus entries # Try the published MX names in order, rejecting obviously bogus entries
+11 -35
View File
@@ -1,5 +1,4 @@
Abstract # Abstract
--------
This is a python extension module to enable python scripts to attach to This is a python extension module to enable python scripts to attach to
Sendmail's libmilter API, enabling filtering of messages as they arrive. Sendmail's libmilter API, enabling filtering of messages as they arrive.
@@ -7,41 +6,21 @@ Since it's a script, you can do anything you want to the message - screen
out viruses, collect statistics, add or modify headers, etc. You can, at out viruses, collect statistics, add or modify headers, etc. You can, at
any point, tell Sendmail to reject, discard, or accept the message. any point, tell Sendmail to reject, discard, or accept the message.
Additional python modules provide for navigating and modifying MIME parts, and
sending DSNs or doing CBVs.
Requirements # Requirements
------------
Python milter extension: http://https://pypi.python.org/pypi/pymilter/ Python milter extension: https://pypi.python.org/pypi/pymilter/
Python: http://www.python.org Python: http://www.python.org
Sendmail: http://www.sendmail.org Sendmail: http://www.sendmail.org
NB: From Sendmail's libmilter/README: # Quick Installation
libmilter requires pthread support in the operating system. Moreover, it
requires that the library functions it uses are thread safe; which is true
for the operating systems libmilter has been developed and tested on. On
some operating systems this requires special compile time options (e.g.,
not just -pthread). libmilter is currently known to work on (modulo problems
in the pthread support of some specific versions):
FreeBSD 3.x, 4.x
SunOS 5.x (x >= 5)
AIX 4.3.x
HP UX 11.x
Linux (recent versions/distributions)
libmilter is currently not supported on:
IRIX 6.x
Ultrix
Quick Installation
------------------
1. Build and install Sendmail, enabling libmilter (see libmilter/README). 1. Build and install Sendmail, enabling libmilter (see libmilter/README).
2. Build and install Python, enabling threading. 2. Build and install Python, enabling threading.
3. Install this module: python setup.py --help 3. Install this module: python setup.py --help
4. Add these two lines to sendmail.cf[*]: 4. Add these two lines to sendmail.cf[a]:
O InputMailFilters=pythonfilter O InputMailFilters=pythonfilter
Xpythonfilter, S=local:/home/username/pythonsock Xpythonfilter, S=local:/home/username/pythonsock
@@ -54,7 +33,7 @@ some email will be rejected (see the "header" method). Edit and play.
See spfmilter.py for a functional SPF milter, or see bms.py for an complex See spfmilter.py for a functional SPF milter, or see bms.py for an complex
milter used in production. milter used in production.
[*] This is for a quick test. Your sendmail.cf in most distros will get [a] This is for a quick test. Your sendmail.cf in most distros will get
overwritten whenever sendmail.mc is updated. To make a milter permanent, overwritten whenever sendmail.mc is updated. To make a milter permanent,
add something like: add something like:
@@ -62,8 +41,7 @@ INPUT_MAIL_FILTER(`pythonfilter', `S=local:/home/username/pythonsock, F=T, T=C:5
to sendmail.mc instead. to sendmail.mc instead.
Not-so-quick Installation # Not-so-quick Installation
-------------------------
First install Sendmail. Make sure you read libmilter/README in the Sendmail First install Sendmail. Make sure you read libmilter/README in the Sendmail
source directory, and make sure you enable libmilter before you build. The source directory, and make sure you enable libmilter before you build. The
@@ -109,8 +87,7 @@ _FFR_MILTER for the cf macros. For example,
m4 -D_FFR_MILTER ../m4/cf.m4 myconfig.mc > myconfig.cf m4 -D_FFR_MILTER ../m4/cf.m4 myconfig.mc > myconfig.cf
IPv6 Notes # IPv6 Notes
----------
The IPv6 protocol is supported if your operation system supports it The IPv6 protocol is supported if your operation system supports it
and if sendmail was compiled with IPv6 support. To determine if your and if sendmail was compiled with IPv6 support. To determine if your
@@ -165,8 +142,7 @@ be determined the hostname will appear similar to the string
RFC 2553 for information on interpreting and using the flowinfo and RFC 2553 for information on interpreting and using the flowinfo and
scopeid socket attributes, both of which are integers. scopeid socket attributes, both of which are integers.
Authors # Authors
-------
Jim Niemira (urmane@urmane.org) wrote the original C module and some quick Jim Niemira (urmane@urmane.org) wrote the original C module and some quick
and dirty python to use it. Stuart D. Gathman (stuart@gathman.org) took that and dirty python to use it. Stuart D. Gathman (stuart@gathman.org) took that
+2
View File
@@ -1,2 +1,4 @@
Test case for Milter/dsn.py
Lookup exact RFC syntax of real name / email and make Lookup exact RFC syntax of real name / email and make
Milter.utils.parse_addr() pass all unit tests. Milter.utils.parse_addr() pass all unit tests.
+5 -7
View File
@@ -1,10 +1,13 @@
import os import os
import sys import sys
from distutils.core import setup, Extension from setuptools import setup, Extension
if sys.version < '2.6.5': if sys.version < '2.6.5':
sys.exit('ERROR: Sorry, python 2.6.5 is required for this module.') sys.exit('ERROR: Sorry, python 2.6.5 is required for this module.')
with open("README.md", "r") as fh:
long_description = fh.read()
# FIXME: on some versions of sendmail, smutil is renamed to sm. # FIXME: on some versions of sendmail, smutil is renamed to sm.
# On slackware and debian, leave it out entirely. It depends # On slackware and debian, leave it out entirely. It depends
# on how libmilter was built by the sendmail package. # on how libmilter was built by the sendmail package.
@@ -16,12 +19,7 @@ modules = ["mime"]
# NOTE: importing Milter to obtain version fails when milter.so not built # NOTE: importing Milter to obtain version fails when milter.so not built
setup(name = "pymilter", version = '1.0.5', setup(name = "pymilter", version = '1.0.5',
description="Python interface to sendmail milter API", description="Python interface to sendmail milter API",
long_description="""\ long_description=long_description,
This is a python extension module to enable python scripts to
attach to sendmail's libmilter functionality. Additional python
modules provide for navigating and modifying MIME parts, and
sending DSNs or doing CBVs.
""",
author="Jim Niemira", author="Jim Niemira",
author_email="urmane@urmane.org", author_email="urmane@urmane.org",
maintainer="Stuart D. Gathman", maintainer="Stuart D. Gathman",