]>
git.ipfire.org Git - thirdparty/mlmmj.git/log
Baptiste Daroussin [Sun, 11 Jan 2026 19:51:17 +0000 (20:51 +0100)]
Release 1.7.0
Michael S. Tsirkin [Fri, 9 Jan 2026 08:49:17 +0000 (03:49 -0500)]
tests: enable glibc malloc corruption detection
Set MALLOC_CHECK_=3 in test environment to detect memory corruption
issues like double-free and buffer overflows. When detected, glibc
will print a diagnostic and abort the program.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Michael S. Tsirkin [Thu, 8 Jan 2026 06:49:01 +0000 (01:49 -0500)]
listcontrol: fix double-free in CTRL_RELEASE error path
moderatefilename is already freed before the autosubscribe block:
free(moderatefilename);
bool autosubscribe = statctrl(ml->ctrlfd, "autosubscribe");
if (autosubscribe) {
...
if (mfd == -1) {
free(sendfilename);
free(moderatefilename); // double-free
return (-1);
}
Remove the second free.
Fixes: ac7f7646 ("autosubscribe: new feature")
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Michael S. Tsirkin [Thu, 8 Jan 2026 13:23:28 +0000 (08:23 -0500)]
fix locking bug in log_oper() and run_digests()
The condition
if (fd < 0 && !lock(fd, true))
makes no sense: it will try to lock a negative fd which
of course does nothing.
What is meant is
if (fd < 0 || !lock(fd, true))
if fd is not negative, lock it.
Fixes: 2af27b24 ("locking: use a more portable mechanism")
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Michael S. Tsirkin [Thu, 8 Jan 2026 12:33:34 +0000 (07:33 -0500)]
fix locking logic
The condition
if (fd == -1 && !lock(fd, true))
does not make sense: if fd is -1 it will try to lock the fd.
Of course locking -1 does nothing.
What is meant is
if (fd == -1 || !lock(fd, true))
in other words if fd is valid, lock it.
Affected locations:
- src/mlmmj.c: unsubscribe() - writing subscriber .new files
- src/subscriberfuncs.c: subscribe_type() - appending to subscriber files
- src/incindexfile.c: incindexfile() - updating list index
Without this fix, these operations proceed without file locking, which
can at least theoretically cause data corruption if multiple processes
operate on the same files concurrently.
Fixes: 2af27b24 ("locking: use a more portable mechanism")
Fixes: f9da8d13 ("mlmmj-sub: move all subcription code into a reusable function")
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Michael S. Tsirkin [Wed, 7 Jan 2026 09:13:35 +0000 (04:13 -0500)]
mlmmj-process: address TODO to free parsed headers
Add free_parsed_hdrs() helper to free readhdrs and all strlist
variables (fromemails, toemails, ccemails, etc.) before exit.
This is a cosmetic fix since mlmmj-process is a short-lived
executable that exits immediately after processing, so the OS
reclaims all memory anyway. However, it improves code hygiene
and removes the XXX comment.
Fixes: 4059b78 ("do_all_the_voodo_here introducton plus a massive cleanup")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:42:53 +0000 (03:42 -0500)]
subscriberfuncs: fix memory leak in autosubscribe_sender
The readhdrs structure allocated by scan_headers() was never freed,
causing a memory leak on every call to autosubscribe_sender(). Add
free_mailhdrs() calls to all return paths.
Fixes: ac7f764 ("autosubscribe: new feature")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:50:22 +0000 (03:50 -0500)]
mlmmj: move free_mailhdrs() to mlmmj.c and fix leak in prepstdreply
Move free_mailhdrs() from subscriberfuncs.c to mlmmj.c (next to
save_hdr_if_needed) and declare it in mlmmj.h so it can be shared.
Also fix memory leak in get_msgid_line() which calls scan_headers()
but never freed the allocated readhdrs memory.
Fixes: 2550bb1 ("probe: send message-id is possibel in probe emails")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:33:47 +0000 (03:33 -0500)]
tests: fix charset in maxmailsize test expectations
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:33:36 +0000 (03:33 -0500)]
tests: fix charset in moderation_reject_invalid test expectation
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:33:27 +0000 (03:33 -0500)]
tests: fix charset in moderation_notmetoo test expectation
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:33:17 +0000 (03:33 -0500)]
tests: fix charset in moderation_notifymod test expectation
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:33:07 +0000 (03:33 -0500)]
tests: fix charset in moderation test expectation
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
Michael S. Tsirkin [Wed, 7 Jan 2026 08:32:49 +0000 (03:32 -0500)]
tests: fix charset in simple test expectation
Change charset=utf8 to charset=utf-8 to match the listtexts change
from commit
2045851 .
Fixes: 2045851 ("fix East Asian script garbled characters")
liu shiwei [Thu, 27 Nov 2025 09:42:52 +0000 (17:42 +0800)]
fix East Asian script garbled characters
the text files use `charset=utf8`,
but according to the RFC3629,RFC2046,RFC6532, the correct way to write it is `charset=utf-8`.
Baptiste Daroussin [Thu, 13 Nov 2025 16:44:56 +0000 (17:44 +0100)]
moderation: remove dead part of the message
Baptiste Daroussin [Thu, 13 Nov 2025 16:41:15 +0000 (17:41 +0100)]
selfmoderate: adapt the text send to the user
Baptiste Daroussin [Thu, 13 Nov 2025 15:33:55 +0000 (16:33 +0100)]
rename modemailsender to selfmoderate
Baptiste Daroussin [Thu, 13 Nov 2025 15:31:09 +0000 (16:31 +0100)]
autosubscribe: new feature
when a mailing list moderated for non subscribed people, if a moderator
accept the email of the sender automatically register the send in the
list of "nomail" subscribers.
Baptiste Daroussin [Thu, 13 Nov 2025 13:45:06 +0000 (14:45 +0100)]
move and rename getinfo into an understandable name
Baptiste Daroussin [Thu, 13 Nov 2025 13:07:29 +0000 (14:07 +0100)]
Use a generic function instead of findit
Baptiste Daroussin [Thu, 13 Nov 2025 07:44:08 +0000 (08:44 +0100)]
mlmmj-send: small style improvements
Baptiste Daroussin [Thu, 13 Nov 2025 07:36:04 +0000 (08:36 +0100)]
listcontrol: style improvements
Baptiste Daroussin [Wed, 12 Nov 2025 16:49:50 +0000 (17:49 +0100)]
mlmmj-process: more style improvements
Baptiste Daroussin [Wed, 12 Nov 2025 16:46:19 +0000 (17:46 +0100)]
mlmmj-process: small style changes
Michael S. Tsirkin [Sun, 24 Aug 2025 20:50:27 +0000 (16:50 -0400)]
implement modemailsender test
Implement a new moderation_modemailsender test.
It is identical to moderation_modemailsender, but
sets modemailsender and verifies that the moderation email
goes to the sender.
Michael S. Tsirkin [Sun, 24 Aug 2025 21:49:02 +0000 (17:49 -0400)]
refactor moderation test
add a subfunction that will allow adding more tests without duplication
Michael S. Tsirkin [Sun, 24 Aug 2025 17:45:28 +0000 (13:45 -0400)]
add modemailsender option for sender moderation
Some people make their lists subscriber-only for the only reason
that they want senders to confirm they can receive email.
For example, this is a weak form of anti-spam (senders which can not
receive mail and reply to it are filtered out).
However, this annoys one-time contributors which really just want to
post a random mail here and there.
To address this, add a new modemailsender option for sending moderation
emails back to senders instead of moderators. They can now then confirm
it themselves - less work for moderators!
Specifically, when the control/modemailsender file is present,
moderation emails are sent to the original sender instead of moderators.
Only affects moderated lists.
urosm [Sun, 9 Nov 2025 16:59:54 +0000 (17:59 +0100)]
Fix typo to correctly detect disabled nomail subscriptions
Erwan MAS [Mon, 30 Jun 2025 11:22:17 +0000 (07:22 -0400)]
- emphasize headers with markdown modifier
Baptiste Daroussin [Fri, 27 Jun 2025 09:18:36 +0000 (11:18 +0200)]
delheaders: improve documentation
Fixes: #68
Erwan MAS [Thu, 26 Jun 2025 15:26:04 +0000 (11:26 -0400)]
add more patterns to delheaders unit tests
Erwan MAS [Mon, 23 Jun 2025 18:40:09 +0000 (14:40 -0400)]
add more unit tests to delheaders feature
Baptiste Daroussin [Mon, 16 Jun 2025 12:16:07 +0000 (14:16 +0200)]
update license
Baptiste Daroussin [Fri, 13 Jun 2025 14:14:53 +0000 (16:14 +0200)]
Release 1.6.0
Baptiste Daroussin [Fri, 13 Jun 2025 14:04:16 +0000 (16:04 +0200)]
customheaders: remove blank prefix and skip empty lines
Remove all the blanks prefixing any lines and skip empty lines when
adding custom headers as it can break email parsers
Fixes: #17
Baptiste Daroussin [Fri, 13 Jun 2025 14:06:59 +0000 (16:06 +0200)]
Changelog: document $bouncenumbers$ new expansion
Baptiste Daroussin [Fri, 13 Jun 2025 13:33:57 +0000 (15:33 +0200)]
probe: send message-id is possibel in probe emails
When sending the probe emails, tries to add the message-id in the
message, to help users figuring finding the wrong email
Fixes: #8
Baptiste Daroussin [Fri, 13 Jun 2025 13:32:57 +0000 (15:32 +0200)]
refactoring: isolate the code scanning the header
Isolate the code scanning the header of a mail into its own function
for it to be reusable
Baptiste Daroussin [Fri, 13 Jun 2025 08:18:21 +0000 (10:18 +0200)]
cleanup: remove extra semicolon
Erwan MAS [Sat, 7 Jun 2025 18:37:00 +0000 (14:37 -0400)]
customheaders allow substitution on variable $posteraddr$
Erwan MAS [Fri, 30 May 2025 17:40:33 +0000 (13:40 -0400)]
- fix build issues on Linux/Hurd 386
- unit test tests/mlmmj:smtp was incorrect because write_dot send 2 lines
Baptiste Daroussin [Tue, 27 May 2025 11:37:05 +0000 (13:37 +0200)]
Update changelog
Baptiste Daroussin [Tue, 27 May 2025 10:05:37 +0000 (12:05 +0200)]
Release 1.5.2
Baptiste Daroussin [Tue, 27 May 2025 09:35:47 +0000 (11:35 +0200)]
test: restore usage of top_srcdir which was actually setup in kyua.conf
Add a test of the presence of the variable, it fails if the kyua.conf
path is not provided to the kyua call
Baptiste Daroussin [Tue, 27 May 2025 09:18:02 +0000 (11:18 +0200)]
portability: fix socket size initialisation (fixes tests on alpine)
Baptiste Daroussin [Tue, 27 May 2025 08:33:48 +0000 (10:33 +0200)]
test: fix setting up listtext symlinks
Note top_srcdir is not a valide atf-c variable, no idea why it worked
most of the time
Baptiste Daroussin [Tue, 27 May 2025 08:04:40 +0000 (10:04 +0200)]
portability: fix socket size initialisation (fixes tests on alpine)
Baptiste Daroussin [Tue, 27 May 2025 08:00:59 +0000 (10:00 +0200)]
fakesmtp: (portability) fix run on alpine
Baptiste Daroussin [Tue, 27 May 2025 07:00:05 +0000 (09:00 +0200)]
mlmmj-bounce:basics_6 can only be run as non root
Baptiste Daroussin [Tue, 27 May 2025 06:54:15 +0000 (08:54 +0200)]
32bit fix touch argument to remain on an always valid range
Erwan MAS [Mon, 26 May 2025 20:40:13 +0000 (16:40 -0400)]
- rewrite some tests involving time_t so he will perform better on 32 bits platform
Baptiste Daroussin [Mon, 26 May 2025 12:49:54 +0000 (14:49 +0200)]
Releae 1.5.1
Baptiste Daroussin [Mon, 26 May 2025 12:47:16 +0000 (14:47 +0200)]
Fix tests when there is an actual mailserver running on the host
Erwan MAS [Mon, 26 May 2025 03:45:12 +0000 (23:45 -0400)]
- fgetc return a int not a char , and that was not portable on arm 64
Erwan MAS [Sun, 25 May 2025 03:57:00 +0000 (23:57 -0400)]
- fix issue with struct ml , not be initialized , test mod_get_addr_type failed
Baptiste Daroussin [Wed, 29 Jan 2025 09:27:39 +0000 (10:27 +0100)]
Release 1.5.0
Baptiste Daroussin [Wed, 8 Jan 2025 13:12:22 +0000 (14:12 +0100)]
rfc2047: add tests for us-ascii
Baptiste Daroussin [Wed, 8 Jan 2025 10:42:45 +0000 (11:42 +0100)]
decode_qp: add Q format support and reuse the function
decode rfc2047's Q format using the strgen's decode_qp this reduces code
duplication
Baptiste Daroussin [Tue, 7 Jan 2025 17:37:58 +0000 (18:37 +0100)]
unistr: add tests for unistr_header_to_utf8
Baptiste Daroussin [Tue, 7 Jan 2025 16:58:29 +0000 (17:58 +0100)]
unistr: remove declaration of removed unistr_dump
Baptiste Daroussin [Tue, 7 Jan 2025 16:51:42 +0000 (17:51 +0100)]
unistr: remove unused functions
Graham Leggett [Fri, 3 Jan 2025 14:27:36 +0000 (14:27 +0000)]
Add option to copy From: to Reply-To:
The replyto boolean causes the original From: header to be copied
to Reply-To:, so that emails can be accepted from senders that
enforce DMARC policies.
Baptiste Daroussin [Mon, 23 Sep 2024 12:19:25 +0000 (14:19 +0200)]
Changelog: add a missing change
Baptiste Daroussin [Mon, 23 Sep 2024 12:17:52 +0000 (14:17 +0200)]
Changelog: add the 2 last changes
Baptiste Daroussin [Mon, 23 Sep 2024 12:00:40 +0000 (14:00 +0200)]
bounce: fix recording twice bounces
While here simplify bounce code
Baptiste Daroussin [Tue, 17 Sep 2024 15:00:35 +0000 (17:00 +0200)]
foot filter: remove documentation
Baptiste Daroussin [Tue, 17 Sep 2024 14:15:01 +0000 (16:15 +0200)]
foot_filter: remove
this is too naive and cannot cope with the complexity of emails.
Either mails are restricted to be plain/text and control/footer is
enough or preprocess with ah external program the email, this work
does not belong directly to mlmmj and I don't intend into maintaining
this code.
Fixes: #23
Baptiste Daroussin [Tue, 17 Sep 2024 14:14:14 +0000 (16:14 +0200)]
subscribefunc: ensure we have an address to (un)subscribe
Baptiste Daroussin [Tue, 17 Sep 2024 08:41:00 +0000 (10:41 +0200)]
analysis: mark a couple of function as noreturn
This helps code analysis tools.
Baptiste Daroussin [Tue, 27 Aug 2024 16:12:28 +0000 (18:12 +0200)]
mlmmj-process: plug memory leak
Baptiste Daroussin [Tue, 27 Aug 2024 16:08:16 +0000 (18:08 +0200)]
access: document the dash-extension
Baptiste Daroussin [Tue, 27 Aug 2024 15:13:58 +0000 (17:13 +0200)]
access: granular access rejection
if a qualifier was passed to the deny action, this qualifier is then
used as an extension when looking for the template of deny message to
send to the user.
deny-post-access-<qualifier>
Fixes: #7
Baptiste Daroussin [Tue, 27 Aug 2024 15:10:53 +0000 (17:10 +0200)]
access: accept -<qualifier> after actions
Baptiste Daroussin [Tue, 27 Aug 2024 14:53:29 +0000 (16:53 +0200)]
access: modify the function to make it build the message to log
this allows better testability and make sure we only log in one place.
Baptiste Daroussin [Tue, 27 Aug 2024 14:33:30 +0000 (16:33 +0200)]
access: move code handling access into a separate to make it testable
while here, add very basic unit tests
Baptiste Daroussin [Tue, 27 Aug 2024 13:38:15 +0000 (15:38 +0200)]
document removal of pymime
Baptiste Daroussin [Tue, 27 Aug 2024 13:37:05 +0000 (15:37 +0200)]
pymime: remove
This script is obsolete: depends on python 2 and hasn't been updated
upstream for years
Baptiste Daroussin [Tue, 27 Aug 2024 09:36:48 +0000 (11:36 +0200)]
receivestrip: delete blank lines
Baptiste Daroussin [Tue, 27 Aug 2024 09:23:55 +0000 (11:23 +0200)]
receive-strip: replace extract_boundary with unit tested parse_content_type
Baptiste Daroussin [Tue, 27 Aug 2024 09:18:48 +0000 (11:18 +0200)]
mlmmj: add a parser to extract content-type's mime and boundary
Baptiste Daroussin [Mon, 26 Aug 2024 07:47:43 +0000 (09:47 +0200)]
message formatting: remove all deprecated variables
Baptiste Daroussin [Mon, 26 Aug 2024 07:47:18 +0000 (09:47 +0200)]
listtexts: stop using deprecated $confaddr$
Use $confimaddr$ instead
Baptiste Daroussin [Mon, 1 Jul 2024 11:04:03 +0000 (13:04 +0200)]
fix build on linux
Baptiste Daroussin [Mon, 1 Jul 2024 10:55:53 +0000 (12:55 +0200)]
release: 1.4.7
Baptiste Daroussin [Mon, 1 Jul 2024 10:52:59 +0000 (12:52 +0200)]
strgen: xlocale.h is required to build on macOS
Siva Mahadevan [Tue, 11 Jun 2024 15:05:46 +0000 (11:05 -0400)]
mlmmj-process: fix duplicate queued moderation notification email
Baptiste Daroussin [Thu, 6 Jun 2024 11:27:32 +0000 (13:27 +0200)]
release: 1.4.6
Baptiste Daroussin [Thu, 6 Jun 2024 08:16:34 +0000 (10:16 +0200)]
test: fix a test regarding RFC 5321
Baptiste Daroussin [Fri, 31 May 2024 13:42:07 +0000 (15:42 +0200)]
Fix another regression in RFC 5321
Baptiste Daroussin [Fri, 31 May 2024 08:54:46 +0000 (10:54 +0200)]
test: add a unit test about #30
prx [Fri, 10 May 2024 18:50:16 +0000 (20:50 +0200)]
remove unnecessary double quotes breaking cron on OpenBSD
Baptiste Daroussin [Mon, 6 May 2024 09:33:39 +0000 (11:33 +0200)]
README: remove name, some are inactive nowaday
Baptiste Daroussin [Mon, 6 May 2024 09:31:59 +0000 (11:31 +0200)]
TUNABLES: fix rendering
Baptiste Daroussin [Mon, 6 May 2024 09:27:18 +0000 (11:27 +0200)]
security: remove note which might not be accurate anymore
Baptiste Daroussin [Mon, 6 May 2024 09:26:12 +0000 (11:26 +0200)]
README.*: convert all to READMEs to markdown
Baptiste Daroussin [Mon, 6 May 2024 09:03:02 +0000 (11:03 +0200)]
README.exim4: convert to markdown
Baptiste Daroussin [Mon, 6 May 2024 08:45:48 +0000 (10:45 +0200)]
README.archives: rename to .md
Baptiste Daroussin [Mon, 6 May 2024 08:39:44 +0000 (10:39 +0200)]
README.access: convert to markdown
Baptiste Daroussin [Mon, 6 May 2024 08:36:53 +0000 (10:36 +0200)]
README: fix formatting the hierarchy