Here is the JIRA: https://issues.apache.org/jira/projects/JAMES/issues/JAMES

You are free to create an account on it.

Cheers,

Benoit

On 08/10/2019 13:16, Jerry Malcolm wrote:
> I will do that.  But I need a bit of direction first.  I know what
> JIRA does.  But what do I need to do in order to get a JIRA account
> set up?  And is there a home page for JAMES JIRA?
>
> On 10/7/2019 9:34 PM, Tellier Benoit wrote:
>> Sounds like a great proposal!
>>
>> Don't you mind opening a JIRA ticket about this?
>>
>> Best regards,
>>
>> Benoit
>>
>> On 08/10/2019 01:53, Jerry Malcolm wrote:
>>> As a bit of background for this proposal, I personally have no problem
>>> trading a small overhead of some additional headers in a delivered
>>> email if I can see the serviceability info I need directly in the
>>> email in 2 seconds vs scanning/filtering through massive logs
>>> (assuming the logs were even set to 'debug' level when the mail came
>>> through).  I realize that other admins may or may not be willing to
>>> make this tradeoff.  So the new function in this proposal is
>>> completely optional to the admin.  Not enabling it will result in no
>>> changes for the user.
>>>
>>> Problem: SpamAssassin is an incredible tool for controlling spam.  But
>>> the current version of the mailet hands an email to SA where it runs a
>>> billion rules and comes back with "yup it's spam" or "nope it's
>>> clean".   That's perfectly acceptable for every single email received
>>> where we agree with the SA result.  The problem comes in when a client
>>> complains about false positives or false negatives.  Currently, the
>>> only possible response we can give the client is "because SpamAssassin
>>> said so" with no analysis data.  When SA needs tuning, I need a
>>> fighting chance at seeing how the (possibly incorrect) score was
>>> derived so I can make adjustments to the SA rules as needed.
>>>
>>> Solution Proposal Background: The current implementation of the
>>> SpamAssassin mailet and SpamAssassinInvoker hardcodes the command to
>>> spamd as "CHECK" which returns yes or no with a bit of threshold
>>> info.  Another valid command option to spamd is "REPORT".  It gives
>>> back the same info as "CHECK".  But it also returns analysis data.
>>> Example:
>>>
>>> SPAMD/1.1 0 EX_OK
>>> Spam: False ; 3.9 / 5.0
>>>
>>> Spam detection software, running on the system "p5353013",
>>> has NOT identified this incoming email as spam.  The original
>>> message has been attached to this so you can view it or label
>>> similar future email.  If you have any questions, see
>>> webmas...@jwmhosting.com for details.
>>>
>>> Content preview:  ======================================== View on
>>> Facebook
>>>    https://www.facebook.com/nd/?Fox32Chic...
>>>     [...]
>>>
>>> Content analysis details:   (3.9 points, 5.0 required)
>>>
>>>   pts rule name              description
>>> ---- ----------------------
>>> --------------------------------------------------
>>> -2.5 RCVD_IN_HOSTKARMA_W    RBL: Sender listed in HOSTKARMA-WHITE
>>>                        [69.171.232.132 listed in
>>> hostkarma.junkemailfilter.com]
>>> -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
>>>                              [69.171.232.132 listed in
>>> wl.mailspike.net]
>>> -0.1 RCVD_IN_DNSWL_NONE     RBL: Sender listed at
>>> https://www.dnswl.org/,
>>>                               no trust
>>>                              [69.171.232.132 listed in list.dnswl.org]
>>>   1.0 CK_HELO_DYNAMIC_SPLIT_IP Relay HELO'd using suspicious hostname
>>>                              (Split IP)
>>>   0.0 TVD_RCVD_IP            Message was received from an IP address
>>> -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
>>>   0.0 HTML_FONT_LOW_CONTRAST BODY: HTML font color similar or
>>>                              identical to background
>>>   0.0 HTML_MESSAGE           BODY: HTML included in message
>>>   1.1 KAM_REALLYHUGEIMGSRC   RAW: Spam with image tags with
>>> ridiculously
>>>                               huge http urls
>>>   0.5 JAM_SMALL_FONT_SIZE    RAW: Body of mail contains parts with very
>>>                              small font
>>>   3.9 HELO_DYNAMIC_IPADDR2   Relay HELO'd using suspicious hostname (IP
>>>                              addr 2)
>>>   0.0 UNPARSEABLE_RELAY      Informational: message has unparseable
>>> relay
>>>                              lines
>>>
>>> Solution Proposal:
>>>
>>> a) Add a new SpamAssassin mailet parameter (in addition to spamdPort,
>>> spamdHost) in mailetContainer.xml named "spamdCommand".  Absence of
>>> this parameter will default to the current "CHECK" command.  The two
>>> valid options are CHECK and REPORT.
>>>
>>> b) Pass the specified spamdCommand (or default) to spamd in Invoker.
>>>
>>> c) If spamdCommand is REPORT, add the report data as headers to the
>>> email using the following procedure:  parse full response into a
>>> TreeMap using "X-SpamAssassin_nnn" as keys.  nnn is an incrementing
>>> number in case the headers get jumbled and/or alphabetized downstream.
>>>
>>> d) The input stream from SA must be reset after REPORT processing.  So
>>> add mark()/reset() to BufferedReader to rewind the reader so existing
>>> downstream processing is not affected.  A limit (currently 2500
>>> characters) must be set on mark(..).  Check to ensure that limit is
>>> not exceeded during REPORT processing.  If it gets close to the limit,
>>> stop and add a "more..." header and exit.
>>>
>>> e) Pass the reportData TreeMap to SpamAssassinResult on both empty(..)
>>> and build(..) methods.  SpamAssassinResult will walk the TreeMap data
>>> and add to HeadersPerRecipient in the same way existing processing
>>> adds the Spam flags.  SpamAssassinResult will also log the TreeMap
>>> header data.  Why on 'empty()'?  empty() is called if the parser can't
>>> find a specific key in the string. There still may be some kind of
>>> error output even if the key is missing that could be very useful in
>>> determining why the expected key wasn't returned.  So I recommend we
>>> dump what we got back from SA no matter what.
>>>
>>> f) The final step is to process the HeadersPerRecipient data into real
>>> headers.  It turns out this function is missing downstream and a
>>> defect report has been opened by Tellier.  So when the code is
>>> available that processes HeadersPerRecipients into actual headers is
>>> available, no additional work is required.
>>>
>>> g) Currently if REPORT, the reportData automatically goes both to the
>>> log and to headers.  Not currently in my implementation, but we could
>>> add one more mailet parm "reportAsHeaders= true/false" so they could
>>> still get the report in the logs but not as headers.
>>>
>>> Summary: Admin can change the mailet parameter command to REPORT.
>>> When a user reports false positive or false negative on an email.
>>> Open the email in Thunderbird, hit Ctrl-U to view raw source/headers,
>>> and immediately see the scoring details from SpamAssassin. Obviously
>>> the next step for the admin would be to do something in SA to alter
>>> the scoring.  But that's beyond the scope of this proposal.
>>>
>>> I currently have this function coded and tested (currently with a hack
>>> to get around the bug in (f) above. I have had an old implementation
>>> running in v3b5 for several years.  I can give personal testimony to
>>> the hours it has saved me.
>>>
>>> Comments/Suggestions welcome
>>>
>>> Jerry
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to