Sunday February 17, 2008
Saturday February 16, 2008
T4xi
if (function_exists('social_bookmark')) { social_bookmark(); } ?>Saturday February 2, 2008
Ma fille, mon ange
if (function_exists('social_bookmark')) { social_bookmark(); } ?>Tuesday January 29, 2008
1… 2… 3… Go !!!
Saturday January 19, 2008
Fetchmail + Procmail + Cyrus + SASL + LDAP + Roundcube + GetLive
As many of you, I have a couple years of experience of using Internet and as such I have created different email accounts on different websites : not because I needed it, but mostly because each provider came out with a great benefit compared to the others. Funny thing, the last email account I have is the one from my Internet service provider which doesn’t propose a webmail. Buuuuuuuuuu. You must admit it is not very convenient when you are away from home or work. So here is my need for a solution to retrieve all my emails from Yahoo, Gmail, Free, etc. and serve them with IMAP to either Thunderbird or a Webmail.
Before going into the details of configuring each services, few things to know about my current setup :
- I run Debian Sarge;
- Postfix is running as a relay host to my ISP SMTP server;
- OpenLDAP stores the addressbook and my user account,
- Apache, MySQL, PHP and its extensions (ldap, mysql) are already installed.
Fetchmail
Install fetchmail :
# apt-get install fetchmail
Edit /etc/default/fetchmail to start it as a daemon :
START_DAEMON=yes
Create /etc/fetchmailrc :
poll pop.example.com with proto pop3 user 'john.doe' there with password 'passwd' is 'john' here keep mda 'sudo /usr/bin/procmail -m /etc/procmailrc' poll pop.gmail.com with proto pop3 port 995 user 'john.doe' there with password 'password' is 'john' here ssl keep mda 'sudo /usr/bin/procmail -m /etc/procmailrc'
The reason I use sudo to execute procmail is that the fetchmail daemon runs as user fetchmail, and as the fetchmail user I wouldn’t be able to deliver the email.
Edit /etc/sudoers to add this line at the end :
fetchmail ALL=NOPASSWD: /usr/bin/procmail
Start fetchmail :
# invoke-rc.d fetchmail restart
Procmail
Install procmail :
# apt-get install procmail
Create /etc/procmailrc :
SHELL="/bin/sh" DELIVERMAIL="/usr/sbin/cyrdeliver" USER="john" IMAP="$DELIVERMAIL -a $USER -m user/$USER" LOGFILE="/var/log/mail/$USER.log" LOGABSTRACT="all" VERBOSE=YES :0 |$IMAP
This is a quick and dirty version of /etc/procmailrc. Improvements have to be made to turn it system-wide (for all the users) and add some filtering and anti-spam rules.
Cyrus + SASL
Install Cyrus :
# apt-get install cyrus-imapd-2.2 cyrus-admin-2.2 cyrus-clients-2.2 sasl2-bin
Edit /etc/imapd.conf :
configdirectory: /var/lib/cyrus partition-default: /var/spool/cyrus admins: cyrus administrator sievedir: /var/lib/cyrus/sieve sendmail: /usr/sbin/sendmail hashimapspool: true lmtpsocket: {configdirectory}/socket/lmtp sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN unixhierarchysep: yes
The user cyrus is a /etc/passwd user. administrator is an LDAP user. lmtpsocket is the same path as the one specified in /etc/cyrus.conf :
lmtpunix cmd="lmtpd" listen="/var/lib/cyrus/socket/lmtp" prefork=0 maxchild=20
Disable POP3 server :
In /etc/cyrus.conf and the SERVICES section, comment the pop3 line as follows :
# pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
Create /etc/saslauthd.conf with :
ldap_servers: ldap://127.0.0.1/ ldap_search_base: dc=example,dc=com
In /etc/default/saslauthd, set the authentication mechanism :
MECHANISMS="ldap"
Start saslauthd :
# invoke-rc.d saslauthd start
Test your ldap connection with :
# testsaslauthd -u john -p password 0: OK "Success."
Start cyrus :
# invoke-rc.d cyrus start
We now have to create mailboxes and give users their rights. We have to log in Cyrus with an LDAP account set as Admins in the cyrus config file (administrator). Once in the cyrus prompt, type help to get the list of command and their arguments :
# su - administrator $ cyradm localhost IMAP Password: password localhost.localdomain> cm user/john localhost.localdomain> lm user/john (\HasNoChildren) localhost.localdomain> sam user/john john all localhost.localdomain> lam user/john john lrswipcda localhost.localdomain> exit $
I didn’t need it but you can also fix your quota at this step.
Now emails should be ending up in /var/spool/cyrus/j/user/john/ in file named 1. 2. 3. etc.
RoundCube
Install roundcube :
# apt-get install roundcube
Edit /etc/roundcube/apache.conf to uncomment :
Alias /roundcube /var/lib/roundcube
Reload Apache :
# invoke-rc.d apache2 reload
Point your browser to http://localhost/roundcube to make sure you can access Roundcube login page.
Edit /etc/roundcube/main.inc.php and change this option to connect RoundCube to your IMAP server (authentication and emails) :
$rcmail_config['default_host'] = "imap://localhost:143";
Edit /etc/roundcube/main.inc.php and change those options to connect RoundCube to your LDAP server (addressbook) :
$rcmail_config['ldap_public']['example.com'] = array( 'name' => 'example.com', 'hosts' => array('ldap.example.com'), 'port' => 389, 'base_dn' => 'ou=addressbook,dc=example,dc=com', 'bind_dn' => '', 'bind_pass' => '', 'ldap_version' => '3', // using LDAPv3 'search_fields' => array('mail', 'cn'), // fields to search in 'name_field' => 'cn', // this field represents the contact's name 'email_field' => 'mail', // this field represents the contact's e-mail 'surname_field' => 'sn', // this field represents the contact's last name 'firstname_field' => 'givenName', // this field represents the contact's first name 'scope' => 'sub', // search mode: sub|base|list 'filter' => '', // used for basic listing (if not empty) and will be &'d with search queries. ex: (status=act) 'fuzzy_search' => true); // server allows wildcard search
Now try logging in to RoundCube with john/password and click on Addressbook. “example.com” should appear in the Groups list and with the search box, you should be able to get your LDAP entries.
Hotmail/Live account
When I installed GetLIve, it wasn’t available on Debian repositories, so I have downloaded it from Sourceforge: Download GetLive.
Decompress the archives :
tar zxf GetLive_0_56.tgz
Organize the differents files :
mv GetLive_0_56/*.pl /usr/local/bin/. mv GetLive_0_56/Manual /usr/local/doc mv GetLive_0_56.tgz /usr/local/src/.
Create a repository to store the list of downloaded email ID :
mkdir /var/lib/getlive
Create /etc/getliverc :
UserName = jdoe Password = password Downloaded = /var/lib/getlive/downloaded.data Processor = grep -v 'From ' | /usr/bin/procmail -m /etc/procmailrc Folder = INBOX MarkRead = YES
The reason of the grep is explained in the Troubleshooting section below.
Add a crontab entry to execute GetLive at 7am, noon and 6pm, for example :
# crontab -e 0 7,12,18 * * * /usr/local/bin/GetLive.pl --config-file /etc/getliverc > /dev/null
Troubleshooting
Most of the problem I had were due to the “From ” (From space, not From:) line, which is the first line in an email. It raised a “Message contains invalid header” error with Cyrus and cyrdeliver. Make sure to keep messages on the server during your tests, because your downloaded emails might end up nowhere on your system.
Logs are your friends :
- /var/log/mail.log,
- /var/log/mail/john.log and
- /var/log/messages.
Check your logs and pay attention to what they say.
Wednesday December 19, 2007
La vente sur Internet est en retard…
… comparé à la vente en magasin.
Lors d’une réunion avec un client, une réflexion s’est introduite dans la discussion concernant le marketing et la vente sur le web : SugarCRM permet de savoir quelle personne à cliquer sur tel ou tel lien dans une lettre d’information et de l’appeler afin de clore la vente plus rapidement. Autre exemple, Google Analytics qui fournit des détais très pertinents sur le parcours des visiteurs sur votre site web.
Je me suis donc posé la question en rentrant : mais quel est le but ultime de tout ça (à part vendre, bien évidemment) ? Tout le monde vend et achète depuis des millénaires, qu’est-ce que le web essaie donc de reproduire ?
Comme Valéria me manque beaucoup en ce moment, je me suis mis à faire le parallèle avec la vente en magasin, un domaine qu’elle connait plus que moi.
Le parallèle était évidemment très simple mais faisons cette expérience : Mettez-vous dans la tête d’un vendeur dans un magasin, vous connaissez votre magasin et vos produits par coeur, avec leurs avantages et leurs faiblesses. Un client entre. Vous ne lui avez pas encore parlé que parmi tous vos produits, vous savez déjà lequels vous allez lui proposer. Parce que notre apparence physique (âge, vêtements, etc) en dit long sur notre personnalité et notre budget, un bon vendeur sera capable de faire ce travail d’analyse et de vous amener très vite vers l’acte d’achat.
Exercice plus difficile maintenant : Mettez-vous à la place d’un site web. Idem, vous connaissez très bien votre magasin (l’organisation du site ou sitemap) et vos produits (vous avez tout ça dans votre base de données). Un visiteur arrive sur votre site. Quelle information disposez-vous pour caractériser votre visiteur et faire en fait le travail d’analyse qu’à fait notre vendeur dans le magasin ? Très peu en réalité :
- le navigateur web : une dizaine sont utilisés. Variable apportant peu de pouvoir de distinction
- le système d’exploitation : une dizaine existe, il caractérise très peu votre visiteur
- la langue : déjà un peu plus intéressant mais ca reste maigre pour adapter votre discours
Quelques sites (Amazon par exemple) ont compris qu’ils y avait un manque à combler pour adapter leur offre. C’est pour cela qu’ils ajoutent des informations à votre compte, explicitement : vous devez rentrer votre adresse, votre âge, vos intérêts, etc; ou implicitement : votre parcours sur le site, les pages web des produits sur lesquels vous vous êtes arrêtés, etc… Tout ca permet de retracer votre comportement d’acheteur, comme ferait un vendeur de magasin, il vous observerait : dans quel rayon vous allez, combien de temps vous vous arrêtez devant tel produit, etc.
C’est en cela que le web est encore en retard, car les vendeurs de magasin vont encore plus loin grâce au département de présentation visuelle : ils vont jusqu’à modifier l’organisation du magasin pour faciliter votre parcours de la porte jusqu’au produit désiré. Ça le web n’est pas encore capable de le faire, mais le potentiel est énorme car autant le magasin ne peut pas tout ré-arranger à chaque client, autant le site web oui : On peut très bien imaginer une page d’accueil spécifique à chaque visiteur. On le voit déjà avec certains paramètres comme la langue : plus besoin d’avoir à cliquer sur la bonne langue, le site vous affiche la langue spécifiée par le navigateur.
J’aimerai terminer avec ces 3 points :
- les vitrines des magasins se comparent au référencement sur les moteurs de recherche et c’est à ce niveau là que Google Adwords est très bon. Il met votre site disponible à un click de la page de référence pour un internaute. Le client potentiel n’a plus qu’à ouvrir la porte, tout en étant au départ dans un lieu public et familier (la rue, le centre commercial ou le moteur de recherche).
- Le référencement au sens large (bannière, lien croisé, etc) démontre une démarche un peu plus agressive et s’apparente plus à des tracts dans les boîtes aux lettres, des messages radiophoniques ou télévisuelles, etc.
- Enfin, Google Analytics permet au web de compenser le fait que vous n’avez pas (encore) de compte sur tous les sites webs. Il permet ainsi à un site d’obtenir les informations manquantes pour construire les profils des internautes. La tendance est plus au partage et à l’interconnexion des sites : LinkedIn peut aller chercher mes contacts sur Gmail, mon compte sur hotmail.com est relié à celui sur expedia.ca, etc.
Saturday December 15, 2007
Amores Perros
if (function_exists('social_bookmark')) { social_bookmark(); } ?>La psychologie de la maternité
Je viens juste de finir ce livre de Jane Price, qui explique les sentiments, les émotions et les différentes relations entre les personnes entourant l’arrivant d’un bébé. En voici la table des matières:
- L’importance déterminante
- Un travail d’amour
- Le sein, c’est mieux… Mais pour qui ?
- Les difficultés et les privilèges de la mère qui travaille
- Les hommes et la maternité
- Élever seule un enfant
- Les mères, les filles, les grand-mères et les autres femmes
- Les effets dévastateurs de la maternité
- Le rêve et la réalité
ISBN : 2-89044-412-0
Saturday December 1, 2007
Coupe des 4 Nations de Water-Polo Féminin
Avec l’Australie, le Canada, la Russie et les États-Unis.
Wednesday November 14, 2007
San Francisco, CA
J’ai eu l’occasion d’aller à San Francisco pour une formation de 8 jours. Comme je suis resté là-bas le week-end, j’ai cherché un canapé plutôt qu’un hôtel sur Couch Surfing. Ty a répondu à ma demande et a gentiment accepté de me loger pendant ces 10 jours.
Malgré le rythme assez soutenu du cours (8h – 19h), je suis resté d’attaque pour découvrir San Francisco avec Ty et sa copine Tovah : Le samedi, on a donc commencé la journée sous la pluie par le Golden Gate Bridge. On a aperçu quelques éléphants de mer mais on ne voyait pas l’île d’Alcatraz, perdue dans la brûme… On a ensuite rejoint le quartier italien pour aller manger au restaurant la Mona Lisa. Une fois réchauffé, on a tourné dans le quartier chinois, puis Union Square, où la frénésie des achats de Noël avait déjà commençé. On s’est quelque peu perdu dans les bouchons du au méga événement d’Oracle : Open World. On en a profité pour visiter rapidement le Musée d’Art Moderne de San Francisco. Vers 18h, les filles ont du me laisser en centre-ville pour aller à une soirée réservée aux filles. Je me suis donc promener dans les grands magasins. Comme mes chaussures prenaient l’eau et que le dollar canadien avait atteint la parité avec le dollar américain, j’en ai profité pour acheter de nouvelles chaussures. J’étais ainsi bien équipé pour trotter partout dans la ville : South of Market, Union Square et la pyramide Transamerica, Financial District, Chinatown, North Beach… pour revenir à South of Market, attraper le dernier train de banlieue pour Redwood City et m’écrouler dans le canapé.
Le dimanche matin, j’ai accompagné Ty à l’Université de Stanford pour courir 10km pour une oeuvre de bienfaisance. J’ai pris quelques photos de l’énorme campus en réussissant malheureusement à être en retard pour son arrivée. Tans pis pour la photos finish… Une fois la course finie, on est retourné sur le campus et j’ai découvert une statut des 6 bourgeois de Calais! Incroyable mais vrai. Originalité : les 6 bourgeois sont en fait 6 statuts indépendantes (Voici la vraie).
Après un bon petit déjeuner, nous sommes partis sur la côte pacifique pour faire une ballade dans le parc naturel d’Año Nuevo. Après 90 minutes de voiture dans les montagnes et une heure de marche dans le vent marin, on a eu le droit à un grand spectacle d’éléphants de mer : des milliers étendues sur une plage et encore pleins d’autres sur la petite île au large. Magnifiiiiiique!
Dernière émotion avant mon retour à Montréal : 3h avant de reprendre l’avion, Ty m’a emmené sur une des multiples collines de San Francisco pour voir la ville, sans commentaires :