Kiran Dalvi
- 08 Dec, 2023
- 0 Comments
- 1 Min Read
ORA-24247: Network Access Denied By Access Control List (ACL)
Problem :
While sending mail using utl_mail or utl_stmp , you may get access denied error:
begin
utl_mail.send(sender => ‘info@learnomate.org’,
recipients => ‘info@learnomate.org’,
subject => ‘MAIL from ADMIn of learnomate’,
message => ‘Do visit learnomate’);
end;
/
*
ERROR at line 1:
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at “SYS.UTL_MAIL”, line 662
ORA-06512: at “SYS.UTL_MAIL”, line 679
ORA-06512: at line 2
Solution:
From 11g onward, to send mail using UTL_MAIL or UTL_SMTP , ACL need to be created in the database.Set the SMTP_OUT_SERVER parameter
1 2 3 | SQL> alter system set smtp_out_server= 'mailhost.learnomate.com' scope=both; System altered. |
Now create ACLS
Suppose the user APPUSER want to send mail from procedure.1 2 3 4 5 6 7 8 | --- creating ACL as below exec DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( 'send_mail.xml' , 'Allow mail to be send' , 'APPUSER' , TRUE, 'connect' ); commit; ----Grant the connect and resource privilege as below exec DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( 'send_mail.xml' , 'APPUSER' ,TRUE, 'connect' ); exec DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( 'send_mail.xml' , 'APPUSER' ,TRUE, 'resolve' ); exec DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( 'send_mail.xml' , '*' ,25); commit; |
Now try to send mail:
1 2 3 4 5 6 7 8 9 10 11 12 | SQL> conn appuser Enter password: Connected. SQL> begin utl_mail.send(sender => 'info@learnomate.org' , recipients => 'info@learnomate.org' , subject => 'MAIL from ADMIn of learnomate' , message => 'Do visit learnomate' ); end ; / 2 3 4 5 6 7 PL/SQL procedure successfully completed. |