Ticket #297 (fixed enhancement)
Forum e-mails get rated as spam by SpamAssassin
- Created: 2011-02-19 08:13:44
- Reported by: Christian
- Assigned to: Reines
- Milestone: 1.4.5
- Component: email
- Priority: normal
I've encountered problems receiving FluxBB's e-mails on several GMX accounts.
Looking at the e-mail's source showed that GMX uses SpamAssassin to detect spam and in particular the rule "FROM_EXCESS_BASE64" seemed to be responsible for a 5+ spam rating.
http://wiki.apache.org/spamassassin/Rul … ESS_BASE64
The rule fires when you base64 encode parts of the e-mail header even when there is no reason to do so.
FluxBB encodes "from", "subject" and "receiver", independent of their character encoding: https://github.com/fluxbb/fluxbb/blob/m … il.php#L65
There are two solutions to this:
1. Only base64encode when there are UTF8 chars
2. Q-Encode this strings
Because PHP doesn't provide a function to q-encode strings, I decided to go for the first solution:
//
// Only encode with base64, if there is at least one unicode character in the string
//
function encode_mail_text($str)
{
if (preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches))
$str = "=?UTF-8?B?".base64_encode($str)."?=";
return $str;
}
Then replace line 65 and 66 in email.php:
$from = encode_mail_text($from_name).' <'.$from_email.'>';
$subject = encode_mail_text($subject);
and line 73:
$reply_to = encode_mail_text($reply_to_name).' <'.$reply_to_email.'>';
This code is tested and works quite well, but my eclipse-git client won't let me commit this piece of code.
So please review and commit.