PHP mail() not RFC compliant (Yahoo)

Status
Not open for further replies.

evilmoe2

Not needed
License owner
Hello Rudolfo,

My server sent a email but rejected by yahoo:
"Diagnostic-Code: smtp; 554 Message not allowed - Headers are not RFC compliant[291]".
 

Rodolfo

Chevereto creator
Chevereto Staff
Which version are you using? Chevereto uses PHPMailer to do the email thing and I remember that I updated phpmailer lib several versions ago.
 

evilmoe2

Not needed
License owner
i'm using 3.5.19

EDIT: I just replaced app/lib again. Maybe I missed that in the last update.
 

evilmoe2

Not needed
License owner
Unfortunately no, I have created a new account with a yahoo email, still get the resond from yahoo.
 

Rodolfo

Chevereto creator
Chevereto Staff
By the way, the phpmailer stuff is in the app/vendor folder. Make sure to have that updated.
 

evilmoe2

Not needed
License owner
Same issue with the contact email.


EDIT: I have updated /app/vendor but still get the error.
postfix/smtp[13892]: 557792070C: to=<xxxxxxxxxxxxxxx@yahoo.de>, relay=mx-eu.mail.am0.yahoodns.net[188.125.69.79]:25, delay=0.93, delays=0.4/0/0.12/0.41, dsn=5.0.0, status=bounced (host mx-eu.mail.am0.yahoodns.net[188.125.69.79] said: 554 Message not allowed - Headers are not RFC compliant[291] (in reply to end of DATA command))
 
Last edited:

Rodolfo

Chevereto creator
Chevereto Staff
I've PHPMail in chevereto.com so I tested it there and send emails to yahoo worked. Pretty much the functions are exactly the same:

Chevereto contact form email function:
PHP:
$mail = new Mailer();  
$mail->CharSet = 'UTF-8';
$mail->Mailer = CHV\getSettings()['email_mode'];
if(CHV\getSettings()['email_mode'] == 'smtp') {
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = CHV\getSettings()['email_smtp_server_security'];
    $mail->Port    = CHV\getSettings()['email_smtp_server_port'];
    $mail->Host = CHV\getSettings()['email_smtp_server'];
    $mail->Username = CHV\getSettings()['email_smtp_server_username'];
    $mail->Password = CHV\getSettings()['email_smtp_server_password'];
}
$mail->Timeout = 30;

$mail->Subject = $subject;
$mail->Body = $body;

$mail->addAddress($to);
$mail->addReplyTo($email);
$mail->setFrom(CHV\getSettings()['email_from_email'], $name . ' (contact form)');

Chevereto.com mail function:
PHP:
$mail = new phpmailer();  
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = CHV\get_settings()['mail']['server'];
$mail->Username = CHV\get_settings()['mail']['user'];
$mail->Password = CHV\get_settings()['mail']['pass'];
$mail->Timeout = 30;

$mail->Subject = $subject;
$mail->Body = $mailbody;

$mail->addAddress($to);
$mail->addReplyTo($email);
$mail->setFrom('no-reply@chevereto.com', 'Chevereto contact form');

So if you are 100% sure that you are using updated code (Chevereto and PHPMailer) my only guess is that your server phpmail settings are wrong for Yahoo. I've always say that everybody should prefer SMTP over PHPMail and that is because SMTP is easier to make it work. Anyway, I tested with SMTP and with PHPMail and both worked, so this is more likely related to how your configure the php mail function.

Also I'm debugging phpmail() in the demo and I've been able to trigger the yahoo issue but in the demo I never configured phpmail with dkim and stuff like that. I will try to see if I can get something.
 
Last edited:

Rodolfo

Chevereto creator
Chevereto Staff
Here I got a properly full error message:
Code:
   ----- The following addresses had permanent fatal errors -----
    (reason: 554 Message not allowed - Headers are not RFC compliant[291])

   ----- Transcript of session follows -----
... while talking to mta5.am0.yahoodns.net.:

            DATA

<<< 554 Message not allowed - Headers are not RFC compliant[291]
554 5.0.0 Service unavailable

Reporting-MTA: dns; demo.chevereto.com
Received-From-MTA: DNS; localhost
Arrival-Date: Mon, 23 Feb 2015 13:23:15 -0500

Final-Recipient: RFC822;
Action: failed
Status: 5.0.0
Remote-MTA: DNS; mta5.am0.yahoodns.net
Diagnostic-Code: SMTP; 554 Message not allowed - Headers are not RFC compliant[291]
Last-Attempt-Date: Mon, 23 Feb 2015 13:23:17 -0500

Return-Path: <no-reply@chevereto.com>
Received: from demo.chevereto.com (localhost [127.0.0.1])
    by demo.chevereto.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id t1NINFDH024249
    for ; Mon, 23 Feb 2015 13:23:15 -0500
Received: (from www-data@localhost)
    by demo.chevereto.com (8.14.4/8.14.4/Submit) id t1NINFea024248;
    Mon, 23 Feb 2015 13:23:15 -0500
X-Authentication-Warning: demo.chevereto.com: www-data set sender to no-reply@chevereto.com using -f
To: 
Subject: Chevereto demo contact form
X-PHP-Originating-Script: 33:class.phpmailer.php
Date: Mon, 23 Feb 2015 15:23:15 -0300
To: 
From: "Rodolfo Berrios (contact form)" <no-reply@chevereto.com>
Reply-To: inbox@rodolfoberrios.com
Subject: Chevereto demo contact form
Message-ID: <69e34b5ec9ddbd9463688108707edd87@demo.chevereto.com>
X-Priority: 3
X-Mailer: PHPMailer 5.2.9 (https://github.com/PHPMailer/PHPMailer/)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

I will say that the missing signatures and the SPF record is causing issues. To test this you can go to this website: http://www.mail-tester.com/ and use that email as the inbox email address in your Chevereto email settings, go to the contact form and send an email (that it will be delivered to that thing). It will tell you what is wrong and how you can fix it, in my case the demo scored 0.1/10 using PHPMail because I didn't configure it at all. PHPMail in Chevereto.com gets a 6.9/10 score (which is also bad but at least yahoo doesn't bounce it).

Using SMTP I get 9/10 in Chevereto.com and 10/10 in demo.chevereto.com which is abysmal vs 6.9/10 and 0.1/10
 
Last edited:
Status
Not open for further replies.
Top