Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / отправка почты через smtp / 13 сообщений из 13, страница 1 из 1
22.12.2015, 16:10
    #39134781
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
Помогите разобраться. Есть функция send_mail('server', 'to@mail.ru', 'from@mail.ru', 'msg', 'msg msg msg')
на smtp сервере анонимная авторизация, когда запускаю скрипт с локальной машины почта ходит как надо.
тот же скрипт на машине с ubuntu server выдает ошибку доступа.

p.s. Машины находятся в разных подсетях

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
#! /usr/bin/perl

sub send_mail {
    use Net::SMTP;  
    
    my ($smtpserver, $to, $from, $msg, $subject) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
    eval
    {
        require Authen::SASL;
    };

    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver)))
    {
        return "Could not connect to SMTP Server: $smtpserver ";
    }    
    if (!($smtp->mail($from)))
    {
        return "Bad 'From', check your Ac count Information";
    }
    if (!($smtp->recipient(@$to)))
    {
        return "Bad 'EmailTo'";
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}
...
Рейтинг: 0 / 0
22.12.2015, 22:09
    #39135183
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
И какого рода ошибка - не удалось соединиться, сервер отверг подключение, что-то другое?
...
Рейтинг: 0 / 0
22.12.2015, 22:30
    #39135191
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
vkle, <vf.mirkos@mail.ru>;: Relay access denied
...
Рейтинг: 0 / 0
22.12.2015, 23:24
    #39135231
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
noTpyJIна smtp сервере анонимная авторизация
Не стыкуется с
noTpyJI@mail.ru>;: Relay access denied
...
Рейтинг: 0 / 0
23.12.2015, 07:58
    #39135338
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
vkle,

этот скрипт прекрасно работает с тем же smtp серверов, с другой машины из другой подсетки.
...
Рейтинг: 0 / 0
23.12.2015, 09:19
    #39135389
Q.Tarantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
noTpyJIvkle,

этот скрипт прекрасно работает с тем же smtp серверов, с другой машины из другой подсетки.
я правильно понимаю, что relay у вас локально находится?
полагаю, на нем настроен access list по IP адресам/подсетям.
...
Рейтинг: 0 / 0
23.12.2015, 09:28
    #39135400
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
Q.Tarantino,

relay находится физически на другой машине. Скрипт писал изначально на локальной машине, там же и тестил рассылку (relay сервер и локальная машина в одной сетки).
Вот на машине из другой сетки не пашет. Вот про access list нужно будет узнать у сис админа
...
Рейтинг: 0 / 0
23.12.2015, 09:54
    #39135427
Q.Tarantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
noTpyJIrelay находится физически на другой машине. Скрипт писал изначально на локальной машине, там же и тестил рассылку (relay сервер и локальная машина в одной сетки).
Вот на машине из другой сетки не пашет. Вот про access list нужно будет узнать у сис админа
под локальным я имел ввиду внутри вашей конторы а не какой нить gmail и тп.
спрашивайте админа, там надо смотреть.
...
Рейтинг: 0 / 0
23.12.2015, 15:44
    #39136163
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
Q.Tarantino,

C Админом разобрались.
Теперь другая проблема. Теперь на smtp нужно авторизоватся. Выданный логин и пароль учетки проверенны на клиенте ms sql management studio, письма ходят прекрасно! )

А вот скрипт мой не пашет

smtp запущен в режиме debug а

авторNet::SMTP>>> Net::SMTP(2.34)
Net::SMTP>>> Net::Cmd(2.30)
Net::SMTP>>> Exporter(5.71)
Net::SMTP>>> IO::Socket::INET(1.35)
Net::SMTP>>> IO::Socket(1.38)
Net::SMTP>>> IO::Handle(1.35)
Net::SMTP=GLOB(0x33bbb08)<<< 220 srvexcas2.bops.local Microsoft ESMTP MAIL Service ready at Wed, 23 Dec 2015 04:19:37 -0800
Net::SMTP=GLOB(0x33bbb08)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x33bbb08)<<< 250-srvexcas2.bops.local Hello [172.20.14.75]
Net::SMTP=GLOB(0x33bbb08)<<< 250-SIZE 37748736
Net::SMTP=GLOB(0x33bbb08)<<< 250-PIPELINING
Net::SMTP=GLOB(0x33bbb08)<<< 250-DSN
Net::SMTP=GLOB(0x33bbb08)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x33bbb08)<<< 250-STARTTLS
Net::SMTP=GLOB(0x33bbb08)<<< 250-X-ANONYMOUSTLS
Net::SMTP=GLOB(0x33bbb08)<<< 250-AUTH NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 250-X-EXPS GSSAPI NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 250-8BITMIME
Net::SMTP=GLOB(0x33bbb08)<<< 250-BINARYMIME
Net::SMTP=GLOB(0x33bbb08)<<< 250-CHUNKING
Net::SMTP=GLOB(0x33bbb08)<<< 250 XRDST
Net::SMTP=GLOB(0x33bbb08)>>> AUTH NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 334 NTLM supported
Net::SMTP=GLOB(0x33bbb08)>>>
Net::SMTP=GLOB(0x33bbb08)<<< 535 5.7.3 Authentication unsuccessful
5.7.3 Authentication unsuccessful


Код: ruby
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#! /usr/bin/perl -w

sub send_mail {
    use Net::SMTP;
    use MIME::Base64;
	
    my ($smtpserver, $to, $from, $msg, $subject, $apass) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
	eval 
	{
		require Authen::SASL;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};
	
    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver, , Debug => 1)))
    {
        return "Could not connect to SMTP Server: $smtpserver \n";
    }
	if (length($apass) > 0)
	{
		if(!($smtp->auth(encode_base64('login'), encode_base64('pass'))))
		{
			return $smtp->message(); 
		}
	}
    if (!($smtp->mail($from)))
    {
        return "Bad From, check your Ac count Information " . $smtp->message();
    }
    if (!($smtp->recipient(@$to)))
    {	
        return "Bad EmailTo " . $smtp->message();
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}
...
Рейтинг: 0 / 0
23.12.2015, 15:58
    #39136189
Q.Tarantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
noTpyJIА вот скрипт мой не пашет
модуль Authen::SASL установлен?
...
Рейтинг: 0 / 0
23.12.2015, 16:07
    #39136204
noTpyJI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
Q.Tarantino,

Да. Код немного устаревший


Код: ruby
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#! /usr/bin/perl -w

sub send_mail {
    use Net::SMTP;
	
    my ($smtpserver, $to, $from, $msg, $subject, $apass) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
	eval 
	{
		use Authen::SASL;
		use MIME::Base64;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};
	
    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver, Debug => 1)))
    {
        return "Could not connect to SMTP Server: $smtpserver \n";
    }
	if (length($apass) > 0)
	{
		if(!($smtp->auth(encode_base64('login'), encode_base64('pass'))))
		{
			return $smtp->message(); 
		}
	}
    if (!($smtp->mail($from)))
    {
        return "Bad From, check your Ac count Information " . $smtp->message();
    }
    if (!($smtp->recipient(@$to)))
    {	
        return "Bad EmailTo " . $smtp->message();
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}

...
Рейтинг: 0 / 0
29.12.2015, 14:25
    #39140049
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
noTpyJI, ну видно же что NTLM неntlm-мит.
Попробуйте модуль Authen::NTLM установить или обновить.
И еще есть модуль Authen::SASL::Perl::NTLM. Может там любой из модулей подхватывается
...
Рейтинг: 0 / 0
30.12.2015, 20:28
    #39140850
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка почты через smtp
чудовищный бред.
где ты взял этот код?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
eval 
	{
		require Authen::SASL;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};



почему бы не использовать use вместо require ?

и уж если require, то

1) кто будет $error проверять ? Папа Римский?

2) ты твёрдо уверен, что на убунте установлен ActivePerl ?

даже если ActivePerl установлен и ppm install вдруг успешен, придётся запускать код ещё раз,
ну и зачем тогда require ?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / отправка почты через smtp / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]