Issue with UTL_MAIL Oracle - oracle

I'm trying to send email using oracle 11g as below.
begin
utl_mail.send(
sender => 'user#xxx.com',
recipients => 'user#gmail.com',
message => 'Hello World'
);
but i got below error.
ORA-29279: SMTP permanent error: 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 ph1sm17301835pbb.45
ORA-06512: at "SYS.UTL_MAIL", line 654
ORA-06512: at "SYS.UTL_MAIL", line 671
ORA-06512: at line 2
29279. 00000 - "SMTP permanent error: %s"
*Cause: A SMTP permanent error occurred.
*Action: Correct the error and retry the SMTP operation.
how could i solve this ?

According to the GMail documentation, you need SMTP/Auth to send E-Mails via GMail.
Unfortunately, utl_mail doesn't support this - you'll have to use utl_smtp.
See Oracle Forums for an example.

Related

Oracle Cloud, access Flask Server on Compute Instance from Autonomous Database

I build a Flask Python REST app on a Oracle Cloud compute instance. The REST Call works from my client just fine. (I added Ingress Rule for 0.0.0.0/0).
My plan is to have the Comupute Instance only accesible from my ATP Database and call the REST Service from PL/SQL. When I try to call the Webservice, I get the following error:
DECLARE
l_clob CLOB;
BEGIN
l_clob := apex_web_service.make_rest_request(
p_url => 'https://130.zz.yy.xx:5000/test',
--p_url=> 'https://httpbin.org/get',
p_http_method => 'GET'
);
END;
Error report -
ORA-29273: HTTP request failed
ORA-06512: at "APEX_220100.WWV_FLOW_WEB_SERVICES", line 1182
ORA-06512: at "APEX_220100.WWV_FLOW_WEB_SERVICES", line 782
ORA-01031: insufficient privileges
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1209
ORA-06512: at "APEX_220100.WWV_FLOW_WEB_SERVICES", line 756
ORA-06512: at "APEX_220100.WWV_FLOW_WEB_SERVICES", line 1023
ORA-06512: at "APEX_220100.WWV_FLOW_WEB_SERVICES", line 1371
ORA-06512: at "APEX_220100.WWV_FLOW_WEBSERVICES_API", line 568
ORA-06512: at line 5
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
Normal REST Calls work just fine. What could be the problem?
The ATP can not access the compute instance because of some network settings?
ATP is not happy with the SSL settings or some other nasty HTTPS stuff?
The restrictions of calling REST APIs from APEX on autonomous database are outlined here:
https://docs.oracle.com/en/cloud/paas/atp-cloud/atpgs/autonomous-apex-web-services.html
So ...
must be a public endpoint, and the SSL certificate must be provided by a public CA.
For HTTPS, only the default port (443) is allowed; other ports raise the error message you're seeing.
configuring a proxy server in APEX is not supported on ADB; you then also
get the "Insufficient Privileges" error.

SMTP error while I am trying to run the sending email program in oracle pl/sql

When I am running this, i am getting error:
begin
UTL_MAIL.SEND(SENDER =>'admin#dbaclass.com',
RECIPIENTS=> 'support#dbaclass.com',
SUBJECT=> 'MAIL FROM dbaclasss SENDER',
MESSAGE => 'Welcome to dbaclass'
);
end;
Error:
Error report -
ORA-29278: SMTP transient error: 421 Service not available
ORA-06512: at "SYS.UTL_MAIL", line 654
ORA-06512: at "SYS.UTL_MAIL", line 671
ORA-06512: at line 2
29278. 00000 - "SMTP transient error: %s"
I checked the telnet command to check the stmp.gmail.com its working fine.
but when i tried this from oracle it is giving the above error.
Can someone please help me.
That will not work out of the box.
If your server is not ssl/tls you need at least set (maybe create local smtp first for test) and set acl:
ALTER SYSTEM SET smtp_out_server = 'mailserver.domain.com'
If server is secure (and gmail is) and you have no local smtp server to work with. You need to do more to set secure connection.
Look at this to get idea for start(you need walled or own secure ssl/tls implementation):
Give credentials to UTL_MAIL.SEND to bypass ORA-29278
Probably at this too:
http://oracle.ninja/sending-secure-e-mails-out-of-the-database-ssltls-utl_smtp-openssl-acl-wallet/

ORACLE, UTL_HTTP and SSL

I try to reach a WebService provide by a secured site with a TLS 1.2 certificate encrypted that i exported and add in a wallet.
First i try to reach the site with the package UTL_HTTP.request on a 11.2.0.1.0 ORACLE Database but i have the ORA-28857 SSL error unknown message.
I try the same on a 12.1.0.1.0 ORACLE Database but i have the ORA-29024 message.
So, i searched on the web and find everything and nothing about the subject.....
Here is what i did:
First: I exported the certificate from Internet Explorer with the PKCS #7 (.p7b) format (Chains included)
then, i create a wallet with the orapki utility
orapki wallet create -wallet e:\wallet -pwd <pwd>
then i add my certificate
orapki wallet add -wallet e:\wallet -trusted_cert -cert e:\certificats\<cert file> -pwd <pwd>
and i try to reach the secured site
SELECT UTL_HTTP.REQUEST('https://<secured site>.com',null,'file:E:\wallet','<pwd>')
FROM dual;
and i have the message:
ORA-29273: échec de demande HTTP ORA-06512: à "SYS.UTL_HTTP",
ligne 1722 ORA-28857: Erreur SSL inconnue ORA-06512: à ligne 1
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
I tried to create ACLs:
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
acl => 'utl_http.xml',
description => 'Test ACL',
principal => '<user>',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null
);
END;
/
BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl => 'utl_http.xml',
principal => '<user>',
is_grant => TRUE,
privilege => 'use-client-certificates',
start_date => null,
end_date => null);
END;
/
BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'utl_http.xml',
host => '<secured site>',
lower_port => 1,
upper_port => 9999);
END;
/
BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL(
acl => 'utl_http.xml',
wallet_path => 'file:E:\wallet');
END;
/
(I m not sure about usefulness of all but I'm ready to do everything to make that work ^^)
and i try to reach the secured site
SELECT UTL_HTTP.REQUEST('https://<secured site>.com',null,'file:E:\wallet','<pwd>')
FROM dual;
and i have the message:
Rapport d’erreur : ORA-29273: échec de demande HTTP ORA-06512: à
"SYS.UTL_HTTP", ligne 1130 ORA-29024: Echec de validation de
certificat ORA-06512: à ligne 10
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
i read that Oracle 11 have problems withe TLS 1.2 encrypted certificate so i tried with an Oracle 12 (Same ways to create Wallet and ACL)
I have the message:
Rapport d’erreur : ORA-29273: échec de demande HTTP ORA-06512: à
"SYS.UTL_HTTP", ligne 1130 ORA-29024: Echec de validation de
certificat ORA-06512: à ligne 10
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
Hope I was clear in my explanations
I try to know what to do to reach a secure site by a certificate based on the certificate
Thank you for your much needed support
Best regards
May be I am too late, but I caught same issues and found some answers.
Oracle Database earlier than 11.2.0.3 does not support SHA­2 SSL-standard, for example we cannot connect google from 11.2.0.1.
When use 12c - try to remove end certificate of chain from wallet. (I found this answer here: Using utl_http & wallets on 12c: certificate validation failure )
An Oracle wallet is in PKCS12 format. You can't use a PKCS7 formatted certificate inside an Oracle wallet. You want to use the "Base-64 encoded X.509 (.CER)" option instead. You must also get each certificate in the chain for the certificate of the site to which you want to connect. Those will be loaded into the Trusted Certificates section of the wallet.
There are good detailed instructions at this page:
UTL_HTTP and SSL(HTTPS) Using Oracle Wallets

How can a add acl rules for Oracle 11g to allow pl/sql upload file

In Oracle 11g ,the database has an Fine-Grained network access control list, so when i use pl/sql to upload a file to the ftp_server,it gives me a network access error.
The error information like this:
error at 1 line:
ORA-29260: network error:not connected
ORA-06512: at "SYS.UTL_TCP", line 212
ORA-06512: at "SYS.UTL_TCP", line 432
ORA-06512: at "SCOTT.FTP", line 413
ORA-24247: Network access rejected by acl
ORA-06512: at "SCOTT.FTP", line 491
ORA-06512: at line 6
I want to know how can i do about creating acl rules so that i can get the privilege.
Thanks
Here's a tutorial about ACL in Oracle.

error: 553 sorry, that domain isn't in my list of allowed rcpthosts

I want send the email from oracle database.
So I did the following steps
#F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlmail.sql
#F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\prvtmail.plb
alter system set smtp_out_server = 'webmail.vilsoft.co.in:25' scope=both;
exec utl_mail.send(sender=> 'Id1#vilsoft.co.in',
recipients=>'Id2#vilsoft.co.in',
subject=>'test mail',message=>'hi');
PL/SQL procedure successfully completed.
So the mail is send to Destination Correctly.
But When I want to send the mail from one server to another server So i execute the following query
SQL> exec utl_mail.send(sender=> 'ID1#vilsoft.co.in',recipients=>'Id2#gmail.com',
subject=>'test mail',message=>'hi');
then following error occurs....
BEGIN utl_mail.send(sender=> 'ID1#vilsoft.co.in',recipients=>'Id2#gmail.com',
subject=>'test mail',message=>'hi');
END;
*
ERROR at line 1:
ORA-29279: SMTP permanent error: 553 sorry, that domain isn't in my list of
allowed rcpthosts (#5.7.1)
ORA-06512: at "SYS.UTL_SMTP", line 20
ORA-06512: at "SYS.UTL_SMTP", line 98
ORA-06512: at "SYS.UTL_SMTP", line 240
ORA-06512: at "SYS.UTL_MAIL", line 424
ORA-06512: at "SYS.UTL_MAIL", line 594
ORA-06512: at line 1
So Please help me to resolve this error ...
This is not an Oracle error per se - Oracle is simply reporting back an error it received from the mail system. The error message itself (SMTP 553) can mean several things, among them that your ISP does not allow unauthenticated sending of mail outside your domain, or that your local network security policy does not allow mail to be sent from your mail server to addresses in the gmail.com domain, or that the mail server you're sending to sees your domain or address on a blacklist. Talk to your ISP to verify.

Resources