fix DNS configuration of lists.fedoraproject.org to stop email messages being classified as spam #12487
Labels
No labels
announcement
anubis
authentication
aws
backlog
blocked
bodhi
ci
cloud
communishift
copr
database
day-to-day
dc-move
deprecated
dev
discourse
dns
downloads
easyfix
epel
firmitas
forgejo_migration
Gain
High
Gain
Low
Gain
Medium
gitlab
greenwave
hardware
help wanted
high-trouble
koji
koschei
lists
low-trouble
medium-trouble
mirrorlists
monitoring
Needs investigation
odcs
OpenShift
ops
outage
packager_workflow_blocker
pagure
permissions
Priority
Needs Review
Priority
Next Meeting
Priority
🔥 URGENT 🔥
Priority
Waiting on Assignee
Priority
Waiting on External
Priority
Waiting on Reporter
rabbitmq
release-monitoring
releng
request-for-resources
s390x
security
SMTP
sprint-0
sprint-1
src.fp.o
staging
unfreeze
waiverdb
websites-general
wiki
Backlog Status
Needs Review
Backlog Status
Ready
chore
documentation
points
01
points
02
points
03
points
05
points
08
points
13
Priority
High
Priority
Low
Priority
Medium
Sprint Status
Blocked
Sprint Status
Done
Sprint Status
In Progress
Sprint Status
Review
Sprint Status
To Do
Technical Debt
Work Item
Bug
Work Item
Epic
Work Item
Spike
Work Item
Task
Work Item
User Story
No milestone
No project
No assignees
8 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
infra/tickets#12487
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fedora mailing list messages often are classified as spam by GMail. As you can see from messages sources, dmarc and other checks are failing.
A good overview of the DNS configuration problems can bee seen at
https://mxtoolbox.com/emailhealth/lists.fedoraproject.org/
then mind the warning
and click the "Click Here" button to run the tests against lists.fedoraproject.org.
You will see 5 buttons (Problems, Blacklist, Mail Server, Web Server, DNS) that let you expand the various categories
We can take a look. Thanks.
We are often on various blocklists because people subscribe, forget that they did and report the posts they get as spam. ;(
I am not sure what its meaning about 'dns record not found'... lists.fedoraproject.org definitely resolves.
But we can look into it and see what we can do.
dns record not foundit means that a DNS "record A" does not exist for the subdomain, but it's not a serious problemuh...
Metadata Update from @phsmoura:
Additional infos from https://www.checktls.com/TestReceiver
learndmarc.com output I got by passing the email headers (taken from my gmail account) corresponding to the message
https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org/message/Y3SEQTPGMJJHTLHRJV6WIS6UIR6YOFS6/
for comparison, this is the learndmarc.com output you get by passing the headers of a message from kde-devel@kde.org mailing list, which never is classified as spam by GMail
one view to the TXT record and you see the lack of a DMARC entry.
You can use this one to get rid of google:
"v=DMARC1; p=none;"
I thought that adding DMARC on mailman would be enough, but it seems that we need to add it to DNS as well.
Well, in mailman thats mitigation for the sender of the email having DMARC (to avoid the lists sending as that user from our outgoing server, which would be rejected).
This is google being... google and demanding DMARC I guess.
We do have:
host -t txt _DMARC.fedoraproject.org
_DMARC.fedoraproject.org descriptive text "v=DMARC1; p=none; rua=mailto:dmarc-admin@fedoraproject.org; ruf=mailto:dmarc-admin@fedoraproject.org; fo=0"
for the base domain.
Outgoing emails from the list go via bastion and are signed, but from bastion, which might make something cranky.
I'm fine adding the none record for lists for now.
Mailman "munging" (which is enabled on KDE lists) description from chatgpt o3
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/handlers/docs/dmarc-mitigations.html
What “munging” the From: header means
“Munging” (literally “to mangle or scramble”) is the act of rewriting the
From:field by the mailing-list software.When this option is enabled, Mailman takes the original message and:
Replaces the sender address
becomes, for example
Moves the author’s real address into
Reply-To:(or sometimesCc:) so that replies can still reach the original poster.The end result is that, after the list relays the mail, the domain in
From:matches the domain of the server actually sending it; SPF and DKIM are therefore “aligned,” and the message passes DMARC checks.Why it’s done
p=quarantine/reject), recipients such as Gmail or Yahoo would reject or spam-folder the message.From:to use the list’s domain, SPF (and DKIM, if the list signs outgoing mail) now align with that domain, so DMARC passes.Mailman documents this as the
munge_fromaction in its “DMARC Mitigations” guide and the official wiki describes it as “Rewrite (Munge) the From: header … to avoid DMARC rejection.”How to configure it in Mailman
from_is_list = Yes(old)dmarc_moderation_action = Munge From(recommended in ≥ 2.1.18).dmarc_mitigate_action = munge_fromdmarc_mitigate_unconditionally = Yesto apply it to all messages, or leave it off to affect only those from domains with strict DMARC.Advantages
Drawbacks
From:header recipients see no longer shows the true author’s address; some users find this confusing.From:(e.g.,git am, certain mail filters) can break.From:(though the practice is widely accepted).In a nutshell
From munging simply changes the visible sender so the domain matches the mailing list’s domain, sidestepping DMARC blocks.
Mailman lets you enable it with a single setting—use it when deliverability matters more than keeping the
From:header 100 % intact.We already have dmarc mitigation enabled for all lists. We have it set to do mitigations when the sending domain has a reject or quarantine setting.
I don't think we want to enable it unconditionally.
I've added a placeholder DMARC txt record to hopefully fix things. Please test.
So, any change for anyone?
I don't see much improvement. This message sent yesterday has still been classified as spam
And noone wonders, why it complains that fedoraproject is not redhat.com?
The link to a website without headers of that email, does not help, so i searched the mail on the dev-ml.
I checked SPF for both domains, and from the fact, that redhat.com got named, i have to assume and checked with the original mail to the list, that it's the original senderdomain which has been used to send over bastion, which must fail, as bastion is not listed in redhat.com's SPF entry.
fedoraprojects and redhats dmarc entries are syntactically valid and the report names SPF as failed.
BTW: pagure.io is used as a sender domain for the FI-ML and does not have SPF at all. Maybe someone wants to fix this or gmail won't take those mails either.
Conclusion: x@redhat.com is not allowed to be send over bastion by SPF..
Solution: Introduce SRS or add bastion to redhat's SPF entry (way easier).
2.BTW: Why did DKIM failed for the reporting tool? I checked the original mail and DKIM is correct. At least that should have passed. (note: dkim is dns based and dns can fail)
/usr/bin/spfquery --scope mfrom --id x@redhat.com --ip 38.145.60.11
fail
Please see http://www.openspf.org/Why?s=mfrom;id=x%40redhat.com;ip=38.145.60.11;r=c1.resellerdesktop.de
redhat.com ... 73t7ezjz._spf._d.mim.ec: Sender is not authorized by default to use 'x@redhat.com' in 'mfrom' identity (mechanism '-all' matched)
Received-SPF: fail (redhat.com ... 73t7ezjz._spf._d.mim.ec: Sender is not authorized by default to use 'x@redhat.com' in 'mfrom' identity (mechanism '-all' matched)) receiver=xxx.resellerdesktop.de; identity=mailfrom; envelope-from="x@redhat.com"; client-ip=38.145.60.11
QED
The problem here seems to be redhat.com doesn't trigger the mailman dmarc mitigation (because dmarc policy on redhat.com doesn't require it, but then the email hits SPF issues.
There is almost no chance that redhat.com will add us as a sender in SPF records.
than there is only one solution left: SRS (Sender Rewriting Scheme)
Rewriting the sender to an allowed form with a working domain, so SPF will pass.
Right and the only way I see to do that is to enable the mailman dmarc mitigation always. I guess we can do that but it might confuse some people.
Is the devel list the only place folks are seeing this issue?
So, still seeing any issues? or can we close this now?
no. Many of them are affected, I.E. users@lists.fedoraproject.org
Nothing has changed, so it is definitely not fixed. I am still experiencing it everyday
ok, and you are seeing it from just @redhat.com senders? or various?
HI,
Am 22.07.25 um 01:37 schrieb Kevin Fenzi:
a) FAS not working, Login not possible => Gateway Timeout
b)
Did you activate it on DEVML already because i don't see SRS there?
c) the SRS on this mail:
reply+25c163d354594b3b8b043102b4f3456a12e6b5f79a83d39533c0b6e38581536a3c9b954e70c46757cd724d5201de8a7788b9cea03f4cad96008bf4241e0e7f16@pagure.io
Is too much for TB to handle on the create message ui, the TO: ui
element got out of alignment... aka why is it thaaaaaaaaaaaat long??? :DDD
best regards,
Marius
@mschwarz I didn't heard anybody complaining that the FAS is not working, I just logged in without issue. Both with kerberos ticket and by username and password. Can you elaborate, where it's not working?
Am 22.07.25 um 14:54 schrieb Michal Konečný:
At the time of that reply.
"now" it's working as expected.
best regards,
Marius
It's enabled for all lists with the setting of:
Replace From with list addess
for
"The action to apply to messages From: a domain publishing a DMARC policy of reject or quarantine"
So, I guess the issue is that at least redhat.com does set such a policy, and gmail is marking things as spam because the re-writing isn't taking place.
According to https://gitlab.com/mailman/mailman/-/issues/1084 there's also now a setting where we could set *@redhat.com to use the rewrite.
Perhaps thats worth doing?
This is mail direct from pagure.io, not any list.
I don't know why the reply is so long there, but it needs to be unique over all issues/tickets/projects... so it's probibly a large hash.
Proton Mail also classifies many messages as spam, for example the email I got for message,
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/SWJZF2PEH6K74YZIQUMNP4JPSEULCIMW/
The header contains
X-Mailman-Rule-Misses: dmarc-mitigation. So can I ask what type of mitigation have you enabled?I would like again to stress that munge can definitely help fixing the spam problem.
P.S. (19th August)
a comment from Daniel Gruno of The Apache Software Foundation, in #mailman IRC channel
So, we have "DMARC mitigation action" set to "Replace from with list address" and "DMARC Mitigate unconditionally" set to no. Which means " The action to apply to messages From: a domain publishing a DMARC policy of reject or quarantine or to all messages if DMARC Mitigate unconditionally is True."
However, redhat.com does have a policy of quarantine, so it should have mitigated it, but it didn't.
AH. It has a quarantine policy externally... but internally it does not. ;(
I'm not sure how best to work around this. We could enable "Mitigate unconditionally" but it could break filters/I would not want to do it without notice.
Or perhaps there's some way to override just this one domain.
I found
gitlab.com/mailman/mailman/-@a3374da0bebut it's in the next version up from the one we have. ;(We need to get that updated.
I see that 3.3.9 is already packaged for rawhide, F43 and F42, so we just need to update epel9 version.
3.3.9 builds fine, I updated staging with it... but actually we need a newer postorious for this... and that doesn't build, it has some new dependencies. ;(
Also, staging mailman seems to be ooming all the time again. ;(
It looks like this is now happening more frequently? At least a handful of emails from @redhat.com addresses now land in my Spam folder every day.
Do you know which version of postorius we need?
Yeah, 1.3.9
"The Mailing list's dmarc_addresses attribute can now be viewed/set in Postorius. (Closes #585)"
https://gitlab.com/mailman/postorius/-/merge_requests/825 is the mr... perhaps it might be possible to just backport that?
This is waiting for postorius new release or need somebody to backport the patch directly.
@salimma Did you have time to build the new version for EPEL9? I see that there is still
postorius-1.3.8-9.el9.noarchon mailman01 machine.ok. Tired of this existing I carved out time to poke at it.
I was able to backport the patch to the existing postorius. It needs also the newer mailman3 which I built a while ago.
I deployed in staging and testing and it seemed to accept it ok.
So, I rolled it out to prod and set:
^.*@redhat.com
on devel, users and devel-announce.
So, please take a look at emails from redhat.com addresses after this update to see if it's doing the right thing.
ok, I see this doing the correct thing (always using mitigations for redhat.com addresses).
I think this is solved. Please re-open if you still see an issue...
After your comment on July 22, I deleted my custom Sieve rule that I had been using to prevent all devel@ mail from going to spam. Everything was fine until yesterday, when 3 mails landed in my Spam folder again. I'm using Fastmail.
I've attached one of the three affected mails, "Fedora 45 Rawhide 20260731.n.0 nightly compose nominated for testing," but here are some interesting headers:
Looks like
ME_VADESPAM_MED_NBandSH_HBL_EMAILSare the problem, but these seem to be custom to Fastmail and I have no clue what they might mean.It's probably not related to the DNS issue?
SP_HBL => "SpamHaus HashBlockList" checks with hashes for known spam content i.e. crypto wallet ids etc. Due to the nature of a hash, you will habe collisions, if the hash algo is producing too small hashes.
No idea it's a good idea to use such a blocklist.
Aha, so I see this is being set by SpamAssassin (on the Fastmail server). Interesting.
I've created #13489 to follow up, since this is a separate issue. It seems every mail from Fedora devel@ list matches the SpamHaus blocklist.