On Mon, 2 Oct 2017, David Jones wrote:

On 10/02/2017 01:11 PM, John Hardin wrote:
 On Mon, 2 Oct 2017, David Jones wrote:

>  On 09/27/2017 09:52 AM, Kevin A. McGrail wrote:
> > > > >   I recently stumbled onto a mail with a Spam link where the FROM > > header >   field looked like this: > > > >   From: "Firstname Lastname@" <recipient-domain.com > > > sendern...@real-senders-domain.com> > > > >  Jakob, just wanted to let you know I identified this issue as well > > and
> >   just opened a ticket about it yesterday to try and figure out a rule
> >   against it.  Can you send me spamples via pastebin, please?
> > > > > >  Regards,
> >   KAM
> > > > I am seeing this more and more on my SA filters and being reported by my > customers: > > https://pastebin.com/f07Gq1kZ > > https://pastebin.com/FMsJNGba > > This is catching this pretty well so far: > > header          FROM_SPOOF_EMAIL_DISPLAY    From =~ > /\@[a-z_]+?\.[a-z]{2,3} \</i > describe        FROM_SPOOF_EMAIL_DISPLAY    From trying to spoof an > email address in the display name

 You probably want to let SA do the header parsing and write your rule
 against From:name or From:addr instead.


Thank you for the suggestions. I didn't know about the From:name and From:addr parsing by SA. As it turns out, the double quotes missing are very important. When I use the From:name which properly has the quotes, I am hitting many false positives. It appears that legit sending people or mail clients are putting email addresses in their "Display Name". It's the ones without quotes that are spam a high percentage of the time in my mail flow.

Not surprising.

I have gone back to my original rule that catches senders that put an email addresss in the Display Name and do not have quotes.

How about:

header  __FROM_QUOTES           From =~ /"/
header  __FROM_MAYBE_SPOOF      From:name =~ /\w@\w/
meta    __FROM_SPOOF            __FROM_MAYBE_SPOOF && !__FROM_QUOTES

(warning: totally untested)

 If you're testing your rules in a sandbox using debug mode, this may help:

    header   __FROM_NAME  From:name =~ /.*/
    header   __FROM_ADDR  From:addr =~ /.*/

 That way you can see what's actually being parsed from the header.


 Potentially this might be as simple as:

    header  __FROM_MAYBE_SPOOF      From:name =~ /\w@\w/

 or

    header  __FROM_MULTIPLE_ADDR    From:addr =~ /\s/

 No idea how FP-prone those might be, though, so it's probably prudent to
 meta them with other stuff as well...

--
 John Hardin KA7OHZ                    http://www.impsec.org/~jhardin/
 jhar...@impsec.org    FALaholic #11174     pgpk -a jhar...@impsec.org
 key: 0xB8732E79 -- 2D8C 34F4 6411 F507 136C  AF76 D822 E6E6 B873 2E79
-----------------------------------------------------------------------
  The world has enough Mouse Clicking System Engineers.
                                                       -- Dave Pooser
-----------------------------------------------------------------------
 186 days since the first commercial re-flight of an orbital booster (SpaceX)

Reply via email to