Уже с полгода бьюсь с такой проблемой
Нужно послать письмо от имени васи пупкина (имя юзера с формы) на адрес робота вне моего сервера.
Проблема вот в чем.
Модель 1.
Используем майл, стандартно подставляем в заголовок From: Vasiliy Pupkin 
Replay-To: Vasiliy Pupkin 
To: robot 
и далее по тексту
При этом в настройках php.ini:
[mail function]
SMTP      =   127.0.0.1      
sendmail_from   =   mail@server.com
Ясно что в заголовок попадает 2 адреса
сначла 
From: mail@server.com
а ниже
From: Vasiliy Pupkin 
И робот берет то один то второй. На робота повлиять не могу.
Модель 2.
Меняю php.ini
[mail function]
SMTP      =   127.0.0.1      
sendmail_from   =   ; закоментировал 
Тогда окей, первый фром пустой игнорируется, но!
SMTP локальный не берет письмо так как получает FROM: пусто и отлупит. Нашел один который это пропускает, но он доставку писем теряет периодически ;((( то есть пропущена не только эта проверка.....
Подход 3
Берем сокетом и ручками посылаем письмо
function open_socket($socket) {
   global $smtp_id;
   fputs($socket,"EHLO SP $smtp_id\\r
");
}
function write_current_mail($socket, $from, $header, $email, $subject, $body) {
   fputs($socket,"mail from: $from\\r
"); 
   fputs($socket,"rcpt to: $email\\r
"); 
   fputs($socket,"data\\r
"); 
   fputs($socket,"To: $email\\r
"); 
   fputs($socket,"Reply-To: $from\\r
"); 
   fputs($socket,"Subject: $subject\\r
"); 
   fputs($socket,"$header\\r
"); 
   fputs($socket,"\\r
"); 
   fputs($socket,"$body\\r
"); 
   fputs($socket,".\\r
");  
   fputs($socket, "RSET\\r
"); 
}
function close_socket($socket) {
   fputs($socket, "QUIT\\r
"); 
   while(!feof($socket)){
      fgets($socket, "1024");
   }
   fclose($socket);
}
и выполняем сл. последовательность
    $smtp_id="localhost";
    $from=$sFrom;
    $header=$Tall;
    $email=$sTo;
    $subject=$sSubj;
    $body=$sTxt;
    $socket = fsockopen($smtp_id, 25, $errno, $errstr);
    if ($socket) {
      open_socket($socket);
      write_current_mail($socket, $from, $header, $email, $subject, $body);
      close_socket($socket);
      return (true);
    } else {
      return (false);
    }
ну с сокращениями понятно.
Так вот smtp берет а когда роботу шлет то тот постоянно отлупит - вот цитата из логов.
Thread 1: 19:29:38 [--->] : 220 тут адрес верен ESMTP
Thread 1: 19:29:38 [<---] : HELO SH
Thread 1: 19:29:38 [--->] : 250 unganisha.idrc.ca
Thread 1: 19:29:38 [<---] : MAIL FROM: 
Thread 1: 19:29:38 [--->] : 250 ok
Thread 1: 19:29:38 [<---] : RCPT TO: 
Thread 1: 19:29:39 [--->] : 250 ok
Thread 1: 19:29:39 [<---] : DATA
Thread 1: 19:29:39 [--->] : 354 go ahead
Thread 1: 19:29:40 [--->] : 
Thread 1: 19:29:40 [<-->] : Error: 
при этом если письмо аналогичное посылаю почтовым клиентом на тот же адрес с того же адреса то пробелем не возникает.
Просьба ко всем гуру - 
как выйти из ситуации? Может есть готовые советы или примеры по
1. Какой SMTP поставить под NT чтобы глюков не было
2. Как отсылать письма сокетом чтобы проблем не было
Я не могу понять на каком этапе что то срывается ;((((
Спасибо всем огромное.
Тем кто поможет постараюсь в долгу не остаться. На самом деле!