Debian can';不要从PHP发送邮件

Debian can';不要从PHP发送邮件,php,debian,phpmailer,Php,Debian,Phpmailer,邮件程序错误:无法执行:/usr/sbin/sendmail 我使用的是debian服务器,文件权限是777(全部为ALOWD),所以我无法执行它为什么 //Create a new PHPMailer instance $mail = new PHPMailer(); // Set PHPMailer to use the sendmail transport $mail->isSendmail(); //Set who the message is to be sent from $m

邮件程序错误:无法执行:/usr/sbin/sendmail

我使用的是debian服务器,文件权限是777(全部为ALOWD),所以我无法执行它为什么

//Create a new PHPMailer instance
$mail = new PHPMailer();
// Set PHPMailer to use the sendmail transport
$mail->isSendmail();
//Set who the message is to be sent from
$mail->setFrom('admin@test.com', 'test');
//Set an alternative reply-to address
//$mail->addReplyTo('replyto@example.com', 'First Last');
//Set who the message is to be sent to
$mail->addAddress($_POST['email'], $_POST['name']);
//Set the subject line
$mail->Subject = 'PHPMailer sendmail test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML("from test");
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.gif');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

在Ubuntu中,默认情况下不安装sendmail。您必须手动安装它:

sudo apt-get install sendmail-bin
编辑1: 如果您使用的是PHPMailer,您可以使用以下方法设置
Sendmail
路径:

$mail->Sendmail     = '/usr/sbin/sendmail';
很容易测试问题是否存在于PHP代码或邮件服务器配置中,甚至可能存在于防火墙中。尝试从命令行运行,查看是否收到电子邮件:

/usr/sbin/sendmail -v my@address.com < email.test

阅读有关在Ubuntu上配置
sendmail
的更多信息:

在Ubuntu中
默认情况下不安装sendmail
。您必须手动安装它:

sudo apt-get install sendmail-bin
编辑1: 如果您使用的是PHPMailer,您可以使用以下方法设置
Sendmail
路径:

$mail->Sendmail     = '/usr/sbin/sendmail';
很容易测试问题是否存在于PHP代码或邮件服务器配置中,甚至可能存在于防火墙中。尝试从命令行运行,查看是否收到电子邮件:

/usr/sbin/sendmail -v my@address.com < email.test

阅读有关在Ubuntu上配置
sendmail
的更多信息:

当前的问题似乎是您的系统上没有安装
/usr/sbin/sendmail
。有多个MTA提供此功能,因此无需特别安装Sendmail套件;事实上,我会反对它,支持Postfix或一些真正简单的MTA,比如
smtpd
提供的任何包:sendmail
都可以


需要指出的另一个问题是
chmod 777
权限。您绝对不应该使生产系统上的任何内容都是可写的。PHP脚本的正确权限是
755
,如果您可以信任该组,则可能是
775
httpd
进程当然不需要能够写入脚本——事实上,绝对不应该允许向脚本文件写入任何内容。

当前的问题似乎是您的系统上没有安装
/usr/sbin/sendmail
。有多个MTA提供此功能,因此无需特别安装Sendmail套件;事实上,我会反对它,支持Postfix或一些真正简单的MTA,比如
smtpd
提供的任何包:sendmail
都可以



需要指出的另一个问题是
chmod 777
权限。您绝对不应该使生产系统上的任何内容都是可写的。PHP脚本的正确权限是
755
,如果您可以信任该组,则可能是
775
httpd
进程当然不需要能够写入脚本——事实上,绝对不应该允许向脚本文件写入任何内容。

Dis不是权限问题,因为您不会遇到权限被拒绝的错误任何模式777都是严重的安全问题。您应该恢复到系统的早期备份,或者从头重新安装。@tripleee
sendmail
默认为777,请放心!没有人从头开始重新安装系统,仅仅因为你
chmod
一个文件?你是认真的吗?如果一个二进制系统是世界可写的,你就不知道你是否已经在写了。符号链接显示为lrwxrwx,但系统上的每个用户都不能写入实际目标。@tripleee无论你说什么,都与我的答案无关。事实是,它是可写的。我的建议是让它默认,不要让它成为我想象中的错误方式。为什么它是
777
还不清楚(至少对我来说,755已经足够了)。我可以理解,如果它只是一个符号链接,但它看起来(从包中看),例如
sendmail-bin_8.14.4-2.1ubuntu4_amd64.deb
二进制文件也被命名为
777
。无论如何,谢谢你的指点!Dis不是权限问题,因为您不会收到权限被拒绝的错误任何模式777都是严重的安全问题。您应该恢复到系统的早期备份,或者从头重新安装。@tripleee
sendmail
默认为777,请放心!没有人从头开始重新安装系统,仅仅因为你
chmod
一个文件?你是认真的吗?如果一个二进制系统是世界可写的,你就不知道你是否已经在写了。符号链接显示为lrwxrwx,但系统上的每个用户都不能写入实际目标。@tripleee无论你说什么,都与我的答案无关。事实是,它是可写的。我的建议是让它默认,不要让它成为我想象中的错误方式。为什么它是
777
还不清楚(至少对我来说,755已经足够了)。我可以理解,如果它只是一个符号链接,但它看起来(从包中看),例如
sendmail-bin_8.14.4-2.1ubuntu4_amd64.deb
二进制文件也被命名为
777
。无论如何,谢谢你的指点!我已经安装了sudo apt get install sendmail bin,但是仍然得到相同的错误,所有的属性都是777允许的,我使用的是PHPMailer,我也用mail()函数尝试过,都给出了相同的错误你使用的是PHPMailer吗?-1你不能
chmod 777
任何东西。对于生产系统中的任何东西,这些都不是“适当的”权限。@tripleee供您参考,我的朋友,我知道,而且默认情况下,
sendmail
777
!(应该是)。不要相信我的话,继续运行
ls-lsa/usr/sbin/sendmail
,作为回报,您将看到
lrwxrwx。
@tripleee,我已经更新了我的答案。我个人不认为它应该是777,因为它是开销,但这是它的方式。如果您没有安装它,只需从中加载一个包并自己解决。我已经安装了sudo apt get install sendmail bin,但仍然得到相同的错误,所有属性都允许使用777,我使用的是PHPMailer,我也用m尝试过