Назад | Перейти на главную страницу

Заголовки php mail () не работают должным образом с Postfix

Я запускаю Ubuntu 10.04 и установил стек LAMP с «вспомогательным» Postfix (используемым в качестве ретранслятора для smtp моего провайдера).

В php.ini я оставил передачу sendmail по умолчанию, поэтому с -t -i аргументы:

;sendmail_path =

Я отправляю такие электронные письма:

$headers  = 'From: info@mydomain.com' . "\r\n";
$headers .= 'Reply-To: info@mydomain.com' . "\r\n";
$headers .= 'Return-Path: info@mydomain.com';

mail('recipient@mydomain.com', 'Email title', 'Text of the body.', $headers);

В теле полученных писем есть следующее (оно должно быть в заголовке):

Reply-To: info@mydomain.com 
Message-Id: <20111027210218.6F32440DE7@mydomain.com>
Date: Thu, 27 Oct 2011 23:02:18 +0200 (CEST)

Как мы можем это исправить?

Примечание: Электронная почта работает правильно при других установках: Gentoo с qmail или Windows с smtp, установленным на мой isp в php.ini.

Вот полный заголовок:

Return-Path: <www-data@mydomain.com>
Delivered-To: info@mydomain.com
Received: (qmail 28922 invoked from network); 27 Oct 2011 23:00:55 +0200
Received: from zhhdzmsp-mail12.myisp.com (1.2.3.5)
  by www.mydomain.com with SMTP; 27 Oct 2011 23:00:55 +0200
Return-Path: <www-data@mydomain.com>
X-FXIT-IP: IPv4[1.2.3.4] Epoch[1319888334]
Received: from [1.2.3.4] ([1.2.3.4:17957] helo=dev.mydomain.com)
    by zhhdzmsp-mail12.myisp.com (envelope-from <www-data@mydomain.com>)
    (ecelerity 2.2.3.46 r()) with ESMTP
    id 6E/C0-28209-6D6C9AE4; Thu, 27 Oct 2011 21:02:14 +0000
Received: by dev.mydomain.com (Postfix, from userid 33)
    id 6F32440DE7; Thu, 27 Oct 2011 23:02:18 +0200 (CEST)
To: info@mydomain.com
Subject: Email Title
X-PHP-Originating-Script: 1000:helpdesk.php
From: toto@gmail.com

Postfix переводит «перевод строки» (\ n) в «перевод строки с возвратом каретки» (\ r \ n). Попробуйте удалить \ r и использовать только \ n.

Ваши утверждения и заголовок не совпадают. Вероятно, это просто ошибка копирования и вставки, но это плохая отправная точка для диагностики.

Затем у вас есть две строки Return-Path в заголовке и одна в теле. ЭТО странно и указывает на более серьезную проблему.

Общая проблема заключается в том, что вы пытаетесь определить проблему с заголовком письма, прошедшего через четыре (!) Почтовых сервера. Затем вы обвиняете одного из них как виновника. Но это может быть любой из них. Или, что наиболее очевидно, ни один из пяти почтовых серверов в целом не изменяет заголовки или тела, за исключением того, что они указаны или требуются RFC 5321. Поэтому, если вы хотите проанализировать проблему, вы должны посмотреть, как почта приходит в первую сервер, а не на следующих серверах.