On 4/15/2014 9:52 AM, David F. Skoll wrote:
On Tue, 15 Apr 2014 09:35:19 -0400
"Kevin A. McGrail" <[email protected]> wrote:

- All the various recipients that acknowledge p=reject reject the
mail as forged
That's the part I don't understand.  Mail from my list will not have
a yahoo.com envelope sender.  And if I remove the DKIM header, what basis
could third parties possibly have for considering the email to be forged?
Ignoring the why, I can tell you we have had issues with emails from Yahoo! users on the mailing list causing bounces back from yahoo.com, email.msn.com, msn.com, hotmail.com, sbcglobal.net, live.com, att.net, pacbell.net, comcast.net and likely more.
Anyway, for now, I'm simply going to ban yahoo.com users from posting
to our mailing lists until I sort this out.
Makes sense to me.

For those who care, attached is my latest version of the code in MD that I used to rewrite Yahoo! emails to mailing lists for MIMEDefang in filter_end.

We use it to identify mailing lists, exempt administrivia messages and modify messages from yahoo! users to a generic do-not-reply address which we then manually moderate. It also notifies the Yahoo! sender and recommends the use a different email company (Gmail in our case), etc.

regards,
KAM

# Patch to rewrite Yahoo! emails to mailing lists for MIMEDefang in filter_end

    #YAHOO DMARC RESOLUTION
    foreach $recip (@Recipients) {
      # BLOCK IF FROM YAHOO BECAUSE THEY SET DMARC TOO STRICTLY
      # 
http://www.pcworld.com/article/2141120/yahoo-email-antispoofing-policy-breaks-mailing-lists.html
      
      # If Sender is Yahoo and recipient is a mailing list - NOTE Only 
Yahoo.com rejects as of 4/14 so not hitting 
|rocketmail\.com|ymail\.com|yahoo\.com\.au|yahoo\.ca|yahoo\.co\.uk
      # exclude the admnistrivia addresses like admin confirm, join, leave, etc.
      if ($Sender =~ /\@yahoo\.com>?$/i 

          and

         ($recip =~ m/\@mailman\./i or 

                #... more logic for identifying your mailing lists goes in the 
section ...

          and

         ($recip !~ 
/\-(admin|bounces|confirm|join|leave|owner|request|subscribe|unsubscribe)\@/i)

         ) {
        my ($container, $parser, $original, $report2, $yahoo_reject_notice, 
$sender);
    
        # NOTIFY SENDER AND REWRITE THE SENDER TO A DO-NOT-REPLY ADDRESS
        md_syslog('warning', "Modifying Yahoo! message to mailing list due to 
DMARC - $recip - $Sender - $Subject");
        $yahoo_reject_notice = "Your email to $recip was modified due to a 
change Yahoo! implemented which causes your email on mailing lists to be 
flagged incorrectly as a forgery.  

In order to permit your email through to the mailing list, we have rewritten 
the From address to a do-not-reply address.  Depending on the list 
configuration, you may not receive replies and will need to monitor the list.  
Additionally, this may delay your email as it will require manual intervention 
by the list moderator to approve.

We apologize for the inconvenience but the cause of the issue rests squarely 
and solely on Yahoo!  We recommend you consider a free Google account available 
at http://www.gmail.com/.  For more technical information, please see: 
http://www.pcworld.com/article/2141120/yahoo-email-antispoofing-policy-breaks-mailing-lists.html
             
    
Sincerely,
    
Kevin A. McGrail
President, PCCC";


        # SAVE NOTIFY SETTINGS
        my ($save_NotifyNoPreamble, $save_NotifySenderSubject, 
$save_DaemonAddress);
        $save_NotifySenderSubject = $NotifySenderSubject;
        $save_NotifySenderSubject = $NotifySenderSubject;
        $save_DaemonAddress = $DaemonAddress;

        #CUSTOMIZE NOTIFICATION PARAMS
        $sender = '[email protected]';
        $DaemonAddress = '[email protected]';
        $NotifyNoPreamble = 1;
        $NotifySenderSubject = "Important Mailing List Notification 
re:[$Subject]";

        #SEND NOTIFICATION
        action_notify_sender("$yahoo_reject_notice\n");

        #TEMPORARILY REMOVE MAILING LIST
        #delete_recipient($recip); - NO LONGER NEEDED WITH REWRITE OF FROM

        #Possible Improvement is to do a DKIM/SPF/etc. check on the email 
before rewriting to minimize forgeries getting farther in the process.

        #CHANGE SENDER ON ENVELOPE
        change_sender($sender);
 
        #CHANGE SENDER ON FROM
        if (&check_header(header=>'From')) {
          action_delete_all_headers('From');
          action_delete_all_headers('Reply-To');
          action_add_header("From",'"Yahoo! Modified Email" <$sender>');
          action_add_header("Reply-To", "<$Sender>");
        }

        # RESTORE NOTIFY SETTINGS 
        $NotifySenderSubject = $save_NotifySenderSubject;
        $NotifySenderSubject = $save_NotifySenderSubject;
        $DaemonAddress = $save_DaemonAddress;
      }
    }
    #END YAHOO DEMARC


# check the HEADERS file and return any instances of a specific parameter 
header (case insensitive on header name)
sub check_header {
  my (%params) = @_;
  my ($filehandle, $preslurp, $contents, $output);

  $params{'header'} || return undef;

  $filehandle = new IO::File('< ./HEADERS') or return undef;
  
  while (<$filehandle>) {
    if ($_ =~ /^$params{'header'}:/i) {
      $output .= $_;
    }
  }

  close ($filehandle);

  return $output;

}
_______________________________________________
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID.  You may ignore it.

Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list [email protected]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to