Я настроил сервер Ubuntu для размещения Magento CE, который отлично работает, кроме отправки электронных писем.
Электронные письма отправляются, но подхватываются нашим внутренним спам-фильтром (на почтовом сервере Win2k Exchange с запущенным Exclaimer), прежде чем попасть во внешний мир.
Я создал тестовую веб-страницу и вижу, что это не только Magento, это любая почта, которая отправляется с помощью php mail().
Я использую постфикс для ретрансляции на наш почтовый сервер.
Если я отправлю тестовое электронное письмо с помощью telnet localhost 25, то мои электронные письма будут отправлены нормально с правильными заголовками, только если они будут отправлены с помощью PHP mail(), электронные письма не будут иметь правильных заголовков, как было получено восклицательным знаком:
Received-SPF: pass (Exclaimer Mail Utilities: "this" network is always allowed.) client-ip=0.0.0.0; [email protected]; helo=;
X-ExAntiSpamFlags: LOCAL_IP IP_NO_PTR HELO_NOT_FQDN IP_PTR_NOT_FQDN SMTP_FROM_NOT_EQUAL_822_FROM SPF_PASS RECIPIENT_NOT_IN_AD
X-SPF-Result: 3
Я просмотрел этот вопрос и ответ (php mail() отправляется в спам, но при отправке через SMTP-сервер работает нормально?) однако в этом сценарии используется VPS, которым я не являюсь.
Я вижу, что в «спамовом» сообщении для helo ничего не установлено, но я не знаю, где я должен установить helo для PHP mail().
Я попытался добавить заголовки в свой php следующим образом:
<?php
$headers .="Reply-To: OUR Sales <[email protected]>\r\n";
$headers .="Return-Path: OUR Sales <[email protected]>\r\n";
$headers .="From: OUR Sales <[email protected]>\r\n";
$headers .="client-ip: 192.XXX.XXX.XXX\r\n";
$headers .="helo: UBUNTUSVR.MYCOMPANY.co.uk\r\n";
$headers .="hostname: UBUNTUSVR.MYCOMPANY.co.uk\r\n";
$headers .="Organization: Boxes from OURDirect\r\n";
$headers .="MIME-Version: 1.0\r\n";
$headers .="Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .="X-priority: 3\r\n";
$headers .="X-Mailer: PHP". phpversion() ."\r\n";
echo mail("[email protected]","my subject","my message",$headers)
?>
Это не помогло!
Я думаю, я мог бы настроить Exclaimer так, чтобы он разрешал электронные письма из ящика Ubuntu, однако я подозреваю, что в конечном итоге они просто попадут в чей-то фильтр спама, и я бы предпочел правильно отправлять электронные письма.
Где мне внести изменения, чтобы PHP mail() отправлял электронное письмо с правильными настройками helo и client-ip, учитывая, что моя машина имеет правильное полное доменное имя и не имеет проблем с почтой telnet SMTP?
mail()
. Избавьтесь от всех проблем и используйте PHPMailer или SwiftMailer — они намного лучше. - person Amal Murali   schedule 12.06.2014ehlo
вместоhelo
и дайте вашему серверу Ubuntu полное доменное имя вместоlocalhost
- person Daniel W.   schedule 12.06.2014