Ошибка Zend_Mail 500 › фатальная ошибка postfix/sendmail: опция -n не поддерживается

Я работаю над проектом Zend в очень специфической конфигурации сервера, наша производственная среда состоит из двух выделенных серверов: один для электронной почты компании, на котором размещен постфиксный сервер, а другой сервер для нашего веб-приложения, которое работает на Apache2/ Зенд.

Эти серверы имеют два разных IP-адреса, но работают на одном и том же домене веб-сайта.

Теперь, когда я пытаюсь отправить электронное письмо с электронным письмом с почтового сервера в качестве отправителя, я получаю сообщение об ошибке 500 от Zend_Mail, и журнал email.err сообщает мне:

postfix/sendmail[15782]: фатально: опция -n не поддерживается

Но когда я помещаю локальный адрес или пустое электронное письмо в качестве отправителя, это работает, поэтому я думаю, что меня выгоняет постфикс веб-сервера, потому что он не управляет локально этими электронными письмами.

Итак, мой вопрос: есть ли способ использовать адрес электронной почты домена в качестве отправителя с удаленного сервера без объединения двух серверов?

Редактировать: я забыл добавить: я не могу использовать SMTP удаленного сервера, я могу использовать только локальный sendmail.


person DoesNotCompute    schedule 02.07.2012    source источник


Ответы (1)


Я не нашел никакого решения или объяснений, поэтому в итоге я написал помощник по пользовательскому действию на основе почтовой команды PHP.

Я надеюсь, что это может помочь кому-то:

class Zend_Controller_Action_SentEmail extends Zend_Controller_Action_Helper_Abstract{

    public function sendEmail($from, array $to, $subject, $message){

        //Header set
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
        $headers .= "From: ".$from."<[email protected]>\r\n";
        $headers .= "X-Mailer: PHP/".phpversion();


        //To
        $stringTo = "";

        foreach($to as $k => $v) {
                $stringTo .= $k." <".$v.">, ";
        }

        $stringTo = trim($stringTo, ", ");


        //Send the email
        if(mail($stringTo, $subject, $message, $headers, "-f [email protected]")){
            return true;
        }
        else{
            //Oh! Noes!
            return false;
        }
    } 
}
person DoesNotCompute    schedule 27.09.2012