Страница 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
З.Ы.
нашел еще один баг. Отправка письма идет от пользователя, который создает ящик
// Site Admin
// Define the Site Admins email address below.
// This will be used to send emails from to create mailboxes.
$CONF['admin_email'] = 'postmaster@change-this-to-your.domain.tld';
и на этот параметр кладется большой болт :-D

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
спасибо :drinks:

Re: Как postfixadmin/postfix создает ящики?

Добавлено: 2008-11-07 19:45:06
ProFTP
:evil:

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 - исключение из правил ;)