Tags give the ability to mark specific points in history as being important
-
v1.7.0
7a1356fe · ·v1.7.0 ### Added - `sendmail_mta_family`, and Postfix recognised behind a `sendmail` binary, also when `dpkg-divert` renamed it to `sendmail.distrib` (README "Available settings"). - Configuration files of the wrapper's own, `/etc/sendmail-wrapper.conf` and `~/.sendmail-wrapper.conf`, read after the msmtprc of their level; msmtp refuses `sendmail_*` keys in its own files, and a warning names an msmtprc that holds some (README "Configuration"). - `SENDMAIL_SYSTEM_CONFIG` and `SENDMAIL_WRAPPER_CONFIG`, each honoured only while the default file is absent (README "Configuration"). - `SENDMAIL_REPLYTO` as an alias of `SENDMAIL_REPLY_TO` (README "Configuration"). - A loop guard: the wrapper refuses to run itself, or a second copy of itself, as backend (`SENDMAIL_WRAPPER_DEPTH`, README "Configuration"). - `sendmail_default_account` in a config file (README "Available settings"). - `sendmail_warn_allmailfrom`: with nullmailer, a warning when `/etc/nullmailer/allmailfrom` will replace the envelope sender (README "Available settings"). - msmtp's `-a NAME` selects the wrapper's account section like `--account`, which wins where both are given (README "Default account and msmtp integration"). - Backend modes (`-bp`, `-bd`, `-bi`, `-bt`, `-bv`, `-bs`, `-q`) are run by the backend without message processing; called as `mailq` or `newaliases` the wrapper implies `-bp` or `-bi` (README "Exit codes"). - Flags: `-r` as `-f`, `-R`, `-L`, `-O`, `-p`, `-bm`, `-V envid`, Exim `-oM*`, `-N` and `-M*`, msmtp `-a` and its long options, nullmailer `-h` (`--help` "Known backends"). - `--help` lists the permitted flags per backend family and every `sendmail_*` setting (`--help` "Known backends"). - The module is importable and `main(argv)` returns the exit code (GUIDELINES/README.md "Working on it"). - A pytest suite under `tests/`: integration and unit layers (GUIDELINES/README.md "Working on it"). - The MIT licence, as `LICENSE` and as an SPDX header in `sendmail.py`, which is installed without the rest of the repository (LICENSE). ### Changed - Aliases reach the backend in canonical form, short flags with a value as two arguments, glued-only flags as one token (README "Argument filtering"). - The last `-f` wins, and sets the Received and generated From address; `sendmail_force_header from` replaces it (README "Available settings"). - Account names are case-sensitive, `account NAME : BASE` inherits, an `account default` section applies by default. Configuration may need updating (README "Default account and msmtp integration"). - `$VAR` expansion applies to every configuration value, locked ones included (README "Available settings"). - `sendmail_header_add` keeps an existing header; `sendmail_header_edit` takes `\/` and flags (README "Custom header actions"). - `To:` is generated for a single recipient only (README "Recipient handling"). - The Received header is one comment and is inserted first (README "Message normalisation"). - Abbreviations of the wrapper's options (`--acc`) go to the backend (README "Command-line options"). - Sender validation accepts bare hosts, IDN and non-ASCII domains, and rejects parentheses and backslashes; the Received comment escapes the account name (README "Available settings"). - nullmailer no longer receives `-i`, `-oi` or `-t`; msmtp no longer `-bs` or `--show-envelope` (`--help` "Known backends"). - Wrapper-side errors, and a backend killed by a signal, exit 75 and are logged at ERR (README "Exit codes"). - `--version` exits 0 where the backend runs but has no version query (nullmailer); it was 2 (README "Exit codes"). - With `-v` the backend's output reaches the terminal instead of the log (`--help` "Known backends"). - Only non-UTF-8 inline text parts are re-encoded and attachments keep their bytes; a signed message passes through byte-identical, a nested `multipart/signed` included (README "Signed messages"). - Python 3.9 or newer is required; an older interpreter exits 75 with one line (README, top). ### Removed - `sendmail_account`, which nothing read; `msmtpd` as a backend candidate (README "Available settings"). - The legacy shell wrappers `sendmail-*.sh`, superseded by `sendmail.py` (`git log -- 'sendmail-*.sh'`). ### Fixed - A bare `sendmail_mta` name was resolved in the working directory, and discovery stopped at the wrapper on PATH instead of looking further (README "Available settings"). - `sendmail_flags_list` crashed the wrapper, an invalid `sendmail_filter` was a traceback, and `sendmail_filter off` still removed unknown flags (README "Argument filtering"). - Bodies with a transfer encoding, and non-text bodies, were corrupted (README "Message normalisation"). - `-fADDR` and VERP senders were dropped, and values of sendmail flags unknown to the tables became recipients (README "Argument filtering"). - Any `SENDMAIL_*` environment variable crashed the wrapper; locked keys were lost under `sendmail_ignore_global_config`, on undecodable bytes, when spelt with dashes or capitals, and when a later line set its own list (README "Locked settings"). - `sendmail_header_append`, `sendmail_force_header reply-to`, `sendmail_reply-to` and the replacement of an invalid Message-ID did nothing (README "Custom header actions"). - Duplicate `To:`/`Cc:` lines were dropped (now merged, keeping the header's spelling), and header actions from `defaults` ran twice (README "Message normalisation"). - A closed standard input produced a traceback (README "Message normalisation"). - `sendmail.py` was recorded without the executable bit, so a clone could not run it (README "Installation"). - A `\[` in a `sendmail_header_edit` replacement kept its backslash (README "Custom header actions"). - `-F` disabled the `from` directive; a system `account default` was ignored, and a repeated `account` section discarded the earlier one (README "Default account and msmtp integration"). - A `sendmail_header_*` action in the user file undid a header the system file forces (README "Available settings").