Getting ready for 0.8.3
This commit is contained in:
+3
-1
@@ -16,6 +16,8 @@ from milter import ACCEPT,CONTINUE,REJECT,DISCARD,TEMPFAIL, \
|
|||||||
try: from milter import QUARANTINE
|
try: from milter import QUARANTINE
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
|
__version__ = '0.8.3'
|
||||||
|
|
||||||
_seq_lock = thread.allocate_lock()
|
_seq_lock = thread.allocate_lock()
|
||||||
_seq = 0
|
_seq = 0
|
||||||
|
|
||||||
@@ -215,6 +217,6 @@ def runmilter(name,socketname,timeout = 0):
|
|||||||
raise milter.error("out of thread resources")
|
raise milter.error("out of thread resources")
|
||||||
|
|
||||||
__all__ = globals().copy()
|
__all__ = globals().copy()
|
||||||
for priv in ('os','milter','thread','factory','_seq','_seq_lock'):
|
for priv in ('os','milter','thread','factory','_seq','_seq_lock','__version__'):
|
||||||
del __all__[priv]
|
del __all__[priv]
|
||||||
__all__ = __all__.keys()
|
__all__ = __all__.keys()
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import smtplib
|
|||||||
import spf
|
import spf
|
||||||
import socket
|
import socket
|
||||||
from email.Message import Message
|
from email.Message import Message
|
||||||
|
import Milter
|
||||||
|
|
||||||
nospf_msg = """Subject: Critical mail server configuration error
|
nospf_msg = """Subject: Critical mail server configuration error
|
||||||
|
|
||||||
@@ -168,6 +169,7 @@ def create_msg(q,rcptlist,origmsg=None,template=None):
|
|||||||
msg.add_header('To',sender)
|
msg.add_header('To',sender)
|
||||||
msg.add_header('From','postmaster@%s'%receiver)
|
msg.add_header('From','postmaster@%s'%receiver)
|
||||||
msg.add_header('Auto-Submitted','auto-generated (configuration error)')
|
msg.add_header('Auto-Submitted','auto-generated (configuration error)')
|
||||||
|
msg.add_header('X-Mailer','PyMilter-'+Milter.__version__)
|
||||||
msg.set_type('text/plain')
|
msg.set_type('text/plain')
|
||||||
|
|
||||||
if not template:
|
if not template:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
Here is a history of user visible changes to Python milter.
|
Here is a history of user visible changes to Python milter.
|
||||||
|
|
||||||
|
0.8.3 Keep screened honeypot mail, but optionally discard honeypot only mail.
|
||||||
|
spf_accept_fail option for braindead SPF senders
|
||||||
|
(treats fail like softfail)
|
||||||
|
Consider SMTP AUTH connections internal.
|
||||||
|
Send DSN for SPF errors corrected by extended processing.
|
||||||
|
Send DSN before SCREENED mail is quarantined
|
||||||
0.8.2 Strict processing limits per SPF RFC
|
0.8.2 Strict processing limits per SPF RFC
|
||||||
Fixed several parsing bugs under RFC
|
Fixed several parsing bugs under RFC
|
||||||
Support official IANA SPF record (type99)
|
Support official IANA SPF record (type99)
|
||||||
|
|||||||
@@ -6,36 +6,17 @@ Option to add Received-SPF header, but never reject on SPF.
|
|||||||
Create null config that does nothing - except maybe add Received-SPF
|
Create null config that does nothing - except maybe add Received-SPF
|
||||||
headers. Many admins would like to turn features on one at a time.
|
headers. Many admins would like to turn features on one at a time.
|
||||||
|
|
||||||
Checking in mime.py;
|
|
||||||
/bms/cvs/milter/mime.py,v <-- mime.py
|
|
||||||
new revision: 1.56; previous revision: 1.55
|
|
||||||
done
|
|
||||||
Checking in spf.py;
|
|
||||||
/bms/cvs/milter/spf.py,v <-- spf.py
|
|
||||||
new revision: 1.18; previous revision: 1.17
|
|
||||||
done
|
|
||||||
Checking in testmime.py;
|
|
||||||
/bms/cvs/milter/testmime.py,v <-- testmime.py
|
|
||||||
new revision: 1.19; previous revision: 1.18
|
|
||||||
|
|
||||||
Auto whitelist based on outgoing email - perhaps with magic subject
|
Auto whitelist based on outgoing email - perhaps with magic subject
|
||||||
or recipient prefix.
|
or recipient prefix.
|
||||||
|
|
||||||
Can't output messages with malformed rfc822 attachments.
|
Can't output messages with malformed rfc822 attachments.
|
||||||
|
|
||||||
Example malformed SPF:
|
|
||||||
onvunvuvvx.usafisnews.org text "v=spf1 mx ptr ip4:207.44.199.970 -all"
|
|
||||||
|
|
||||||
Move milter,Milter,mime,spf modules to pymilter
|
Move milter,Milter,mime,spf modules to pymilter
|
||||||
milter package will have bms.py application
|
milter package will have bms.py application
|
||||||
|
|
||||||
Support SMTP AUTH and disable SPF checks when connection is authorized.
|
|
||||||
Web admin interface
|
Web admin interface
|
||||||
Check valid domains allowed by internal senders to detect PCs infected
|
|
||||||
with spam trojans.
|
|
||||||
Do CBV (callback verification) for mail with no published SPF record.
|
|
||||||
message log for automated stats and blacklisting
|
message log for automated stats and blacklisting
|
||||||
Skip dspam when SPF pass?
|
Skip dspam when SPF pass? NO
|
||||||
Report 551 with rcpt on SPF fail?
|
Report 551 with rcpt on SPF fail?
|
||||||
check spam keywords with character classes, e.g.
|
check spam keywords with character classes, e.g.
|
||||||
{a}=[a@ãä], {i}=[i1í], {e}=[eë], {o}=[o0ö]
|
{a}=[a@ãä], {i}=[i1í], {e}=[eë], {o}=[o0ö]
|
||||||
@@ -46,9 +27,6 @@ user to give to the forwarder. Alias only works for mail from that
|
|||||||
forwarder. Milter gets forwarder domain from alias and uses it to
|
forwarder. Milter gets forwarder domain from alias and uses it to
|
||||||
SPF check forwarder.
|
SPF check forwarder.
|
||||||
|
|
||||||
Another special dspam user, 'honeypot', can be listed in innoculations.
|
|
||||||
All email to those addresses is treated as known spam.
|
|
||||||
|
|
||||||
Framework for modular Python milter components within a single VM.
|
Framework for modular Python milter components within a single VM.
|
||||||
Python milters can be already be composed through sendmail by running each in
|
Python milters can be already be composed through sendmail by running each in
|
||||||
a separate process. However, a significant amount of memory is wasted
|
a separate process. However, a significant amount of memory is wasted
|
||||||
@@ -57,8 +35,7 @@ is cumbersome (e.g., adding mail headers, writing external files).
|
|||||||
|
|
||||||
Backup copies for outgoing/incoming mail.
|
Backup copies for outgoing/incoming mail.
|
||||||
|
|
||||||
Allow multiple wiretap groups, each with its own destination. Perhaps
|
Copy incoming wiretap mail, even though sendmail alias works perfectly
|
||||||
also copy incoming wiretap mail, even though sendmail alias works perfectly
|
|
||||||
for the purpose, to avoid having to change two configs for a wiretap.
|
for the purpose, to avoid having to change two configs for a wiretap.
|
||||||
|
|
||||||
Provide a way to reload milter.cfg without stopping/restarting milter.
|
Provide a way to reload milter.cfg without stopping/restarting milter.
|
||||||
@@ -72,10 +49,6 @@ Keep separate ismodified flag for headers and body. This is important
|
|||||||
when rejecting outgoing mail with viruses removed (so as not to
|
when rejecting outgoing mail with viruses removed (so as not to
|
||||||
embarrass yourself), and also removing Received headers with hidepath.
|
embarrass yourself), and also removing Received headers with hidepath.
|
||||||
|
|
||||||
Wrap smfi_setbacklog(int) - but it is only available in sendmail >= 8.12.3,
|
|
||||||
so how can we detect whether to wrap it?
|
|
||||||
|
|
||||||
Need a test module to feed sample messages to a milter though a live
|
Need a test module to feed sample messages to a milter though a live
|
||||||
sendmail and SMTP. The mockup currently used is probably not very accurate,
|
sendmail and SMTP. The mockup currently used is probably not very accurate,
|
||||||
and doesn't test the threading code.
|
and doesn't test the threading code.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from distutils.core import setup, Extension
|
from distutils.core import setup, Extension
|
||||||
|
import Milter
|
||||||
|
|
||||||
# FIXME: on some versions of sendmail, smutil is renamed to sm
|
# FIXME: on some versions of sendmail, smutil is renamed to sm
|
||||||
libs = ["milter", "smutil"]
|
libs = ["milter", "smutil"]
|
||||||
@@ -12,7 +13,7 @@ if sys.version < '2.2.3':
|
|||||||
DistributionMetadata.classifiers = None
|
DistributionMetadata.classifiers = None
|
||||||
DistributionMetadata.download_url = None
|
DistributionMetadata.download_url = None
|
||||||
|
|
||||||
setup(name = "milter", version = "0.8.2",
|
setup(name = "milter", version = Milter.__version__,
|
||||||
description="Python interface to sendmail milter API",
|
description="Python interface to sendmail milter API",
|
||||||
long_description="""\
|
long_description="""\
|
||||||
This is a python extension module to enable python scripts to
|
This is a python extension module to enable python scripts to
|
||||||
|
|||||||
+3
-1
@@ -14,7 +14,9 @@ Subject: %(subject)s
|
|||||||
Received-SPF: %(spf_result)s
|
Received-SPF: %(spf_result)s
|
||||||
|
|
||||||
Your sender policy indicated that the above email was likely forged and that
|
Your sender policy indicated that the above email was likely forged and that
|
||||||
feedback was desired.
|
feedback was desired. If you are sending from a foreign ISP,
|
||||||
|
then you may need to follow your home ISPs instructions for configuring
|
||||||
|
your outgoing mail server.
|
||||||
|
|
||||||
If you need further assistance, please do not hesitate to contact me.
|
If you need further assistance, please do not hesitate to contact me.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user