Страница 1 из 1

postfixadmin скрипт создания ящика

Добавлено: 2010-03-15 15:19:24
Гость
Подскажите пожалуйста понять как в postfixadmin создается ящик юзера, какой скрипт за это ответственен? никак не понять, не могу найти стандартную функцию mail...

Re: postfixadmin скрипт создания ящика

Добавлено: 2010-03-15 15:25:23
ProFTP
зачем вам это надо?

вроде бы вставить в таблицу mailbox и таблицу alias

и отправить письмо на этот адресс, чтобы Courier/Dovecot создал ящик

Код: Выделить всё

sub insert_mailbox {
    my $self = shift;

    my ( $pwc, $maildir, $salt );
    my @smtp_out = ();

    my $fount;
    foreach my $value ( values( %{ $self->{he} } ) ) {
        if ( $value == 1 ) { $fount = 1; last; }
    }

    if ( !$fount ) {

        if ( $self->{se}->{type_passwd} eq 'md5crypt' ) {
            $self->{p}->{fPassword} =
              $func->md5crypt( $self->{p}->{fPassword} );
        }

        $self->{p}->{email_smtp} =
          $self->{p}->{fUsername} . '@' . $self->{p}->{fDomain};

        my $sth = $self->{dbh}->prepare( '
          INSERT INTO mailbox (username,
                               password,
                               name,
                               maildir,
                               quota,
                               domain,
                               created,
                               modified,
                               active) 
              VALUES (?,?,?,?,?,?,NOW(),NOW(),?)
               ' );

        $sth->execute(
            $self->{p}->{email_smtp}, $self->{p}->{fPassword},
            $self->{p}->{fName},      $self->{p}->{maildir},
            $self->{p}->{fQuota},     $self->{p}->{fDomain},
            $self->{p}->{fActive}
        );
        $sth->finish();

        my $sth = $self->{dbh}->prepare(
            'INSERT INTO alias (address,
                                                  goto,
                                                  domain,
                                                  created,
                                                  modified,
                                                  active) 
                               VALUES (?,?,?,NOW(),NOW(),?)
               '
        );

        $sth->execute(
            $self->{p}->{email_smtp}, $self->{p}->{email_smtp},
            $self->{p}->{fDomain},    $self->{p}->{fActive}
        );
        $sth->finish();

        if ( $self->{p}->{fMail} eq 'on' ) {

            $self->SUPER::sent_email(@_);

        }
        $self->{he}->{mailbox_added} = 1;
        $self->{he}->{EMAIL_ADD}     = $self->{p}->{email_smtp};
    }



    return $self;
}

Код: Выделить всё

sub sent_email {

    my $self     = shift;
    my @smtp_out = ();

    use IO::Socket;
    my $socket = IO::Socket::INET->new( PeerAddr => 'localhost:smtp(25)' )
      or die "ERROR: $!";
    my $answer_data;

    sysread $socket, $answer_data, 255;
    $smtp_out[0] = "1: $answer_data";

    syswrite $socket, "helo $self->{'se'}->{'smtp_server'}\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[1] = "2: $answer_data";

    syswrite $socket, "mail from:<$self->{'se'}->{'mail_from'}>\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[2] = "3: $answer_data";

    syswrite $socket, "rcpt to:<$self->{'p'}->{'email_smtp'}>\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[3] = "4: $answer_data";

    syswrite $socket, "data\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[4] = "5: $answer_data";

    syswrite $socket, "$self->{'se'}->{'text_new_mailbox'}\r\n";

    syswrite $socket, ".\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[5] = "6: $answer_data";

    syswrite $socket, "quit\r\n";
    sysread $socket, $answer_data, 255;
    $smtp_out[7] = "7: $answer_data";

    close $socket;

    @smtp_out = map +{ answer => $_ }, @smtp_out;
    $self->{he}->{SOCKET} = \@smtp_out;

    return $self;
}

Re: postfixadmin скрипт создания ящика

Добавлено: 2010-03-15 15:47:16
Гость
ящик создает postfix, а не pop3/imap сервер.
Просто нужен скрипт создания ящика, в инете нашел с использованием функции mail или типа такого
http://prootime.ru/php-send-email.html. Но это коряво.
Сказали смотреть как сделано в postfixadmin'е. Вот ищу и не могу найти это злополучный скрипт...

Re: postfixadmin скрипт создания ящика

Добавлено: 2010-03-15 15:57:50
terminus
Гость писал(а):ящик создает postfix, а не pop3/imap сервер.
Просто нужен скрипт создания ящика, в инете нашел с использованием функции mail или типа такого
http://prootime.ru/php-send-email.html. Но это коряво.
Сказали смотреть как сделано в postfixadmin'е. Вот ищу и не могу найти это злополучный скрипт...

ящик создает сортировшик когда на него приходит первое письмо. если как сортировщик используется LDA из Dovecot, то создает он. Если сортировкой занимается сам постфикс, то он (я такую схему не реализовавал).

Re: postfixadmin скрипт создания ящика

Добавлено: 2010-03-15 17:15:04
ProFTP
Гость писал(а):ящик создает postfix, а не pop3/imap сервер.
Просто нужен скрипт создания ящика, в инете нашел с использованием функции mail или типа такого
http://prootime.ru/php-send-email.html. Но это коряво.
Сказали смотреть как сделано в postfixadmin'е. Вот ищу и не могу найти это злополучный скрипт...
в потсфиксадминке, файлик функшионс.пхп там функция отправки писем...