Commit Graph

83 Commits

Author SHA1 Message Date
Scott Kitterman e233e0243c Add KeyTable processing, fix SigningTable matching code 2019-10-30 15:20:32 -04:00
Scott Kitterman e930257b6b - Delete own_socketfile to resolve race condition where the permissions
change fails on a Unix socket because it hasn't been created yet (libmilter
   will do this correctly on its own based on umask, the milter doesn't need
   to do it) (LP: #1849712)
2019-10-29 02:50:40 -04:00
Scott Kitterman 887a0c4b2a SigningTable refactor to work with the revised table structure - mostly works, but not thoroughly tested 2019-10-29 02:42:48 -04:00
Scott Kitterman 0115bf7c7c Add support for using signing table with % only - still very incomplete. 2019-10-22 23:35:58 -04:00
Scott Kitterman f93dbeb966 Move _get_parent_domain into dkimMilter classs as get_parent_domain 2019-10-22 20:14:18 -04:00
Scott Kitterman d6b0acb101 Refactor signing domain determination into get_identities_sign function and add support for passing i= when signing in prepartation for parsing the signing table 2019-10-22 19:45:18 -04:00
Scott Kitterman 1097894eac Editorial nits 2019-10-19 12:34:22 -04:00
Scott Kitterman e9f95e0937 Refactor: move reading keys into util.get_keys in preparation for table variants 2019-10-19 03:50:17 -04:00
Scott Kitterman d0bc03453f Use self.conf vice milterconfig in dkimMilter to make sure config doesn't change while running 2019-10-19 03:31:29 -04:00
Scott Kitterman 2106e2b1f6 Refactor private key internal storage, it is now part of the milterconfig dict 2019-10-19 02:51:44 -04:00
Scott Kitterman 70d10f9b1a Make error logging more explicit to aid debugging 2019-10-18 23:24:12 -04:00
Scott Kitterman 3b3e64c058 More reslience fixes 2019-09-23 11:35:44 -04:00
Scott Kitterman d24b298dce Merge branch 'master' of git+ssh://git.launchpad.net/dkimpy-milter 2019-09-23 11:23:30 -04:00
Scott Kitterman 47b7e9892f Catch more ascii encoding errors to improve resilience against bad data
(LP: #1844189)
2019-09-23 11:01:32 -04:00
Scott Kitterman 68e61d419b Catch more ascii encoding errors to improve resilience against bad data
(LP: #1844189)
2019-09-23 10:28:43 -04:00
Scott Kitterman 5800d25e0c Fix variable initialization so mailformed mails missing body From do not
cause a traceback (LP: #1844161)
2019-09-16 20:05:11 -04:00
Scott Kitterman 708e94f266 Add debug logging for content type to assist troubleshooting MIME
conversion issues
2019-09-11 15:31:15 -04:00
Scott Kitterman f0871078ac Add support for SignHeaders feature, thanks to Ralph Seichter for the patch 2019-09-11 13:53:54 -04:00
Scott Kitterman 34d440c7a7 Fixup missing i= processing 2019-09-06 00:27:26 -04:00
Scott Kitterman 5a68cf9e25 - Fix message extraction so that signing in the same pass through the milter
as verifying works correctly
2019-09-05 23:52:07 -04:00
Scott Kitterman 6f75a1a967 - Fix verify processing so missing (optional) i= tag doesn't cause the milter
to fail
2019-08-09 11:28:53 -04:00
Scott Kitterman 787e25325e Fix startup logging so it provides information at a useful time 2019-08-09 08:58:03 -04:00
Scott Kitterman 9cd67c1b25 Clarify usage statement on bad command line run 2019-04-28 03:37:25 -04:00
Scott Kitterman 5ebaf5d848 - Add support for passing PID file name on command line to make it easier to keep system init and daemon configuration in sync. 2019-04-26 20:24:34 -04:00
Scott Kitterman 8dc3ac6474 Add option to sign for subdomains - Thanks to Sagi for the patch 2019-04-12 22:31:24 -04:00
Scott Kitterman 6b851f18df Changes in dkimpy_milter/__init__.py to harmonize logging messages and log text instead of bytestring. 2019-04-12 21:29:09 -04:00
Daniel Kahn Gillmor 7092874729 Enable sd_listen_fds(3)-style socket-activation support
I've added straightforward systemd unit files in
system/socket-activation/ that make use of this approach, and a
README.md in the same location that describes the tradeoffs.
2019-02-21 19:22:11 -05:00
Daniel Kahn Gillmor 9d5316ca0e Handle defaults for Socket differently
We want to be able to select the default for Socket differently in the
future.

This change augments the API for dkimpy_milter.util.own_socketfile()
by adding an optional sockname argument.  This is a
backward-compatible change.  If we aren't committed to API stability
for this function, we could make a more invasive change that would
probably be a more reasonable API going forward, but this is probably
good enough.
2019-02-21 19:22:11 -05:00
Daniel Kahn Gillmor ea09bab1a8 Convert __init__.py to python3
The main work here is about bytes vs. strings.  This work was
confusing for several reasons:

 * pymilter thinks that headers are all strings, but body is bytes

 * dkimpy wants to deal with bytes objects generally (though it
   accepts a string object as an ed25519 secret key for some reason,
   despite requiring bytes as an RSA secret key)

 * authres.AuthenticationResultsHeader object converts easily to a
   string, but has no direct bytes conversion.  meanwhile, it wants
   its arguments as strings, but will accept them if they are bytes
   and convert them with something like str(), which leaves weird
   cruft like "header.a=b'ed25519-sha256'"

 * dkimpy_milter/utils.py contains fold() which expects bytes

 * self.fp needs to accumulate the on-the-wire version of the message
   as a whole (so it needs to be bytes).  That means converting the
   headers.  Header names and values are US-ASCII, per §2.2 of RFC
   5322, so they should be convertible cleanly, but we still have to
   convert them explicitly so that python knows the right thing to do.

At any rate, tests/runtests all passes with these changes, and the
output for both Authentication-Results: and DKIM-Signature headers
looks the same.
2019-02-21 19:22:11 -05:00
Daniel Kahn Gillmor 391b5352f3 Convert mostly to python3 (still need strings/bytes conversions)
This covers conversion of the whole project to python3, *except* for
the strings/bytes distinction in __init__.py, which i'm leaving for a
second commit.

The changes in this commit are intended to be relatively
uncontroversial, so that the following commit contains the tricky
bits.
2019-02-21 19:22:09 -05:00
Daniel Kahn Gillmor 1c6030024d add DNSOverride configuration for testing 2019-02-21 19:21:38 -05:00
Daniel Kahn Gillmor 9e11b75ec3 Avoid AttributeError on simple connection and disconnection
Without this patch, this simple script for miltertest:

----
conn = mt.connect("unix:milter.sock")
if conn == nil then
  error "mt.connect() failed"
end
if mt.conninfo(conn, nil, "unspec") ~= nil then
  error "mt.conninfo() failed"
end
if mt.getreply(conn) ~= SMFIR_CONTINUE then
     error "mt.conninfo() unexpected reply"
end
mt.disconnect(conn)
----

Produces the following error:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/Milter/__init__.py", line 702, in connect_callback
    return m.connect(hostname,family,hostaddr)
  File "/usr/lib/python2.7/dist-packages/Milter/__init__.py", line 173, in wrapper
    rc = func(self,*args)
  File "/home/dkg/src/dkimpy-milter/dkimpy-milter/dkimpy_milter/__init__.py", line 64, in connect
    self.receiver = self.getsymval('j').strip()
AttributeError: 'NoneType' object has no attribute 'strip'
2019-02-21 19:21:38 -05:00
Scott Kitterman 51c8fdcb6c Bump version to 1.0.1, update TODO, set release date 2019-02-11 15:14:11 -05:00
Scott Kitterman aa4dadc22f * Reorder milter start and dropping privileges so permissions on Unix socket
are correct (LP: 1797720)
2019-02-11 15:09:34 -05:00
Scott Kitterman b1abbf9d61 - Make domain checks case insensitive for determining if signing should be
done (LP: #1815311)
2019-02-11 14:55:35 -05:00
Scott Kitterman c91a12f0d1 Documentation updates for 1.0.0 release 2018-05-11 14:29:15 -04:00
Scott Kitterman a2ff03727d - Put version directly in setup.py and do not import dkimpy_milter to ease
install via pip
2018-03-15 23:44:31 -04:00
Scott Kitterman f9483fea8c - Added protection for malformed From addresses. If the From does not at
least have an '@' in the address, then the signing domain is not extracted
   and the message will not be signed
2018-03-15 20:42:49 -04:00
Scott Kitterman 7a3a7bfb43 Bump version to 0.9.6 2018-03-12 22:08:07 -04:00
Scott Kitterman 8a0e1bdd97 - Fixed typo in path for fallback location of the config file if one is not
provided
2018-03-12 22:03:45 -04:00
Scott Kitterman 1d8c309da9 Fix setup.py install locations so they are installed correctly and drop unneeded README changes. 2018-03-10 20:06:21 -05:00
Scott Kitterman 4d5961e4d5 Bump version 2018-03-10 19:52:29 -05:00
Scott Kitterman 86eb152f93 Enhanced signature verification logging to provide more useful information, added signing success logging, and more PEP 8 2018-03-10 19:02:37 -05:00
Scott Kitterman 126966e110 - Update Authentication Results result comment not to mention key size for
ed25519 signatures, since it's irrelevant
2018-03-10 18:18:01 -05:00
Scott Kitterman 1843ca6244 - Added support for SyslogSuccess option
- Rationalized logging to be much less verbose unless SyslogSuccess or
   debugLevel are set - default is generally start/stop/errors only
2018-03-10 16:06:22 -05:00
Scott Kitterman a8aa422b03 Post pep-8 cleanup 2018-03-10 15:34:56 -05:00
Scott Kitterman 70606ac58c pep8 and a few other cleanups 2018-03-10 02:45:35 -05:00
Scott Kitterman 6348bdcdc7 Cleanup, indentation, pyflakes 2018-03-10 00:52:45 -05:00
Scott Kitterman fd39384e78 Fix for DiagnosticDirectory 2018-03-09 23:49:57 -05:00
Scott Kitterman efeabd19d3 Added support for MacroListVerify option 2018-03-09 22:39:55 -05:00