Archivo

Entradas Etiquetadas ‘php’

OSX Postfix Relay – envio de correos usando OSX y Postfix

Lunes, 15 de febrero de 2010

Todo este lío comenzó cuando me tocó configurar a mi Mac Mini (la cual es mi servidor headless estos días) para que poder enviar correos desde PHP:

< ?php
$to = "josevnz@mydomain.com";
$subject = "Test from tepuyes server!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("

Message successfully sent!");
} else {
echo("

Message delivery failed...

");
}
?>

Odio a PHP. En Windows se puede especificar un servidor SMTP pero en UNIX este lenguaje utiliza Sendmail o lo que haya por debajo. Se puede utilizar Pear PHP mail pero eso implica que tengo que cambiar mi código.

Ahhh, nada como JavaMail para estos casos :D

Bueno, volviendo al tema que nos interesa, los correos nunca salían de la cola. Y es que mi proveedor de Internet, Cablevision, bloquea cualquier conexión a servidores de correo en los puertos 25 en un intento por detener el SPAM.

Intenté utilizar el servidor de correo que ellos sugieren (mail.optonline.net) pero este se quejaba que mi maquina no tenia un registro A en DNS que pudiera ser resuelto (sorpresa, es una máquina detrás del firewall). Traté de utilizar el servidor de correo de la compañia que hospeda a mi dominio en DNS usando autenticación, y para ello configuré lo siguiente en el archivo /etc/postfix/main.conf:

relayhost = smtpout.secureserver.net:3535
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_tls_CApath = /etc/postfix/certs
smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache
smtp_tls_session_cache_timeout = 3600s
smtp_tls_loglevel = 1
tls_random_source = dev:/dev/urandom

Y en el archivo /etc/postfix/sasl_passwd pusé mi usuario y clave con el cual voy a hacer el relay:


smtpout.secureserver.net: josevnz@mydomain.com:mycoolpassword

Necesitamos usar un certificado digital. La gente de Verisign ofrece uno el cual podemos bajar desde aqui: https://www.verisign.com/support/roots.html (en este caso yo lo copié en /private/tmp/roots.zip)

Luego un poco de carpintería ya que hay que decirle a Postfix que use los nuevos parámetros:


sudo mv /private/tmp/roots.zip /etc/postfix/certs
sudo unzip -j roots.zip
sudo openssl x509 -inform der -in thawte\ Primary\ Root\ CA\ -\ G2_ECC.cer -out thawte\ Primary\ Root\ CA\ -\ G2_ECC.pem
sudo c_rehash /etc/postfix/certs
sudo postmap /etc/postfix/sasl_passwd
sudo postfix stop
sudo postfix start

Sin embargo el servidor de ‘relay’ que decidí utilizar tiene problemas de DNS:

Tepuyes-Server:certs josevnz$ sudo mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
41D3C1201BB 348 Mon Feb 15 18:12:43 josevnz@Tepuyes-Server.local
(Host or domain name not found. Name service error for name=smtpout.secureserver.net type=MX: Host not found, try again)
josevnz@mydomain.com

¡Que vaina!. Sin darme por vencido decidí utilizar a Gmail como relay, cambiando lo siguiente en /etc/postfix/main.cf:

relayhost = smtp.gmail.com:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_tls_CApath = /etc/postfix/certs
smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache
smtp_tls_session_cache_timeout = 3600s
smtp_tls_loglevel = 1
tls_random_source = dev:/dev/urandom

Y además en etc/postfix/sasl_passwd:

smtp.gmail.com micuentaengmail@gmail.com:UltraSuperDuperPassword

Reiniciamos a Postfix una vez mas:

sudo postmap /etc/postfix/sasl_passwd
sudo postfix stop
sudo postfix start

Esto me permitió resolver el problema. Comparto este truco el cual funciona al menos en OSX Leopard y ahora me permite mandar correos desde PHP :)

php , , ,

Resumen de CommunityEastOne Dia 1

Miércoles, 18 de marzo de 2009

Es una de las pocas excepciones en las cuales sólo puedo decir que no sé por donde empezar. ¡WOW!; Este año me decidí a tomar videos sobre mis experiencias en vez de tomar fotos, al mismo tiempo que escribía casi en tiempo real sobre la conferencia en Facebook, Twitter y el blog. Debo decir que es la primera vez que me quedo sin baterías por andar jodiendo la paciencia ;)

El énfasis de la conferencia fué Cloud Computing; Sun definitivamente está apostando a que este va a ser el siguiente gran boom (junto con otras compañías como Amazon.com) y durante el evento mostraron muchas de sus herramientas de desarrollo, administración y virtualización (en el video pueden ver a David Douglas, Senior Vice President, Cloud Computing and Developer Plarforms quien abrió el evento.):

Me encanto ver compañias como ZAmanda, las cuales han llevado el famoso programa de backup Amanda al mundo enpresarial y ahora también soportan el paradigma de respaldos en Cloud Computing.

No pude ir a todas las charlas (si quieren ver los videos revizen mi grupo en Flickr); Por razones de tiempo tuve que escoger entre las que más me interesaban, así que aquí les doy un pequeño resumen:

Moving Forward: High-Performance Application Development in a Multicore World: Michael Marden, de AMD junto con Patrick Leonard (Rogue Wave), David Maples (Allinea Software) y Duncan Mc Callum (Cilk Arts) se encargaron de explicar las últimas tendencias en cuanto al uso de procesadores multicore y como nos afecta a los desarrolladores.

Si bien no hubo demostraciones de productos ni código estuvo interesante en cuanto a las explicaciones de los problemas actuales y sus posibles soluciones. Pero eso si, preparese para ver más cores por procesador (hasta 48 en dos años) y siga el siguiente consejo: Si no tiene que utilizar multithreading entonces no lo haga :)

Les recomiendo el sitio de desarrolladores de AMD el cual tiene varios documentos y herramientas al respecto de este tema.

Sigo con la descripción, no hay más vídeos porque mi camara se quedó sin baterías :(


Cloud Computing for the Enterprise Software Developers:
Aburridisima, sólo mostraron herramientas y la teoría detrás del funcionamiento de la plataforma que mostraron fué floja. Parecía más un “informercial” que otra cosa. Perdí una hora de mi vida allí :(

Beyond Impossible: How Jruby Evolved the Java Platform
: La mejor charla del día en mi opinión. El trabajo que el desarrollador Charles Nutter de Sun y sus compañeros hicieron con JRuby es admirable. No sólo reprodujeron a C Ruby en Java, sino que en el proceso le agregaron más funcionalidad a la máquina virtual de Java (versión 7). Nos demostraron como JRuby es más rápido que C Ruby 1.9 en varios demos (uno de fractales en particular), además de las historias heroicas de ciertos desarrolladores, ¡como el que portó la librería de expresiones regulares en C de Ruby (JAnigurama) en sólo un mes!

Yo pregunté cual es la estrategia de Sun a largo plazo con todos estos lenguajes; La respuesta es soportar a aquellos que tengan las comunidades más grandes, pero en teoría todos los lenguajes. Este es el legado de Java, aunque el lenguaje muera este va a seguir con implementaciones de otros lenguajes en la máquina virtual.

Si quiere saber más sobre Jruby y el progreso de otros lenguajes dinamicos en la máquina virtual de Java (como Jython, Groovy, Scala) entonces visite el blog de Chales Nutter

Building an Atom-Enabled, Map-Driven, Location-Aware, Web-Centric Mobile Application with POJOs and Android: Verga, leer el titulo cansa imagine escribirlo ;) . Sin embargo la charla estuvo super interesante ya que el autor (Tim Bray, un experto en Cloud Computing) nos mostró una aplicación que escribió para Android en sólo 4 días (el programa, llamado storyteller, permite guardar historias en el telefono, haciendo anotaciones de texto y voz).

Datos curiosos de esta charla:

  • Microsoft es el jugador más debil del mercado móvil, con sólo %3 de todo la torta. Symbian es el mostruo con más de %27
  • Pese a la recesión mundial y a que menos usuarios compraron celulares el trimestre pasado comparado con el 2007, el mercado creció en un %5. ¡Carajo, este es el único mercado a prueba de recesión en el mundo!
  • El Java de Android no es realmente Java. Por ejemplo, este no puede correr JRuby. Por otro lado, tener root shell en el telefono de desarrollador simplemente no tiene precio :) )
  • Mientras probaba la aplicación, el programa se fué a un sitio que tenía la palabra “f*ck” en todos los colores y tamaños. Tim lo manejó muy bien diciendo que nunca nos ibamos a olvidar de su charla :)

Fué interesante ver como funciona el modelo de programación de aplicaciones en Android (les recomiendo el blog androiddiary.com para más detalles)

Building a Twitter Analisys Tool from Scratch Using PHP, MySQL, Yahoo UI and Netbeans: Eso es lo que yo llamo una demostración en caliente. Justin Bolter, de Sun, se lanzó de cabeza y escribió esa aplicación de memoria en una hora. Paso a paso demostró un dominio increíble de Netbeans (y sus capacidades) y al final nos dejó loco con un programa que mostraba los twitters (y sus detalles) usando un motor de búsqueda el cual guardaba sus datos en MySQL. Demasiado bueno.

JavaFX: The New Platform for Rich Internet Applications: Fué decepcionante ya que Chuk-Munn Lee de Sun sólo leyó la presentación sin detenerse mucho en los ejemplos con código (y Dios, si habia código). Pudo haber sido mejor aunque se nota que Lee sabia de lo que estaba hablando.

En general hubo muchos participantes de otros países (yo conté un viaje de gente de Japón, Alemania y Rusia por ejemplo. Sólo conté dos hispanos, yo y un Mejicano) y aproveche para preguntar sobre algunas cosas interesantes:

  • La adquisión de SUN por parte de IBM: Nadie quiso hablar de eso. Sin embargo el precio de SUN subió hoy de $4 a $8 :)
  • Open Storage:Mi grupo tiene un apetito inmenso por almacenamiento y Sun procalama que sus Storage Servers 7000 cuestan %75 menos que la competencia ya que estan basados en Open Solaris, y utilizan componentes comunes (han estado en venta desde Noviembre del año pasado, estoy averiguando a ver que tal)
  • Sun está alejandose de Java.net y en cambio está proponiendo una nueva plataforma, la cual va a soportar Cloud Computing: Kenai.com. Por haber asistido al evento y por tener un proyecto en java.net me dieron una cuenta, ya les contaré como me fué con esta nueva iniciativa de SUN en el mundo OpenSource la cual compite con SourceForge
  • Bueno, mañana me toca el dia 2 del evento, llamado “Deep Dive“. Son los tutoriales pagos en tecnologías OpenSource, me voy a lanzar un curso completo de un día sobre MySQL. Ya les comentaré como me fué ;)

Veneblogs: , , , , , , , , , , , ,

Blogalaxia: , , , , , , , , , , , ,

To2blogs: , , , , , , , , , , , ,

Technorati: , , , , , , , , , , , ,

Del.icio.us: , , , , , , , , , , , ,

comics, java, kodegeek, linux, opensource, programación, ruby , , , , , , , , , , , , ,