5

It seems mailman, by default, spoofs its outgoing message with the "from" address of the person who posted the message. The envelope mail-from is not spoofed, but rather the P2 FROM. Is this configurable to d a send-on-behalf or simply change to some other static address?

Ode
  • 121

2 Answers2

6

A bit old question, but here some suggestion solution.

I will try to explain how the default mailman behavior.

Email from member1@example.com was sent to lists@example.net (a mailman list). Both envelope sender and lists-bounces@example.net have value "member@example.com".

As mailman receive it, it rewrites envelope sender to lists-bounces@example.net. Now mailman forward it to other members with envelope sender: lists-bounces@example.net and From header: member@example.com.

The problem is, as April 2014 the Big Email Provider Yahoo activates DMARC in their domains. As the result, if DMARC-aware mail server spot the Yahoo address in From header but it wasn't sent from Yahoo server, the server will reject it.


Mailman developer adding fix in Mailman version 2.1.16. It now has option from_is_list

from_is_list

Replace the sender with the list address to conform with policies like ADSP and DMARC. It replaces the poster's address in the From: header with the list address and adds the poster to the Reply-To: header, but the anonymous_list and Reply-To: header munging settings below take priority. If setting this to Yes, it is advised to set the MTA to DKIM sign all emails. If this is set to Wrap Message, just wrap the message in an outer message From: the list with Content-Type: message/rfc822

masegaloeh
  • 18,498
0

See @masegaloeh's answer for details. Here is a way to apply that setting in bulk:

# updatelist_from_is_list.py

import sys

class UserDesc: pass

def updatelist_from_is_list(mlist): if mlist is None: return

mlist.from_is_list = 1
mlist.Save()

Above for mlist.from_is_list:

  • 0 is off
  • 1 is "munge from"
  • 2 is "wrap"

Then apply the script as follows:

cd /usr/lib/mailman/bin/
./withlist -l -r updatelist_from_is_list LISTNAME

Note that the file is named updatelist_from_is_list.py but when does not end in .py when passed to withlist.

For lots of lists:

/usr/lib/mailman/bin/list_lists -b | while read mlist; do 
    /usr/lib/mailman/bin/withlist -l -r updatelist_from_is_list $mlist
done
KJ7LNW
  • 251