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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 14:31:08

сабж...
есть postfix+mysql

где та функция? что-то не понял, он письмо просто отпарвляет чтоли? как это на perl скрипте написать?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

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

Непрочитанное сообщение Alex_hha » 2008-11-07 14:53:43

Посмотреть в исходниках религия не позволяет?

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

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

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

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

Непрочитанное сообщение Alex_hha » 2008-11-07 14:56:06

З.Ы.
нашел еще один баг. Отправка письма идет от пользователя, который создает ящик
// 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

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

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

Непрочитанное сообщение terminus » 2008-11-07 15:18:52

Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера (если речь идет о использовании стороннего транспорта-сортировщика из Dovecot/Courier/etc, а не того что в postfix).
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 15:28:10

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

#!/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>;
я исходники смотрел, не получилсоь, просто молчит, в логах ничего, сейчас еще попробу... надо будет посмотреть что там...
а что нужно постфиксу письмо первое принять наверное которое есть в таблице...?
Последний раз редактировалось ProFTP 2008-11-07 16:02:19, всего редактировалось 2 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 15:28:42

terminus писал(а):Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера (если речь идет о использовании стороннего транспорта-сортировщика из Dovecot/Courier/etc, а не того что в postfix).
только из сокета наверное...
(письмо отправил, письмо точно ушло - он не создал)

то есть письмо не отсылается вообще из сокетов...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

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

Непрочитанное сообщение Alex_hha » 2008-11-07 17:09:42

письмо отправил, письмо точно ушло - он не создал
что в логах?
Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера
неправильно, ящик создает MTA(MDA), но никак не pop3/imap сервер.
$socket->print ("EHLO1512");
$r = <$socket>;
перед тем как отправлять что либо, надо дождаться ответа сервера ;)

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 17:13:40

Alex_hha писал(а):письмо отправил, письмо точно ушло - он не создал
что в логах?

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

connect from localhost[127.0.0.1]
timeout after CONNECT from localhost[127.0.0.1]
в гугле смотрел - ничего нету, многие по другому отправляют наверное (не из сокета)
надо будет где-то посмотреть еще...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

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

Непрочитанное сообщение Alex_hha » 2008-11-07 17:57:30

Мдяя, печально. Никто не хочет думать:(

Самый простой вариант

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

#!/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;

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 18:10:30

спасибо :drinks:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

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

Непрочитанное сообщение ProFTP » 2008-11-07 19:45:06

:evil:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

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

Непрочитанное сообщение terminus » 2008-11-07 21:27:21

Alex_hha писал(а):
Ящик создает POP3/IMAP сервер при получении первого письма для нового юзера
неправильно, ящик создает MTA(MDA), но никак не pop3/imap сервер.
Ну да - просто я не знал как правильно обозвать тот же LDA из Dovecot...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

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

Непрочитанное сообщение Alex_hha » 2008-11-07 21:50:11

Ну да - просто я не знал как правильно обозвать тот же LDA из Dovecot...
Dovecot LDA - исключение из правил ;)