Страница 1 из 1
Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 14:31:08
ProFTP
сабж...
есть postfix+mysql
где та функция? что-то не понял, он письмо просто отпарвляет чтоли? как это на perl скрипте написать?
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 14:53:43
Alex_hha
Посмотреть в исходниках религия не позволяет?
Код: Выделить всё
smtp_mail ($fTo, $fFrom, $fHeaders);
function smtp_mail ($to, $from, $data)
{
global $CONF;
$smtpd_server = $CONF['smtp_server'];
$smtpd_port = $CONF['smtp_port'];
$smtp_server = $_SERVER["SERVER_NAME"];
$errno = "0";
$errstr = "0";
$timeout = "30";
$fh = @fsockopen ($smtpd_server, $smtpd_port, $errno, $errstr, $timeout);
if (!$fh)
{
return false;
}
else
{
fputs ($fh, "EHLO $smtp_server\r\n");
$res = smtp_get_response($fh);
fputs ($fh, "MAIL FROM:<$from>\r\n");
$res = smtp_get_response($fh);
fputs ($fh, "RCPT TO:<$to>\r\n");
$res = smtp_get_response($fh);
fputs ($fh, "DATA\r\n");
$res = smtp_get_response($fh);
fputs ($fh, "$data\r\n.\r\n");
$res = smtp_get_response($fh);
fputs ($fh, "QUIT\r\n");
$res = smtp_get_response($fh);
fclose ($fh);
}
return true;
}
как это на perl скрипте написать?
смотри как работать с сокетом на perl
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 14:56:06
Alex_hha
З.Ы.
нашел еще один баг. Отправка письма идет от пользователя, который создает ящик
и на этот параметр кладется большой болт

Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 15:18:52
terminus
Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера (если речь идет о использовании стороннего транспорта-сортировщика из Dovecot/Courier/etc, а не того что в postfix).
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 15:28:10
ProFTP
Код: Выделить всё
#!/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.ua>1512");
$r = <$socket>;
$socket->print ("RCPT TO:<xxxxxx\@x.org.ua>1512");
$r = <$socket>;
$socket->print ("DATA1512");
$r = <$socket>;
$socket->print ("From:John Doe<admin\@x.org.ua>\n
To:Frank Smith<xxxxxx\@x.org.ua>\n
Subject:Test. \n\n
It's just test!!!1512");
$r = <$socket>;
$socket->print ("\.1512");
$r = <$socket>;
$socket->print ("QUIT1512");
$r = <$socket>;
я исходники смотрел, не получилсоь, просто молчит, в логах ничего, сейчас еще попробу... надо будет посмотреть что там...
а что нужно постфиксу письмо первое принять наверное которое есть в таблице...?
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 15:28:42
ProFTP
terminus писал(а):Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера (если речь идет о использовании стороннего транспорта-сортировщика из Dovecot/Courier/etc, а не того что в postfix).
только из сокета наверное...
(письмо отправил, письмо точно ушло - он не создал)
то есть письмо не отсылается вообще из сокетов...
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 17:09:42
Alex_hha
письмо отправил, письмо точно ушло - он не создал
что в логах?
Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера
неправильно, ящик создает MTA(MDA), но никак не pop3/imap сервер.
$socket->print ("EHLO1512");
$r = <$socket>;
перед тем как отправлять что либо, надо дождаться ответа сервера

Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 17:13:40
ProFTP
Alex_hha писал(а):письмо отправил, письмо точно ушло - он не создал
что в логах?
Код: Выделить всё
connect from localhost[127.0.0.1]
timeout after CONNECT from localhost[127.0.0.1]
в гугле смотрел - ничего нету, многие по другому отправляют наверное (не из сокета)
надо будет где-то посмотреть еще...
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 17:57:30
Alex_hha
Мдяя, печально. Никто не хочет думать:(
Самый простой вариант
Код: Выделить всё
#!/usr/bin/perl
use IO::Socket;
my $socket = IO::Socket::INET->new (PeerAddr => 'localhost:smtp(25)') or die "ERROR: $!";
sysread $socket, $answer_data,255;
print "1: $answer_data";
syswrite $socket, "helo localhost\r\n";
sysread $socket, $answer_data,255;
print "2: $answer_data";
syswrite $socket, "mail from:<>\r\n";
sysread $socket, $answer_data,255;
print "3: $answer_data";
syswrite $socket, "rcpt to:<alex\@mail.ru>\r\n";
sysread $socket, $answer_data,255;
print "4: $answer_data";
syswrite $socket, "data\r\n";
sysread $socket, $answer_data,255;
print "5: $answer_data";
syswrite $socket, "Welcome to your new account\r\n";
syswrite $socket, ".\r\n";
sysread $socket, $answer_data,255;
print "6: $answer_data";
syswrite $socket, "quit\r\n";
sysread $socket, $answer_data,255;
print "7: $answer_data";
close $socket;
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 18:10:30
ProFTP
спасибо

Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 19:45:06
ProFTP
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 21:27:21
terminus
Alex_hha писал(а):Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера
неправильно, ящик создает MTA(MDA), но никак не pop3/imap сервер.
Ну да - просто я не знал как правильно обозвать тот же LDA из Dovecot...
Re: Как postfixadmin/postfix создает ящики?
Добавлено: 2008-11-07 21:50:11
Alex_hha
Ну да - просто я не знал как правильно обозвать тот же LDA из Dovecot...
Dovecot LDA - исключение из правил
