#!/usr/bin/perl
use IO::Socket;
my $socket = IO::Socket::INET->new ("localhost:25");
defined $socket or die "ERROR: $!";
$socket->print ("EHLO1512");
$r = <$socket>;
$socket->print ("MAIL FROM:<admin\@x.org>1512");
$r = <$socket>;
$socket->print ("RCPT TO:<xxxxxx\@x.org>1512");
$r = <$socket>;
$socket->print ("DATA1512");
$r = <$socket>;
$socket->print ("From:John Doe<admin\@x.org>\n
To:Frank Smith<xxxxxx\@x.org>\n
Subject:Test. \n\n
It's just test!!!1512");
$r = <$socket>;
$socket->print ("\.1512");
$r = <$socket>;
$socket->print ("QUIT1512");
$r = <$socket>;
не отсылает письмо вообще никуда, скрипт замирает, в логах ничего нету кроме того что он хочет подключится к порту...
(вообще-то хочу отправить postfix'у чтобы он ящик создал, ему нужно только через socket отправить?
почта работает, postfixadmin тоже работет и все создает)
Ф-ция print и ее объектно ориентированный аналог буферизируют информацию и сбрасываю буфер только по достижению определенного предела. Вследствии чего данные и не поступают в сокет немедленно. Чтобы переданная ф-ции print строка сразуже поступила в сокет достаточно закончить эту строку символом перевода строки \n.
В отличии от ф-ции print, ф-ция syswrite не буферизирует переданную ей инфомацию, а сразу же отсылает по месту назначения, чем вы собственно и воспользовались.