Postfix / PHP Mail()以相同的电子邮件地址发送电子邮件,忽略标题$from


Postfix / PHP Mail() sends email as same email address, ignores header $from

我们最近升级了我们的网络服务器,我们遇到的第一个问题是发送到同一个域有问题,因为网站托管在公司的交换服务器不同的服务器上。无论如何,我确定这是一些简单的配置更改和禁用邮件服务的域。

无论如何,这是不工作,但我没有注意到的是,当我在网站上测试一些PHP邮件表单的时候,他们都被作为我的电子邮件地址发送到客户端。

这是PHP(我不认为这是一个问题)

<?php
    ini_set("sendmail_from", "noreply@******.com"); 
    $name       = $_POST['name'];
    $email      = $_POST['email'];
    $phone      = $_POST['phone'];
    $comments   = $_POST['comments'];
    $ip=$_SERVER['REMOTE_ADDR'];
    $recipient  = '*****@******.com';
    $subject    = "Comments submitted from the Contact Us form on www.wavesfm.com from $name" ;
    $message   = "This is an email submitted from the Contact Us form on the website www.*****.com containing details from $name 'n";
    $message  .= "    'n";
    $message  .= "Name: $name 'n";
    $message  .= "Email: $email 'n";
    $message  .= "Phone Number: $phone 'n";
    $message  .= "Comments: $comments 'n'n'n";
    $message  .= "IP Address: $ip ";
    $headers   = "From: noreply@********.com 'n";
    $headers  .= "Reply-To: $email";
    mail($recipient,$subject,$message,$headers);
    header( 'Location: http://www.*****.com/thanks.php' ) ; 
?>

谁能看到任何问题的代码?我已经尝试添加-fnoreply@**.com作为发送参数,但它不会改变我自己的电子邮件地址从出现作为发件人。

我不认为这是一个PHP的问题,它似乎更像是一个后缀的问题,但真正困扰我的是我的电子邮件地址,没有使用任何地方出现作为发件人。

有人有过这样的经历吗?就像2周前一样,我根本没有使用后缀,所以它对我来说很新。

Web Server: Cent OS, Plesk 11.0.9

邮件服务器:MS Exchange邮件服务器/Using ORF

邮件的后缀日志

Mar 27 13:48:41 dedicated postfix/pickup[12199]: 652EFA106C5: uid=48 from=Mar 27 13:48:41 dedicated postfix/cleanup[14376]: 652EFA106C5: message-id=<20130327134841.652EFA106C5@dedicated.mydomain.com>Mar 27 13:48:41 dedicated postfix/qmgr[12198]: 652EFA106C5: from=, size=726, nrcpt=1 (queue active)Mar 27 13:48:41 dedicated postfix/smtp[14378]: certificate verification failed for mail.mydomain.com[82.888.888.51]:25: untrusted issuer/CN=clientdomain-WAV01-CAMar 27 13:48:42 dedicated postfix/smtp[14378]: 652EFA106C5: to=, relay=mail.client_website.com[82.888.888.51]:25, delay=0.89, delayed =0.04/0.01/0.36/0.48, dsn=2.6.0, status=sent (250 2.6.0 <20130327134841.652EFA106C5@dedicated.mydomain.com> [InternalId=11846]等待发送的排队邮件)Mar 27 13:48:42 dedicated postfix/qmgr[12198]: 652EFA106C5: removed

以下代码可能存在一些字符串连接问题:

$headers = "From: noreply@********.com 'n";

$headers = "From: noreply@********.com 'r'n";

我推荐使用phpmailer类来发送电子邮件,它被广泛使用:https://github.com/Synchro/PHPMailer

php.ini sendmail_from指令实际上只适用于windows box

sendmail_from string哪个"From:"邮件地址应该在邮件中使用在Windows下从PHP发送。该指令还设置网络:"头。

我不认为这是代码问题。哪个用户在你的Linux机器上运行webserver+php环境?如果你以自己的身份运行它,那么它可能会使用你的电子邮件地址提交后缀。

如果你使用后缀,不要忘记跟踪/var/log/maillog,这可以告诉你很多,并帮助你找到问题的根源。

sudo tail -f /var/log/maillog

你可以尝试注册一个免费帐户Sendgrid和PHPMailer, Zend Mailer或Symfony Mailer库使用它来发送电子邮件,看看你是否得到同样的问题