Биллинговая система Nodeny
16 Мая 2024, 06:09:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Уведомления по почте  (Прочитано 5726 раз)
Aivanzipper
NoDeny
Старожил
*

Карма: 62
Offline Offline

Сообщений: 387


206967443
Просмотр профиля
« : 17 Ноября 2009, 17:16:59 »

Вообщем ситуация: поставил почтовик postfix на сервер с нодени, хочу получать на э-меил отчеты биллинга. Особенности почтового сервера: smtp без приветственного HELO и без последующей авторизации не пускает, соответственно все письма от биллинга не могут попасть в нужный ящик

Код:
postfix/smtpd[53102]: connect from localhost[127.0.0.1]
postfix/smtpd[53102]: lost connection after MAIL from localhost[127.0.0.1]
postfix/smtpd[53102]: disconnect from localhost[127.0.0.1]

Далее привожу кусок кода из nodeny.pl который отвечает за отправку почты:

Код:
sub Send_smtp {print $SMTP $_[0]; sysread($SMTP,$_,1024); return(/^5/)}
sub Smtp
{
 my $CRLF="\015\012";
 my $emails=0;
 my $message="Subject:NoDeny kernel. Critical error$CRLF$CRLF$_[0]";
 $email_admin=~s| ||g;
 $email_admin or return(0);
 $SMTP=new IO::Socket::INET (PeerAddr=>$smtp_server, PeerPort=>'25', Proto=>'tcp') or return(0);
 sysread($SMTP,$_,1024);
 &Send_smtp('MAIL FROM:nodeny@nodeny.com.ua'.$CRLF) && return(0);
 map { $emails+=!&Send_smtp("RCPT TO:$_$CRLF") } split /,/,$email_admin;
 (!$emails || &Send_smtp("DATA$CRLF") || &Send_smtp("$message$CRLF.$CRLF") || &Send_smtp("QUIT$CRLF")) && return(0);
 close($SMTP);
 return(1);
}

Ясно видно, что биллинг использует для отправки почты протокол smtp. Как сюда добавить HELO и авторизацию? Еще вариант - использовать локальную функцию mail(), но как реализовать это не знаю (в перле не силен).

Помогите советом кто может.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #1 : 17 Ноября 2009, 20:17:07 »

&Send_smtp('лалала'.$CRLF);
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #2 : 17 Ноября 2009, 22:09:58 »

Когда-то совсем недавно писал на пёрле скрипт для отсылки сообщений (postfix + HELO + авторизация при отправке.) Можно попробовать скрестить с NoDeny если сильно нужно.
Цитировать
#!/usr/bin/perl

use Net::SMTP;
use Date::Format;

%config = (
      'host' => "smtp.******.zp.ua",
      'hello' => "nodeny.*****.zp.ua",
      'timeout' => 30,
      'user' => 'notify@*****.zp.ua',
      'password' => '123',
      'subject' => "PingStat Info",
      'msgfile' => "/home/zentavr/myscripts/mailer/message",
);

@recipients = (
'zentavr@*******.zp.ua',
'glat@*******.zp.ua',
);


# Открываем файл с текстом письма
open(MSG, $config{'msgfile'});
$msg=<MSG>;
close(MSG);

# Цепляемся к  SMTP серву
$smtp = Net::SMTP->new( Host => $config{'host'},
         Hello => $config{'hello'},
         Timeout => $config{'timeout'},
         );
# Авторизируемся
$smtp->auth($config{'user'}, $config{'password'});
# От кого?
$smtp->mail($config{'user'});
# Кому?
$smtp->to(@recipients, {SkipBad => 1});

# Строим сообщение
foreach (@recipients) {
    if(defined($rec)){
   $rec = $rec . ", " . $_;
    } else {
   $rec = $_;
    }
}

print $rec."\n";

$time = time2str("%a, %e %b %Y %T %z", time);
$headers = "From: Pinger <".$config{'user'}.">
To: ".$rec."
Subject: ".$config{'subject'}."
Date: ".$time."";

# Шлём
$smtp->data($headers . "\n" . $msg);

# Quit
$smtp->quit;

Можно, конечно, ещё MIME-теги вставить, кодировку, правильно сформировать тему письма если письмо не на латиннице написано. ..для этого вся инфа есть в гугле.
Скрипт был написан почти по примеру от Net::SMTP.
Записан
Aivanzipper
NoDeny
Старожил
*

Карма: 62
Offline Offline

Сообщений: 387


206967443
Просмотр профиля
« Ответ #3 : 18 Ноября 2009, 09:32:36 »

&Send_smtp('лалала'.$CRLF);

это что значит?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #4 : 18 Ноября 2009, 11:15:00 »

&Send_smtp('лалала'.$CRLF);

это что значит?
&Send_smtp('HELO'.$CRLF);
Записан
Aivanzipper
NoDeny
Старожил
*

Карма: 62
Offline Offline

Сообщений: 387


206967443
Просмотр профиля
« Ответ #5 : 18 Ноября 2009, 11:37:52 »

хорошо, а авторизацию можно как-то?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #6 : 18 Ноября 2009, 18:15:04 »

хорошо, а авторизацию можно как-то?
Текущая реализация - легковесная, минимум кода, построена на сокетах. Для smtp авторизации нужен отдельный модуль.
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #7 : 18 Ноября 2009, 22:51:00 »

хорошо, а авторизацию можно как-то?
Текущая реализация - легковесная, минимум кода, построена на сокетах. Для smtp авторизации нужен отдельный модуль.
А если скрестить моё с Вашим? Улыбающийся
Отдаю код в хорошие руки Улыбающийся
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #8 : 19 Ноября 2009, 02:11:09 »

В 49 и 50 ветки ничего нового не вносится, ожидается, что станут stable.

51 и 52 пока правятся на изменение структуры (логичности, удобности и т.д), ничего нового там пока нет, ну кроме окна авторизации.

Выпускаться они будут не скоро - предстоит значительное тестирование. Да и хотспот я там реализую. В масштабах страны, тока тсс
Записан
Aivanzipper
NoDeny
Старожил
*

Карма: 62
Offline Offline

Сообщений: 387


206967443
Просмотр профиля
« Ответ #9 : 19 Ноября 2009, 09:11:33 »

Добавляйте в 51 и 52 smtp-авторизацию! Улыбающийся
Записан
Aivanzipper
NoDeny
Старожил
*

Карма: 62
Offline Offline

Сообщений: 387


206967443
Просмотр профиля
« Ответ #10 : 25 Ноября 2009, 17:54:12 »

Кстати, советую добавить в хедер письма 'Content-Type: text/plain; charset=windows-1251;'
ато проблемы с кодировками есть
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!