powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp
19 сообщений из 19, страница 1 из 1
utl_smtp
    #36828290
utl_smtp999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь послать письмо через корпоративную почту с авторизацией
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare
    p_sender         VARCHAR2( 255 ) := 'aaaaaaa@xxxxx.ru';
    p_recipient      VARCHAR2( 255 ) := 'bbbbbbb@xxxxx.ru';
    l_mailhost       VARCHAR2( 255 ) := 'ccccccc.com';
    l_connection     utl_smtp.connection;       
BEGIN
    l_connection := utl_smtp.open_connection(l_mailhost,  25 );
    
    utl_smtp.helo(l_connection, l_mailhost);
    
    utl_smtp.command(l_connection, 'AUTH LOGIN');
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('login'))));
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password'))));
       
    utl_smtp.mail(l_connection, p_sender);
    utl_smtp.rcpt(l_connection, p_recipient);
  
    utl_smtp.quit(l_connection);
end;
На utl_smtp.command(l_connection, 'AUTH LOGIN') вылетает
Код: plaintext
ORA-29279 Постоянная ошибка SMTP 503 5.5.2 Send hello first

Что это означает, ведь helo я уже посылаю?
...
Рейтинг: 0 / 0
utl_smtp
    #36828349
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_smtp999,
можно телнетом протокол пройти и посмотреть

telnet smtp_server 25
<ответ сервера>
HELO your_ipaddress
<ответ сервера>
AUTH LOGIN
...
Рейтинг: 0 / 0
utl_smtp
    #36828355
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_smtp999,

11g utl_mail.
...
Рейтинг: 0 / 0
utl_smtp
    #36828369
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_smtp999Пытаюсь послать письмо через корпоративную почту с авторизацией
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
declare
    p_sender         VARCHAR2( 255 ) := 'aaaaaaa@xxxxx.ru';
    p_recipient      VARCHAR2( 255 ) := 'bbbbbbb@xxxxx.ru';
    l_mailhost       VARCHAR2( 255 ) := 'ccccccc.com';
    l_connection     utl_smtp.connection;       
BEGIN
    l_connection := utl_smtp.open_connection(l_mailhost,  25 );
    
    utl_smtp.helo(l_connection, l_mailhost);
    
    utl_smtp.command(l_connection, 'AUTH LOGIN');
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('login'))));
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password'))));
       
    utl_smtp.mail(l_connection, p_sender);
    utl_smtp.rcpt(l_connection, p_recipient);
  
    utl_smtp.quit(l_connection);
end;
На utl_smtp.command(l_connection, 'AUTH LOGIN') вылетает
Код: plaintext
ORA-29279 Постоянная ошибка SMTP 503 5.5.2 Send hello first

Что это означает, ведь helo я уже посылаю?

для того чтобы авторизовываться нужно ehlo посылать, смотреть ответ и выбирать соответствующий способ аутентификации
...
Рейтинг: 0 / 0
utl_smtp
    #36828456
utl_smtp999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов,

Все верно, однако нигде не нашел этого в описании.

Всем спасибо.
...
Рейтинг: 0 / 0
utl_smtp
    #36828490
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_smtp999однако нигде не нашел этого в описании.
http://www.ietf.org/rfc/rfc1869.txt
http://www.ietf.org/rfc/rfc2554.txt
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
utl_smtp
    #37452642
strelka72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловдля того чтобы авторизовываться нужно ehlo посылать, смотреть ответ и выбирать соответствующий способ аутентификации

столкнулась с такой же проблемой отправки писем с авторизацией.
Код: plaintext
ORA- 29279 : Постоянная ошибка SMTP:  503   5 . 5 . 2  Send hello first.
пока авторизацию не включили, процедура отправки писем работала. по телнету доступ до почтового сервера есть. ehlo получаю целый список малопонятных параметров, научите, как их применять в авторизации?
...
Рейтинг: 0 / 0
utl_smtp
    #37452782
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
  utl_smtp.command(l_connection, 'AUTH LOGIN');
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('login'))));
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password'))));

Код: plaintext
1.
 utl_smtp.auth(connection,user,password,utl_smtp.ALL_SCHEMES);

Вот только с какой версии оно появилось - не скажу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
  /*
   * SMTP authentication schemes for use with the AUTH API.
   *
   * UTL_SMTP may support additional authentication schemes in the future and
   * these strings will change accordingly.
   */

  /* The list of all authentication schemes that UTL_SMTP supports, in the
   * order of their relative security strength. This list contains some
   * schemes in which cleartext passwords are sent over SMTP. They should be
   * used only in SMTP connections that are secured by Secure Scoket Layer /
   * Transport Layer Security (SSL/TLS).
   */
  ALL_SCHEMES CONSTANT VARCHAR2( 80 ) := 'CRAM-MD5 PLAIN LOGIN';

  /* The list of authentication schemes that UTL_SMTP supports and in which
   * no cleartext passwords are sent over SMTP. They may be used in SMTP
   * connections that are not secured by SSL/TLS. Note that these schemes
   * may still be weak when used in an insecure SMTP connection.
   */
  NON_CLEARTEXT_PASSWORD_SCHEMES CONSTANT VARCHAR2( 80 ) := 'CRAM-MD5';
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
utl_smtp
    #38159594
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MazoHist
Код: plsql
1.
 utl_smtp.auth(connection,user,password,utl_smtp.ALL_SCHEMES);



Вот только с какой версии оно появилось - не скажу.


у меня стоит 11g, так у меня такой функции нет
...
Рейтинг: 0 / 0
utl_smtp
    #38160077
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия? 11.1? Значит ввели в 11.2. А если нет - совет уже дали.
...
Рейтинг: 0 / 0
utl_smtp
    #38160525
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MazoHist,

у меня немного другая проблема
на почтовике шифрование CRAM-MD5
какой параметр вместо AUTH LOGIN должен быть?
...
Рейтинг: 0 / 0
utl_smtp
    #38161453
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автору меня немного другая проблема
на почтовике шифрование CRAM-MD5
какой параметр вместо AUTH LOGIN должен быть?

Ну тогда нужно вызвать
Код: plsql
1.
 utl_smtp.command(l_connection, 'AUTH CRAM-MD5');


но только придется самостоятельно реализовать алгоритм CRAM-MD5

ЗЫ: в доступе серверов с такой авторизацией нету, так бы сделал.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
utl_smtp
    #39959538
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
utl_smtp999Пытаюсь послать письмо через корпоративную почту с авторизацией
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare
    p_sender         VARCHAR2(255) := 'aaaaaaa@xxxxx.ru';
    p_recipient      VARCHAR2(255) := 'bbbbbbb@xxxxx.ru';
    l_mailhost       VARCHAR2(255) := 'ccccccc.com';
    l_connection     utl_smtp.connection;       
BEGIN
    l_connection := utl_smtp.open_connection(l_mailhost, 25);
    
    utl_smtp.helo(l_connection, l_mailhost);
    
    utl_smtp.command(l_connection, 'AUTH LOGIN');
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('login'))));
    utl_smtp.command(l_connection, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password'))));
       
    utl_smtp.mail(l_connection, p_sender);
    utl_smtp.rcpt(l_connection, p_recipient);
  
    utl_smtp.quit(l_connection);
end;


На utl_smtp.command(l_connection, 'AUTH LOGIN') вылетает
Код: plaintext
ORA-29279 Постоянная ошибка SMTP 503 5.5.2 Send hello first

Что это означает, ведь helo я уже посылаю?


для того чтобы авторизовываться нужно ehlo посылать, смотреть ответ и выбирать соответствующий способ аутентификации


Могли бы вы привести пример, как выбрать?

Получаю ошибку Send hello first
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
telnet smtp.server.com 25
Trying 192.168.1.10...
Connected to smtp.server.com.
Escape character is '^]'.
220 oracle 04
EHLO
250-NG-server.com Hello [10.89.74.69]
250-SIZE 25165824
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING



Код: plsql
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.
declare
  l_connection utl_smtp.connection;
  crlf varchar2(2) := UTL_TCP.CRLF;
  l_mailhost VARCHAR2 (64) := 'smtp.server.com';
  l_from     VARCHAR2 (64) := 'no-reply.abc@server.com';
  l_to       VARCHAR2 (64) := 'no-reply.abc@server.com';
  l_subject     VARCHAR2 (64) := 'oracle';
  
begin
  l_connection := utl_smtp.open_connection(
    host => 'smtp.server.com',
    port => 25,
    wallet_path => 'file:/u01/wallet/my_wallet',
    wallet_password => 'password',
    secure_connection_before_smtp => false);
  
  utl_smtp.ehlo(l_connection, 'smtp.server.com');
   utl_smtp.starttls(l_connection);
  utl_smtp.auth(l_connection, 'login', 'password',utl_smtp.ALL_SCHEMES);

utl_smtp.open_data(l_connection);

UTL_SMTP.write_data (l_connection, 'Date: ' || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || crlf);
  UTL_SMTP.write_data (l_connection, 'From: ' || l_from || crlf);
  UTL_SMTP.write_data (l_connection, 'Subject: ' || l_subject || crlf);
  UTL_SMTP.write_data (l_connection, 'To: ' || l_to || crlf);
  UTL_SMTP.write_data (l_connection, '' || crlf);

  FOR i IN 1 .. 10
  LOOP
    UTL_SMTP.write_data (l_connection, 'This is a test message. Line ' || TO_CHAR (i) || crlf);
  END LOOP;
  
UTL_SMTP.close_data (l_connection);
UTL_SMTP.quit (l_connection); 
end;



Получаю ошибку: ORA-29279 SMTP Permanent Error: 503 5.5.2 Send hello first
...
Рейтинг: 0 / 0
utl_smtp
    #39959661
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBudda


Получаю ошибку Send hello first
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
telnet smtp.server.com 25
Trying 192.168.1.10...
Connected to smtp.server.com.
Escape character is '^]'.
220 oracle 04
EHLO
250-NG-server.com Hello [10.89.74.69]
250-SIZE 25165824
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING



тут одно из двух:
- ваш SMTP на конкретном порту аутентификацию вообще не будет делать и работает только релеем
- он не хочет делать аутентификацию по не защищенному каналу (STARTTLS на это намекает), попробуйте ему EHLO заслать не через telnet, а через openssl s_client -connect 10.89.74.69:25 -starttls smtp
...
Рейтинг: 0 / 0
utl_smtp
    #39959662
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offАндрей Панфилов, самое интересное что прошло 10 лет а на фото ты не изменился :)
...
Рейтинг: 0 / 0
utl_smtp
    #39959664
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
BigBudda


Получаю ошибку Send hello first
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
telnet smtp.server.com 25
Trying 192.168.1.10...
Connected to smtp.server.com.
Escape character is '^]'.
220 oracle 04
EHLO
250-NG-server.com Hello [10.89.74.69]
250-SIZE 25165824
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING



тут одно из двух:
- ваш SMTP на конкретном порту аутентификацию вообще не будет делать и работает только релеем
- он не хочет делать аутентификацию по не защищенному каналу (STARTTLS на это намекает), попробуйте ему EHLO заслать не через telnet, а через openssl s_client -connect 10.89.74.69:25 -starttls smtp



Код: plsql
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.
openssl s_client -connect xx.xx.xx.xx:25 -starttls smtp


CONNECTED(00000003)
depth=0 C = RU, ST = Moscow, L = Moscow, O = something, OU = IT, CN = ng-smtp-01.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = RU, ST = Moscow, L = Moscow, O = something, OU = IT, CN = ng-smtp-01.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = RU, ST = Moscow, L = Moscow, O = something, OU = IT, CN = ng-smtp-01.com
verify error:num=21:unable to verify the first certificate
verify return:1

No client certificate CA names sent
Server Temp Key: ECDH, prime256v1, 256 bits

SSL handshake has read 2689 bytes and written 466 bytes

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol  : TLSv1.2

Verify return code: 21 (unable to verify the first certificate)

250 CHUNKING



Я не понимаю, что мне дальше делать.Как отправить тестовое письмо?
Где взять ca сертификат, чтобы избежать ошибки unable to verify the first certificate?
...
Рейтинг: 0 / 0
utl_smtp
    #39959669
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавил присланный сертификат в trusted.

Код: plsql
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.
No client certificate CA names sent
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 2689 bytes and written 466 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Session-ID-ctx:
    Master-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1589910807
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
250 CHUNKING
451 4.7.0 Timeout waiting for client input
read:errno=0



Я не понимаю, как мне теперь отправить письмо из БД и обойти ошибку, SMTP 503 5.5.2 Send hello first
...
Рейтинг: 0 / 0
utl_smtp
    #39959689
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBudda,

ну вы ему EHLO-то введите, чтобы посмотреть что там.

вот пример с gmail без STARTTLS - он как и ваш никого аутентифицировать не хочет:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$ nc smtp.gmail.com 587
220 smtp.gmail.com ESMTP h7sm165000pgn.60 - gsmtp
EHLO panfilov.tel <- я руками вбил
250-smtp.gmail.com at your service, [49.177.142.45]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8



а вот со STARTTLS - говорит что так можно аутентифицироваться:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$ openssl s_client -connect smtp.gmail.com:587 -starttls smtp
---
250 SMTPUTF8
EHLO panfilov.tel <- я руками вбил
250-smtp.gmail.com at your service, [49.177.142.45]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8




собственно если у вас будет AUTH в ответе, то значит нужно к серверу через STARTTLS ходить , ну или другие порты помимо 25 провертьте: 465 - это SMTPS, на него нужно сразу с включенным SSL/TLS идти, либо 587
...
Рейтинг: 0 / 0
utl_smtp
    #39959714
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После STARTTLS начинается новая сессия SMTP и потому EHLO надо делать ещё раз. Совсем недавно обсуждали https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1324239&msg=22114468
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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