Jered Floyd writes:
Reviving this thread I started in February because delivery rates continue to decline, and I get this threat from Google any time I check their Dashboard:
"One-click Unsubscribe: Needs work — Ensure one-click unsubscribe is correctly implemented for your subscription messages One-click unsubscribe allows recipients to easily unsubscribe instead of marking your messages as spam"
This is a LIE. Most Mailman lists already implement the RFC 2369 header fields, which already contain the necessary "click to unsubscribe" information. What RFC 8058 provides is a shortcut for the user that burdens the list. "Friends don't let friends use Gmail" (or Yahoo! or AOL or Hotmail or O365 or ...).
Now that I've got that off my chest ...
I'm pretty sure, as below, that we need to implement RFC 8058 headers in order to maintain deliverability to GMail.
That's easy enough. Just configure your MTA to DKIM sign that field (if Mailman is doing the signing you can configure it in mailman/config/schema.cfg), and insert before line 22 of mailman/handlers/rfc_2369.py
from base64 import base85
and change line 68 to
('List-Unsubscribe',
'<mailto:{}?{}>'.format(mlist.leave_address,
b85_encode(mlist.leave_address))),
('List-Unsubscribe-Post', 'List-Unsubscribe=One-Click'),
Actually implementing the protocol requires a lot more effort across up to a dozen files, of course. I'm not in a hurry to do that work (I'm not a Postorius or database person, I'd have to do a fair amount of study), but I'd be happy to review merge request.
You could just treat all POSTs to that URI as one-click unsubscribes (ignore the query value), which should be enough to fool Google but risks a DOS attack on your lists.
The only tracker issue I can find related to this is https://gitlab.com/mailman/mailman/-/issues/1099 -- is that the best place to discuss implementation?
Yes. Between this message, my earlier message that you quoted, and Danil Smirnov's comment in the issue you should be much of the way to implementation.
I see in your later message that you haven't enabled personalization in Mailman. If you want to avoid the computation costs etc in Mailman, you can have MTA do it more efficiently I suspect. You'll want to have the MTA DKIM sign the List-Post-Unsubscribe field as well as the List-Unsubscribe field anyway, so you'll be fiddling that config in any case. However, that's not the main cost IMO -- it's the cost of sending each message individually when you'd like to just stuff 5000 addresses into RCPT TO and send DATA once. I suspect Google will throttle you if you try to send that many messages in one connection, so you probably will need to check that and tune your MTA.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan