viernes, 17 de julio de 2015

UTL_MAIL.SEND, Enviar correos desde sql por medio de procedures

Para enviar correos por medio de procedures en Oracle, es necesario contar con la Utileria de Mail (UTL_MAIL). Es importante definir un servidor de correos previamente configurado, preguntar con Sistema Operativo o en su defecto anexar la opcion -v en el comando mailx para ejecutar el 'verbose' e identificar cual es el servidor de correos.

-->Revisar cual es nuestro servidor de correos

Al ejecutar el comando mailx con la opcion -v nos mostrara una salida como la siguiente:


nombre-servidor:oracle:PATITO: /opt/oracle $ mailx -v -s hola ltorres@algo.com.mx
.
EOT
nombre-servidor:oracle:PATITO: /opt/oracle $ ltorres@algo.com.mx... Connecting to [127.0.0.1] via relay...
220 nombre-servidor.empresa.gob.mx ESMTP Sendmail 8.14.5+Sun/8.14.5; Fri, 17 Jul 2015 09:48:20 -0500 (CDT)
>>> EHLO nombre-servidor.empresa.gob.mx
250-nombre-servidor.empresa.gob.mx Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<oracle@nombre-servidor.empresa.gob.mx> SIZE=59
250 2.1.0 <oracle@nombre-servidor.empresa.gob.mx>... Sender ok
>>> RCPT To:<ltorres@algo.com.mx>
>>> DATA
250 2.1.5 <ltorres@algo.com.mx>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
050 <ltorres@algo.com.mx>... Connecting to mx.algo.com.mx. via esmtp...
050 220 MX.algo.com.mx Microsoft ESMTP MAIL Service ready at Fri, 17 Jul 2015 09:40:19 -0500
050 >>> EHLO nombre-servidor.empresa.gob.mx
050 250-MX.algo.com.mx Hello [160.41.90.120]
050 250-SIZE
050 250-PIPELINING
050 250-DSN
050 250-ENHANCEDSTATUSCODES
050 250-STARTTLS
050 250-X-ANONYMOUSTLS
050 250-AUTH NTLM
050 250-X-EXPS GSSAPI NTLM
050 250-8BITMIME
050 250-BINARYMIME
050 250-CHUNKING
050 250-XEXCH50
050 250-XRDST
050 250 XSHADOW
050 >>> STARTTLS
050 220 2.0.0 SMTP server ready
050 >>> EHLO nombre-servidor.empresa.gob.mx
050 250-MX.algo.com.mx Hello [160.41.90.120]
050 250-SIZE
050 250-PIPELINING
050 250-DSN
050 250-ENHANCEDSTATUSCODES
050 250-AUTH NTLM LOGIN
050 250-X-EXPS GSSAPI NTLM
050 250-8BITMIME
050 250-BINARYMIME
050 250-CHUNKING
050 250-XEXCH50
050 250-XRDST
050 250 XSHADOW
050 >>> MAIL From:<oracle@nombre-servidor.empresa.gob.mx> SIZE=387
050 250 2.1.0 Sender OK
050 >>> RCPT To:<ltorres@algo.com.mx>
050 >>> DATA
050 250 2.1.5 Recipient OK
050 354 Start mail input; end with <CRLF>.<CRLF>
050 >>> .
050 250 2.6.0 <201507171448.t6HEmJmT021843@nombre-servidor.empresa.gob.mx> [InternalId=1734250] Queued mail for delivery
050 <ltorres@algo.com.mx>... Sent (<201507171448.t6HEmJmT021843@nombre-servidor.empresa.gob.mx> [InternalId=1734250] Queued mail for delivery)
250 2.0.0 t6HEmKOt021844 Message accepted for delivery
ltorres@algo.com.mx... Sent (t6HEmKOt021844 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 nombre-servidor.empresa.gob.mx closing connection


El nombre del servidor de correo aparece como MX.algo.com.mx


--->Revisar si esta habilitada la Utileria de Mail

--Ir a sql y ejecutar lo siguiente

desc UTL_MAIL

Si aparece que no existe el objeto entonces:


-->Instalar las siguientes librerias

--Ir a sql y ejecutar lo siguiente

@?/rdbms/admin/utlmail.sql
@?/rdbms/admin/prvtmail.plb


--->Anexar el servidor SMTP con el servidor de correos antes mancionado y el puerto default 25

ALTER SYSTEM SET smtp_out_server='MX.algo.com.mx:25' SCOPE=BOTH;


--->El usuario dueño del procedure necesita permisos sobre la Utileria de Mail (UTL_MAIL)

GRANT execute ON utl_mail TO USUARIO;


--->Ejemplos de como mandar mensajes con esta Utileria de Mail

Ejemplo 1

exec UTL_MAIL.SEND(sender=>'Seguridad@empresa.com', recipients=>'ltorres@algo.com.mx', subject=>'Testmail', message => 'Hola');


Ejemplo 2

create or replace PROCEDURE ltorresin
IS
    mailhost    VARCHAR2(64) := 'MX.algo.mx';
    sender      VARCHAR2(64) := 'Seguridad@empresa.com';
    recipient   VARCHAR2(64) := ''ltorres@algo.com.mx';
    mail_conn  utl_smtp.connection;
BEGIN
    mail_conn := utl_smtp.open_connection(mailhost,25);
    utl_smtp.helo(mail_conn, mailhost);
    utl_smtp.mail(mail_conn, sender);
    utl_smtp.rcpt(mail_conn, recipient);
    utl_smtp.open_data(mail_conn);
    utl_smtp.write_data(mail_conn, 'This is a test message.' || chr(20));
    utl_smtp.write_data(mail_conn, 'This is line 2.' || chr(20));
    utl_smtp.close_data(mail_conn);
    utl_smtp.quit(mail_conn);
    
END;
/


Ejemplo 3


begin
UTL_MAIL.send(
sender => 'Seguridad@empresa.com',
recipients => 'ltorres@algo.com.mx',
subject => 'Advertencia',
message => 'Este es un mensaje de prueba');
end;
/


miércoles, 1 de julio de 2015

Instalar Apache en solaris/Linux para crear paginas web


Para crear paginas web dentro de un entorno Solaris o Linux (Redhat 6.4 Santiago) es necesario instalar y habilitar Apache, para ello hacemos lo siguiente:

***ESTE EJEMPLO SE REALIZO DESDE MAQUINAS VIRTUALES SOLARIS/REDHAT  Y LAS PAGINAS WEB SE ABRIERON DESDE LA PC FISICA CON WINDOWS***


Instalacion en Solaris

-->Agregar el paquete
pkgadd -d /cdrom/sol_10_113_x86/Solaris_10/Product  SUNWapchr SUNWapchu SUNWapchd

-->Deshabilitar el START y STOP del run control que se instala como parte del SUNWapchr package
Listar los scripts de runcontrol del Apache
Renombrar los scripts de runcontrol del Apache
Verificar que todos los scripts sean renombrados

ls -1 /etc/rc?.d/*apache

mv /etc/rc0.d/K16apache  /etc/rc0.d/k16apache
mv /etc/rc1.d/K16apache  /etc/rc1.d/k16apache
mv /etc/rc2.d/K16apache  /etc/rc2.d/k16apache
mv /etc/rc3.d/S50apache  /etc/rc3.d/s50apache
mv /etc/rcS.d/K16apache  /etc/rcS.d/k16apache


-->>copiar las carpetas con otro nombre

cp -p /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf

cp -p /etc/apache/httpd.conf-example /etc/apache/httpd.conf

-->>Para revisar estatus/iniciar/deshabilitar los servicios de http

svcs http
svcadm enable http
svcadm disable http


-->Agregar al /etc/hosts un nombre para la ip 127.0.0.1 y asi ingresar a firefox con ese nombre

127.0.0.1 lnxsgcpdev --por ejemplo

-->> o en su defecto

10.6.100.113     lnxsgcpdev.com      loghost


-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-


Instalacion en linux

-->Ingresar a la unidad de instalacion para ver los paquetes

[root@lnxsgcpdev Packages]# pwd
/mnt/cdrom/Packages


-->Agregar los siguientes paquetes

 rpm -ivh apr-1.3.9-5.el6_2.x86_64.rpm
 rpm -ivh apr-util-1.3.9-3.el6_0.1.x86_64.rpm
 rpm -ivh apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm
 rpm -ivh httpd-tools-2.2.15-26.el6.x86_64.rpm
 rpm -ivh httpd-2.2.15-26.el6.x86_64.rpm


-->Para habilitar los servicios de http

 chkconfig httpd on

 /etc/init.d/httpd start


 --->verificar el etc/hosts de linux y windows y agregar la linea del host 10.6.100.113     lnxsgcpdev.com      loghost

 [root@lnxsgcpdev Packages]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.6.100.113     lnxsgcpdev.com      loghost


En Windows


C:\Windows\System32\drivers\etc

Abrir el archivo hosts y editarlo



# localhost name resolution is handled within DNS itself.
# 127.0.0.1       localhost
# ::1             localhost
10.6.100.113        lnxsgcpdev.com


--->Ingresar desde el browser (Chrome,Firefox,etc)

http://lnxsgcpdev.com


--->Comentar las lineas del /etc/httpd/conf.d/welcome.conf

vi /etc/httpd/conf.d/welcome.conf

#
# This configuration file enables the default "Welcome"
# page if there is no default index page present for
# the root URL.  To disable the Welcome page, comment
# out all the lines below.
#
#<LocationMatch "^/+$">
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#</LocationMatch>
#
~


--->Agregar en /var/www/html una pagina web

[root@lnxsgcpdev html]# ls -ltrh
total 60K
-rw-r--r-- 1 root root 56K Jul  1 10:06 ichii.jpg
-rw-r--r-- 1 root root 674 Jul  1 10:07 some.html

--->EntraR desde el browser indicando la pagina que acabamos de agregar anteponiendo una "/"


http://lnxsgcpdev.com/some.html