gating mailman <-> inn2, message duplication
Laurens Kils-Hütten
lkh at grenzland.club
Thu Feb 26 21:35:18 UTC 2026
Hi all,
I'd like to ask for help with this problem I'm having with setting
up gating between a mailing list and a local newsgroup.
The symptom is this: when I send messages from a subscribed email
account to the list, I get a duplicate back to the list with a notable
lag of about 1 to 3 seconds.
>From what I can grasp from logs and message headers, this is what
appears to be happening:
The mta sends the message to mailman, mailman distributes the message
to any subscribers *and* to inn2 via nnrp. inn2 posts the message to
the respective group *and* - apparently - hands it back to mailman.
mailman in turn sends it out to subscribers again and also back to inn2.
Now however nnrp fails, since this duplicate message already has an
Injection-Info header which cannot be changed. This is where the loop
ends. All mail recepients got the duplicate, but not the newsgroup.
When messages originate from netnews I don't get duplicates. I'm
suspecting that maybe on initial arrival from the mailman side,
there isn't any Path header set yet, so the exclusion pattern doesn't
match anything?
# this is in /etc/news/newsfeeds:
news2mail!:!*:Ac,Tc,Wn*:/usr/lib/news/bin/news2mail
test-grenzland-club/grenzland.club:!*,grenzland.test:Ap,Tm:news2mail!
# the exclusion pattern "grenzland.club" should prevent messages
# from being send back via news2mail, but apparently this doesn't
# work as it should.
# this is from /etc/news/news2mail.cf:
test-grenzland-club test at grenzland.club
# this basically works, news articles arrive at the proper
# list address.
# Path: headers look like this, no matter whether messages originated
# from email or news:
Path: grenzland.club!.POSTED.localhost!not-for-mail
Any ideas what might be the problem or what to look into?
Thanks a lot, more details follow.
This is from the logs:
# This is from /var/log/mailman3/mailman3.log
# note that it begins with two ACCEPT messages two seconds apart. The
# message IDs are identical. These are the duplicates. The problem must
# occur between the first and the second ACCEPT.
# After the second ACCEPT mailman's NNTP client throws an error as it
# fails to hand the duplictate over to inn2, thus preventing an endless
# loop.
Feb 23 20:39:08 2026 (2776528) ACCEPT: <e4938b85cbd75c0b04867514fc0b8ad9 at betola.de>
Feb 23 20:39:10 2026 (2776528) ACCEPT: <e4938b85cbd75c0b04867514fc0b8ad9 at betola.de>
Feb 23 20:39:12 2026 (2776530) <e4938b85cbd75c0b04867514fc0b8ad9 at betola.de> NNTP error for test at grenzland.club
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mailman/runners/nntp.py", line 94, in _dispose
conn.post(fp)
~~~~~~~~~^^^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 916, in post
return self._post('POST', data)
~~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 909, in _post
return self._getresp()
~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/nntplib/__init__.py", line 492, in _getresp
raise NNTPTemporaryError(resp)
nntplib.NNTPTemporaryError: 441 Can't set system Injection-Info header field
# /var/log/news/news.notice:
# (different time stamp, but it always looks the same)
# you can see how the first post is accepted, but the second post of the
# duplicate fails. Same story ...
2026-02-25T22:49:31.966611+01:00 grenzland innd: localhost connected 21 streaming allowed
2026-02-25T22:49:32.006079+01:00 grenzland innd: localhost:21 NCmode "MODE READER" received
2026-02-25T22:49:32.006427+01:00 grenzland innd: localhost:21 checkpoint seconds 1 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:32.006490+01:00 grenzland innd: localhost:21 closed seconds 1 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:32.015322+01:00 grenzland nnrpd[2990705]: localhost (127.0.0.1) connect - port 119
2026-02-25T22:49:32.059569+01:00 grenzland nnrpd[2990705]: SERVER perl filtering enabled
2026-02-25T22:49:32.059711+01:00 grenzland innd: localhost connected 21
2026-02-25T22:49:32.061392+01:00 grenzland innd: localhost:21 checkpoint seconds 0 accepted 1 refused 0 rejected 0 duplicate 0 accepted size 1338 duplicate size 0 rejected size 0
2026-02-25T22:49:32.061463+01:00 grenzland innd: localhost:21 closed seconds 0 accepted 1 refused 0 rejected 0 duplicate 0 accepted size 1338 duplicate size 0 rejected size 0
2026-02-25T22:49:32.061498+01:00 grenzland nnrpd[2990705]: localhost post ok <20260225214930.E77531412C1 at grenzland.club>
2026-02-25T22:49:32.062568+01:00 grenzland nnrpd[2990705]: localhost posts received 1 rejected 0
2026-02-25T22:49:32.062771+01:00 grenzland nnrpd[2990705]: localhost times user 0.006 system 0.004 idle 0.000 elapsed 0.048
2026-02-25T22:49:32.062895+01:00 grenzland nnrpd[2990705]: localhost time 48 idle 43(6) nntpwrite 1(24)
2026-02-25T22:49:33.070321+01:00 grenzland innd: localhost connected 21 streaming allowed
2026-02-25T22:49:33.110111+01:00 grenzland innd: localhost:21 NCmode "MODE READER" received
2026-02-25T22:49:33.111092+01:00 grenzland innd: localhost:21 checkpoint seconds 0 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:33.111186+01:00 grenzland innd: localhost:21 closed seconds 0 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:33.124001+01:00 grenzland nnrpd[2990714]: localhost (127.0.0.1) connect - port 119
2026-02-25T22:49:33.165116+01:00 grenzland nnrpd[2990714]: localhost post failed Can't set system Injection-Info header field
2026-02-25T22:49:33.165765+01:00 grenzland nnrpd[2990714]: localhost posts received 0 rejected 1
2026-02-25T22:49:33.165832+01:00 grenzland nnrpd[2990714]: localhost times user 0.005 system 0.004 idle 0.000 elapsed 0.043
2026-02-25T22:49:33.165876+01:00 grenzland nnrpd[2990714]: localhost time 43 idle 42(6) nntpwrite 0(24)
2026-02-25T22:49:33.173419+01:00 grenzland innd: localhost connected 21 streaming allowed
2026-02-25T22:49:33.213944+01:00 grenzland innd: localhost:21 NCmode "MODE READER" received
2026-02-25T22:49:33.214300+01:00 grenzland innd: localhost:21 checkpoint seconds 0 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:33.214368+01:00 grenzland innd: localhost:21 closed seconds 0 accepted 0 refused 0 rejected 0 duplicate 0 accepted size 0 duplicate size 0 rejected size 0
2026-02-25T22:49:33.221243+01:00 grenzland nnrpd[2990715]: localhost (127.0.0.1) connect - port 119
2026-02-25T22:49:33.261359+01:00 grenzland nnrpd[2990715]: localhost post failed Can't set system Injection-Info header field
2026-02-25T22:49:33.262391+01:00 grenzland nnrpd[2990715]: localhost posts received 0 rejected 1
2026-02-25T22:49:33.263326+01:00 grenzland nnrpd[2990715]: localhost times user 0.005 system 0.002 idle 0.000 elapsed 0.042
2026-02-25T22:49:33.263816+01:00 grenzland nnrpd[2990715]: localhost time 43 idle 41(6) nntpwrite 1(24)
Thanks again and best wishes,
Laurens
--
https://grenzland.club/~lkh
email/xmpp: lkh at grenzland.club
More information about the inn-workers
mailing list