7 releases

0.2.0 Mar 13, 2024
0.2.0-alpha.2 Mar 4, 2024
0.2.0-alpha.1 Jan 19, 2024
0.1.0 Sep 25, 2023
0.0.1 Nov 4, 2022

#328 in Email


Used in 3 crates

GPL-3.0-or-later

39KB
818 lines

indymilter-test

The indymilter-test library provides facilities for testing milter programs. It can be used to simulate the MTA side of an MTA–milter conversation during integration testing.

This library was originally created for testing milters written using the indymilter library. However, it contains a general milter client implementation, and can be used for testing any milter at all. For example, it could be used as a replacement for the miltertest utility from the OpenDKIM project.

For now, this library is released as a ‘minimum viable product’. It is being used successfully in a number of projects, but the API is still lacking in good ergonomics, and diagnostics leave something to be desired. Consider it a sharp tool: you must be familiar with how SMTP client and server talk to each other and how that maps to an MTA–milter conversation, and use the library API accordingly.

Usage

Include indymilter-test in the [dev-dependencies] section of Cargo.toml as usual.

As mentioned above, using the library API requires some expertise in the milter protocol. The following are some helpful resources on indymilter-test usage:

  • API documentation
  • Example test
  • sendmail milter documentation: For a detailed description of the milter protocol, see the original sendmail milter documentation. It can be found in your distro’s sendmail package (for example, on Debian and Ubuntu at /usr/share/doc/sendmail-doc/libmilter/html/index.html).
  • indymilter trace logging: When testing a milter written using indymilter, install a tracing subscriber and enable logging at trace level for insights into milter operation.

The minimum supported Rust version is 1.65.0.

Licence

Copyright © 2022–2024 David Bürgin

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Dependencies

~3–12MB
~129K SLoC