Author: Oriol Rius

llibre: La Buena Suerte

Reading time: 2 – 4 minutes

labuenasuerte.jpg

Un dels llibres que em varen regalar aquest St. Jordi va ser La Buena Suerte (ISBN: 84-95787-55-5). El llibre esta força bé, de fet es fa una mica massa llarg per les poques coses que diu. Però la lectura és amena i ràpida en molt poc temps me l’he pogut acabar (lletra grossa i unes 100 i poque pàgines). El que volia no oblidar és els consells que dona per la bona sort. És important fixar-se en que no és el mateix la bona sort que la sort. Seria la moraleja del llibre, realment són bons consells així que no us els perdeu:

  • 1a regla: la sort no dura gaire temps perquè no depèn de tu. La bona sort la crea un mateix, per això dura sempre.
  • 2a regla: molts decideixen tenir bona sort, però pocs els que decideixen anar a buscar.
  • 3a regla: si ara no tens bona sort potser és perquè les circumstàncies són les de sempre. Perquè la bona sort arribi les circumstàncies han de canviar.
  • 4a regla: preparar circumstàncies per la bona sort no significa buscar només el benefici propi. Crear circumstàncies perquè els altres també hi guanyin atrau la bona sort.
  • 5a regla: Si deixes per demà la preparació de les circumstàncies, la bona sort potser no arribi mai. Crear circumstàncies requereix fer el primer pas… Fes-lo avui!
  • 6a regla: fins hi tot sota les circumstàncies aparenment necessaries, a vegades la bona sort no arriba. Busca en els petits detalls circumstàncies aparenment innecessaries…, però imprescindibles!
  • 7a regla: als que només creuen en l’atzar crear circumstàncies els resulta absurd. Als que es dediquen a crear circumstàncies l’atzar no els preocupa.
  • 8a regla: ningú pot vendre sort. La bona sort no es ben. Desconfia dels que venen sort.
  • 9a regla: quan ja hagis creat totes les circumstàncies tingues paciència, no abandonis. Perquè la bona sort arribi has de confiar.
  • 10a regla: crear bona sort és preparar les circumstàncies a l’oportunitat. Per+ò l’oportunitat no és qüestió de sort o atzar, sempre hi és.

Una bona sintesis de les regles: crear bona sort és crear circumstàncies. Si voleu passar una estona agradable i aprendre quatre cosetes quí us queda la referència del llibre.

mailgateway: postfix+amavisd+clamav+spamassassin+sasl

Reading time: 3 – 5 minutes

Algunes empreses disposen de servidors de correu amb infraestructures internes realment complexes i que seguint la màxima de la informàtica el millor que podem fer és: si alguna cosa va no la toquis. El problema és que sovint aquestes estructures tan complexes no disposen de filtres de correu mailiciós. O sigui, no són capaces de passar antivirus al correu, filtrar l’spam i controlar altres enviaments maliciosos de correu. A més intentar afegir un software dins el propi servidor que ens fassi aquestes funcions sobre l’Mail Transport Agent (MTA) que ja tenim corrent és un risc innecessari i poc rentable moltes vegades.

diagrama-xarxa.png

Una solució que s’usa sovint és afegir un servidor només per filtrar el correu que entre i surt de l’empresa i intentar eliminar amb aquest mail-gateway tots els correus no dessitjats. Bàsicament doncs el que fem és col·locar l’SMTP (Simple Mail Transport Protocol) del mail-gateway com a porta d’entrada del correu extern. Després modifiquem el servidor intern de correu perquè tots els correus que hagi d’enviar cap a fora ho fassi a través del mail-gateway. O sigui, posem com a servidor de relay fix del servidor intern la direcció del MTA del gateway.

Amb aquest escenari els usuaris no han de canviar res de res, ja que només estem intervenint el port 25/tcp, o sigui, l’SMTP. A més al servidor intern de correu podem crear una compte de gestió de correo mailiciós, per exemple mailgateway@exemple.com (sent exemple.com el nostre domini). En aquest compte li creem dues carpetes una que es digui spam i l’altre que es digui ham. El que farem és sincronitzar el correu d’aquestes comptes amb una carpeta del mail-gateway (si les comptes són IMAP és bona idea sincronitzar-les amb l’offlineimap). Quan tinguem aquests correus al mail-gateway li direm als filtres bayessians de l’antispam que aprenguin com és el correu maliciós que no és capaç de filtrar i com és el correu que ha filtrat i que era legítim.

Aquesta compte de correu (mailgateway@exemple.com) que hem creat al servidor intern, la podem configurar com a compte de correu secundaria a un administrador de la xarxa. Així aquest podrà gestionar el manteniment sense haver de tocar el mail-gateway. En cas de que hi hagi algún usuari de la xarxa que vulgui localitzar un correu que s’ha filtrat l’administrador ho podrà fer des d’aquesta compte.

A més pels usuaris que estan fora de l’empresa, delegacions o d’altres similars ens pot interessar autenticar l’SMTP per tal de que aquests usuaris puguin usar l’SMTP del mailgateway per enviar correu. Així doncs, aprofitarem el servei d’IMAP (Internet Message Access Protocol) del servidor intern per validar l’autenticació en l’SMTP. Sona una mica extrany però el mètode és ben senzill. Es tracta d’aprofitar la compte l’usuari i clau que tenen els usuaris en el servidor IMAP intern, llavors es configura el MUA perquè usi aquestes dades com a informació per autenticar l’SMTP i el servidor d’MTA quan rep una autenticació via SMTP el que fa és obrir una connexió IMAP contra el servidor intern i provar l’usuari i clau que el client l’hi ha enviat a l’SMTP si això és correcte l’MTA permet enviar correu al MUA amb l’origen i destí que vulgui.

La documentació d’aquest projecte la podeu trobar al wiki:

mail-gateway_amb_amavisd-new

Tenir-la al wiki em permet anar-a millorant i esta sempre localitzada.

Si teniu alguna cosa que no esta clara, petició o demanda del tipus que sigui sobre aquesta documentació podeu penjar els comentaris en aquest post.

La comanda EHLO (del SMTP) no funciona en remot amb un Postfix

Reading time: 2 – 2 minutes

Just el problema que descric al títol m’ha fet perdre una bona estona aquest matí, de fet, m’ha fet anar de cul. M’estava tornant boig connectava al port 25 des de dintre de la LAN:

$ telnet IP_XARXA_LOCAL 25
Trying IP_XARXA_LOCAL...
Connected to IP_XARXA_LOCAL.
Escape character is '^]'.
220 ESMTP
ehlo prova
250-nom_servidor
250-PIPELINING
250-SIZE 20480000
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.

Si connectava des d’una IP de fora de la xarxa local:

$ telnet IP_PUBLICA 25
Trying IP_PUBLICA...
Connected to IP_PUBLICA.
Escape character is '^]'.
220 ******************
ehlo prova
502 Error: command not implemented
quit
221 Bye
Connection closed by foreign host.

M’he repassat tropocientes vegades la documentació del postfix a veure quina opció era la que feia comportar al servidor SMTP de forma diferent si estava en una IP de la xarxa local o una IP externa a la xarxa. Però no he trobat res de res, al final he trobat en un fòrum la inspiració divina. El problema era del coi de Cisco PIX que tenia entremig. El molt cabron m’estava filtrant la connexió!!!

Així que m’he hagut de connectar al PIX i dir-li que deixes de tractar el tràfic del port 25 com a tràfic SMTP, perquè no l’hi apliqués cap filtre:

pix # show fixup
fixup protocol dns maximum-length 512
fixup protocol ftp 21
fixup protocol h323 h225 1720
fixup protocol h323 ras 1718-1719
fixup protocol http 80
fixup protocol rsh 514
fixup protocol rtsp 554
fixup protocol sip 5060
fixup protocol sip udp 5060
fixup protocol skinny 2000
fixup protocol smtp 25
fixup protocol sqlnet 1521
fixup protocol tftp 69
pix # conf te
pix(config)# no fixup protocol smtp 25

Només amb aquest tonteria ja podia saludar al postfix (servidor SMTP) amb la comanda EHLO que em permet cursar autenticacions i d’altres comandes avançades de l’SMTP (ESMTP).

Boot-up Services Ubuntu (ncurses)

Reading time: < 1 minute

Una eina xorra basada en ncurses per Ubuntu per poder controlar quins serveis s’inicien al re-iniciar la màquina. De fet, tothom que treballa en X’s parla del BUM però és clar en mode text no trobava res i per no oblidar el tema el paquet ideal és el sysv-rc-conf.

No és res de l’altre dijous però fa el que ha de fer.

En setmanes com aquesta…

Reading time: < 1 minute

… me’n recordo de lo bé que vivia a Panamà.

bocas-del-toro-panama.jpg

Quines ganes que tinc de tornar!

Ampliació de RAM al portàtil i el Murci se’n va Xina 2 mesos

Reading time: 1 – 2 minutes

Què té que veure una cosa amb l’altre? doncs res de res. Simplement dues coses que varen passar ahir de les moltes. Va ser un dia molt intens ahir sort que no tots són així. Diguem que de les 6.00 a les 0.00 va ser un no parar. Com que no tot es pot explicar per un blog, aquí teniu dues coses importants.

ram400300.jpg

Finalment he decidit ampliar la memòria del portàtil a 1Gb de RAM. Així doncs, ara tinc una bona màquina amb 1Gb de RAM i 100Gb de disc dur. Que amb els 1.2GHz del Pentium Mobile això va prou bé.

Ara la notícia de veritat, ahir a la Daphne li van donar la beca per anar dos mesos a estudiar xinès a Pequin durant dos mesos aquest estiu. Així doncs, em quedaré dos mesos solet :'( però bueno diguem que per una bona causa i així podré anar-la a veure a Xina i m’escapo uns quants dies de tan treballar.

cookbook: importar projecte de symfony al subversion

Reading time: 2 – 2 minutes

Petit cookbook de com hem d’importar un projecte que estiguem programant amb el framework symfony. Primer creem el directori del repositori on volem pujar el projecte, anem al directori del projecte. Borrem els directoris log i cache del qual no ens interessa mantenir un control de versions. I després importem el projecte.

svn mkdir -m "NOTA: Creem directori on hi posarem projecte" http://exemple.com/svn/repos/projecte/dev
cd directori_projecte_symfony
rm -rf log
rm -rf cache
svn import -m "NOTA: importem primera versio del projecte" . http://exemple.com/svn/repos/projecte/dev

Ara movem el directori actual del projecte i en creem un de nou, que ja tindrà control de versions. Fem un checkout (co) de la versió que em importat abans i defenim que els directoris log i cache no s’importaràn mai quan fem un commit (ci). Després creem els directoris en qüestió i els assignem un propietari igual al del procés d’apache perquè aquest el pugui escriure-hi mentre esta execucutant el nostre projecte symfony.

mv directori_projecte_symfony directori_projecte_symfony.bak
mkdir directori_projecte_symfony_amb_svn
cd directori_projecte_symfony_amb_svn
svn co http://exemple.com/svn/repos/projecte/dev .
svn propedit svn:ignore .
log
cache
mkdir log
mkdir cache
chown apache:apache log
chown apache:apache cache

PHP5: passant objectes com a paràmetre en una crida SOAP

Reading time: 2 – 3 minutes

Update: LES CONCLUSIONS D’AQUEST ARTICLE SÓN ERRONEES MIREU: PHP5: passant i tornant objectes com a paràmetre en una crida SOAP (Part II)

Treballant en un projecte que estem programant en PHP5 em va sortir aquest dubte, sobretot després de llegir les limitacions dels servidors SOAP que implementa PHP5. El tema finalment té una resposta positiva: SI, PERO…. A continuació us poso un exemple de com funciona aquest tema amb el PHP5 i quines limitacions té.

Definim el servidor SOAP que com podeu veure és senzillissim, l’únic que fa el servidor és re-enviar el mateix objecte que ha rebut.

<php
class SOAPservice {
        function peticion($per) {
                return $per;
  }
}
$server = new SoapServer("server.wsdl");
$server->setClass("SOAPservice");
$server->handle();
?>

A continuació podeu veure el codi del client, és un codi molt senzill de només dues línies. Com podem veure primer definim la classe persona i abans de cridar el client SOAP instanciem la classe, després usem aquest objecte com a paràmetre a la crida SOAP. Capturem l’objecte que ens retorna el servidor SOAP i a continuació mostrem el seu contingut amb l’ordre print_r.

<?php
/*
 definim classe persona
*/
class persona {
        public $nom;
        function setNom($nom) {
                $this->nom=$nom;
        }
        function setCognom($cognom) {
                $this->cognom=$cognom;
        }
        function getNom() {
                return $this->nom;
        }
        function getCognom() {
                return $this->cognom;
        }
}
/*
 creem objecte tipus persona
*/
$myPersona=new persona;
$myPersona->setNom("el_nom");
$myPersona->setCognom("el_cognom");
/*
 fem una crida SOAP amb un objecte com a parametre
*/
$client = new SoapClient("server.wsdl");
$myObj=$client->peticion($myPersona);
/*
 mostrem objecte generic que retorna la crida SOAP
*/
print_r($myObj);
?>

Si mirem la sortida que ens dona quan cridem el client podem veure que l’objecte que torna no és del tipus persona sinó d’un tipus intern del PHP5 anomenat stdClass. Aquest objecte només disposa dels atributs públics. No podem accedir als atributs privats o protegits i hem perdut tots els mètodes siguin del tipus que siguin.

stdClass Object
(
    [nom] => el_nom
    [cognom] => el_cognom
)

Això és tot el que he pogut aconseguir, no és gaire però com a mínim a mi m’ha estat suficient.

Envinat SMS amb el mòbil des del Linux

Reading time: 2 – 2 minutes

Screenshot-KMobileTools.png

Fa molt de temps que buscava una eina que em permetés fer aquesta xorrada amb el Siemens S45, havia trobat diversos programes que ho feien en mode text, però jo volia alguna cosa molt més trivial via finestres. Algo que no hagués de configurar gaire i que sempre ho tingués a mà quan haig d’escriure un SMS que fa una mandra increible amb el carai de teclat de mòbil.

Ahir tot llegint el bloglines em vaig trobar una eina que malgrat estar basada en KDE esta prou bé: kmobiletools. A més de poder llegir i enviar SMS amb el mòbil. També permet despenjar, penjar i trucar amb mòbil. A més aprofitant que tan el portàtil com el mòbil tenen bluetooh he configurat l’rfcomm per establir un ellaç serie i així no he de tenir cap cable pel mig que em molesti.

També s’ha de dir que el programa no és res de l’altre món i que l’eina de gestió de missatges és una mica ‘cutre’, per no parlar de l’eina de gestió de l’agenda que fa el que pot pobreta. Però algo és algo. A més és força lleuger el programa i com que ja havia de tenir les llibreries QT i les KDE carregades per altres temes, tampoc ve d’aquí el desgast de memòria.

digi AnywhereUSB (USB over IP)

Reading time: 1 – 2 minutes

Fa un temps vaig publicar un article que parlava justament d’un producte igual que el que us parlaré en aquest article. En l’article en qüestió em queixava que només suportava dispositius 1.1 el producte de digi suporta també USB 2.0 tot i que com que la conversió a IP la fa sobre una xarxa a 100Mbps també limita la seva velocitat a 12Mbps (velocitat màxima del USB 1.1), però malgrat tenir el mateix problema que el producte que us comentava aquest dispositiu és molt més professional, tan en l’acabat com en les altres prestacions així que jo diria és el millor servidor IP USB que he trobat fins ara.

anywhereusb.jpg

Un parell de documents (.pdf) per completar l’article, si us interessa el tema us aniran bé:

Scroll to Top