31 mars 2008: 23:37: nicolasConfiguration, Courriel, Recette

Quand je me suis acheté un laptop et que je l’ai utilisé ailleurs que chez moi, j’ai réalisé que je ne pouvais pas facilement envoyer de courriels, parce qu’il fallait que je change ma configuration de serveur sortant selon le fournisseur d’accès internet où je me trouvais. Ceci, parce qu’Exim refusait de faire le relai de mes courriels si je tentais d’utiliser mon serveur SMTP à la maison, évitant ainsi d’être un “relai ouvert” (open relay).

Récemment, j’ai donné des adresses courriel à des membres de ma famille, et j’ai eu un problème semblable, quoique plus frustrant: le fournisseur d’accès internet refuse de faire le relai quand l’adresse de l’envoyeur n’est pas reconnue. Avec Vidéotron, je ne pouvais pas envoyer un courriel prétendant provenir de marchildon.net, alors qu’un envoyeur@videotron.ca fonctionne.

Ça fait longtemps que je savais ce que je devais faire: activer l’authentification SMTP. Voici donc comment j’y suis parvenu.

Premièrement, j’ai testé une authentification très simple, avec un nom d’usager et un mot de passe fixes. J’ai pu tester sur mon serveur en production car j’étais le seul qui l’utilisait comme serveur sortant pour mon réseau local privé.

Dans /etc/exim4/conf.d/auth/30_exim4-config_examples, j’ai ajouté:

fixed_plain:
  driver = plaintext
  public_name = PLAIN
  server_advertise_condition = *
  server_prompts = :
  server_condition = \
    ${if and {{eq{$2}{username}}{eq{$3}{mysecret}}}}
  server_set_id = $2

Puis j’ai activé cette configuration avec /etc/init.d/exim4 reload, et j’ai voulu tester ça avec une session telnet. J’ai converti l’usager et le mot de passe en base64 pour ensuite passer le résultat à la commande AUTH d’une session SMTP:

vesicule:~# cat bin/encode
#!/usr/bin/perl
use MIME::Base64;
printf ("%s", encode_base64(eval "\"$ARGV[0]\”"));
vesicule:~# bin/encode '\\0username\\0mysecret'
AHVzZXJuYW1lAG15c2VjcmV0
vesicule:~# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.marchildon.net ESMTP Exim 4.50 Mon, 31 Mar 2008 20:59:54 -0400
EHLO marchildon.net
250-mail.marchildon.net Hello localhost [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN   <----------- yes!
250 HELP
AUTH PLAIN asdf
535 Incorrect authentication data
AUTH PLAIN AHVzZXJuYW1lAG15c2VjcmV0
235 Authentication succeeded
QUIT
221 mail.marchildon.net closing connection

J’ai vérifié ci-haut qu’en passant n’importe quoi à AUTH (”asdf”), j’obtenais un échec, et qu’en passant le bon usager et mot de passe (la ligne “AUTH PLAIN AHVzZXJuYW1lAG15c2VjcmV0″), j’obtenais un succès.

Ensuite, j’ai voulu faire en sorte que les mots de passe soient les mêmes que pour les connexion POP et IMAP fournies par courier-imap. J’ai donc modifié ma configuration dans 30_exim4-config_examples pour ceci:

plain_courier_authdaemon:
  driver = plaintext
  public_name = PLAIN
  server_advertise_condition = *
  server_prompts = :
  server_condition = ${extract {address} {${readsocket{/var/run/courier/authdaemon/socket} \
      {AUTH ${strlen:exim\nlogin\n$2\n$3\n}\nexim\nlogin\n$2\n$3\n} }} {yes} fail}
  server_set_id = $2

J’ai répété le test avec un session telnet, cette fois-ci avec mon nom d’usager et mon vrai mot de passe (toujours encodé base64).

Satisfait, j’ai voulu mentionner dans les en-têtes du message le nom de l’usager qui a été authentifié. J’ai donc ajouté ceci à main/02_exim4-config_options:

received_header_text = Received: \
  ${if def:sender_rcvhost {from $sender_rcvhost\n\t}\
  {${if def:sender_ident \
  {from ${quote_local_part:$sender_ident} }}\
  ${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\
  by $primary_hostname \
  ${if def:received_protocol {with $received_protocol}} \
  ${if def:tls_cipher {($tls_cipher)\n\t}}\
  (Exim $version_number)\n\t\
  ${if def:sender_address \
  {(envelope-from <$sender_address>)\n\t}}\
  id $message_id\
  ${if def:received_for {\n\tfor $received_for}}\
  ${if def:authenticated_id {\n\tauthenticated $authenticated_id}}

La ligne importante est ${if def:authenticated_id {\n\tauthenticated $authenticated_id}}.

J’aurais pu terminer ici, mais j’étais conscient que mon mot de passe aurait été transmis pratiquement en clair sur internet. J’ai donc entrepris de configurer TLS, d’abord en générant un certificat auto-signé:

# cd /etc/exim4
# /usr/share/doc/exim4-base/examples/exim-gencert
# ls -l exim.*
-rw-r-----  1 root Debian-exim 721 2008-03-31 22:18 exim.crt
-rw-r-----  1 root Debian-exim 887 2008-03-31 22:18 exim.key
# openssl x509 -noout -text -in /etc/exim4/exim.crt | head -n 14
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            b8:35:2c:e2:2f:8c:95:f7
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=CA, ST=Qu\xC3\xA9bec, CN=mail.marchildon.net
        Validity
            Not Before: Apr  1 02:21:52 2008 GMT
            Not After : Apr  1 02:21:52 2011 GMT
        Subject: C=CA, ST=Qu\xC3\xA9bec, CN=mail.marchildon.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)

Notez que j’ai spécifié mail.marchildon.net parce que je spécifie la même chose dans la configuration du serveur sortant dans Thunderbird. Si je mets autre chose, j’obtiens un avertissement de sécurité de la part de Thunderbird.

Comme dernière configuration pour activer TLS, j’ai créé le fichier /etc/exim4/conf.d/main/00_local:

MAIN_TLS_ENABLE = true

Après un /etc/init.d/exim4 reload, j’ai vérifié que Exim annonce son support de connexions TLS:

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.marchildon.net ESMTP Exim 4.50 Mon, 31 Mar 2008 22:20:20 -0400
EHLO marchildon.net
250-mail.marchildon.net Hello localhost [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250-STARTTLS   <------------- Yes!
250 HELP
QUIT
221 mail.marchildon.net closing connection

J’ai ensuite forcé Thunderbird à utiliser TLS pour le serveur sortant SMTP, et j’ai testé l’envoi d’un courriel à partir de mon réseau privé. Le log d’Exim montre que la connexion était encryptée (X=TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32) et que j’étais authentifié (A=plain_courier_authdaemon:nicolas):

# tail -n 1 /var/log/exim4/mainlog
2008-03-31 22:22:05 1JgW8T-0005HZ-GQ <= nicolas@marchildon.net H=cortex [192.168.1.50] P=esmtpsa X=TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32 A=plain_courier_authdaemon:nicolas S=870 id=47F1A467.8000509@marchildon.net

J’ai ensuite testé le relai d’un courriel en provenance d’internet avec un tunnel SSH et Thunderbird se connectant au port 2500 de localhost:

# ssh -L2500:marchildon.net:25 nicolas@remote-host.org

Le relai est accepté, comme prévu:

# tail -n 1 /var/log/exim4/mainlog
2008-03-31 22:28:00 1JgWDj-0005Hz-3w <= nicolas@marchildon.net H=nagios.solucorp.qc.ca ([127.0.0.1]) [207.253.4.248] P=esmtpsa X=TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32 A=plain_courier_authdaemon:nicolas S=1545 id=47F1A5A1.6050108@marchildon.net

Enfin, j’ai désactivé TLS et vérifié que le relai est refusé, parce que ma configuration ne permet pas l’authentification sur une connexion non-encryptée:

# tail -n 1 /var/log/exim4/mainlog
2008-03-31 22:31:39 H=nagios.solucorp.qc.ca ([127.0.0.1]) [207.253.4.248] F= rejected RCPT : relay not permitted
11 mars 2008: 11:26: nicolasFlash, Son

J’avais remarqué il y a plusieurs semaines que Flash permettait d’utiliser une webcam, mais c’est seulement hier que j’ai tenté l’expérience. Ma Creative Technology, Ltd WebCam NX Pro 2 fonctionne très bien, mais j’ai plus de misère avec le son. Mes interlocuteurs ne m’entendaient pas.

Dans le panneau de configuration de Flash (bouton de droite, Paramètres, Microphone), je ne vois qu’un seul micro: “Linux Microphone”. Selon sypher7, sur les Forums Ubuntu, une solution consiste à ré-ordonner les périphériques de son. Je suis allé jouer dans ce fichier, mais je ne savais pas quoi faire pour que mes changements soient pris en compte, et je n’y suis pas arrivé. Puis j’ai lu qu’il y avait asoundconf et j’ai fait:

$ asoundconf list
Names of available sound cards:
Live
UART
Headset
$ asoundconf set-default-card Headset

En ouvrant ma fenêtre Flash, je vois maintenant que Flash m’entend, parce que la barre de Stickam devient rouge quand je parle. Mais mon interlocuteur du moment n’entendait que des grésillements.

Désespoir!

En attendant, vous pouvez toujours me regarder…

20 février 2008: 19:59: nicolasBogue

5 janvier 2008: 16:01: nicolasNon classé

Après plus d’un mois d’utilisation sur mon serveur de courrier, je suis satisfait du greylisting (grisonnement?) qui a réduit la quantité quotidienne de spam que je recevais de 20 à environ 5 spams par jour. Après greylistd, les courriels passent à sa-exim, qui lance Spamassassin pour rejeter les messages qui ressemblent à du spam.

Statistics since Thu Nov 29 15:19:06 2007 (36 days and 23 hours ago)
--------------------------------------------------------------------
1169 items, matching 8017 requests, are currently whitelisted
  11 items, matching   19 requests, are currently blacklisted
 173 items, matching  174 requests, are currently greylisted

Of 8038 items that were initially greylisted:
 - 1177 ( 14.6%) became whitelisted
 - 6861 ( 85.4%) expired from the greylist

Mon seul problème, c’est que ça ajoute un délai de livraison dans le cas de nouvelles communications. Souvent, un site web où je m’inscris envoie un courriel d’activation, et je le reçois seulement 15 minutes plus tard (la valeur par défaut est d’une heure!).

J’aimerais aussi pouvoir mettre quelqu’un dans la blacklist autrement que par la ligne de commande.

Un plugin thunderbird ou un script côté serveur pourrait regarder les courriels que j’ai déplacés manuellement dans le répertoire SPAM pour augmenter la blacklist, et peut-être signaler le courriel auprès d’un site de surveillance. Ce n’est pas très difficile à faire, mais mes priorités sont ailleurs!

24 août 2007: 23:39: nicolasAmélioration, Gnome

Vous connaissez peut-être déjà ces choses par le nom “Tray Icon”. C’est apparu dans Windows, puis dans Gnome d’abord sous forme d’applet, puis standardisé dans une zone de notification. Mais notification de quoi, au juste?

notification.png

Je continue. Quand je ferme une fenêtre, je clique le bouton Fermer, et quand je la fait temporairement disparaître, je clique le bouton Minimizer. Quand je veux la faire ré-apparaître, je regarde habituellement la liste de tâches, puis je clique dessus. Si elle était fermée, je prends un chemin plus long: je vais dans le menu Applications, ou bien j’utilise un lanceur.

Or, ces fichus icônes de notification rend ce scénario d’utilisation encore plus compliquée. Plutôt que de regarder dans la liste de tâches, je dois aussi regarder si l’application est dans la zone de notification.

Je propose de supprimer cette zone de notification et de la remplacer par la liste de tâches elle-même, qui aurait à être améliorée pour permettre aux applications d’utiliser le menu contextuel.

Je ne sais pas si ça sera accepté, alors je ne me prive pas de proposer des améliorations plus petites, comme celle du simple-clic pour afficher ou cacher Azureus. Je tente aussi un essai sans zone de notification; je l’ai supprimée pour voir quelles fonctions vont le plus me manquer.

: 22:40: nicolasAmélioration, Bogue, Gnome, Nautilus

raccourcis.png

Nautilus a dès le début permis d’ouvrir sous forme d’arbre un dossier dans le panneau de droite, là où sont listés les fichiers. Utilisant auparavant Windows, j’étais habitué à utiliser plutôt l’arborescence dans le panneau latéral. Après quelques années d’utilisation de Nautilus, j’ai finalement arrêté de me servir de l’arbre dans le panneau latéral, car le panneau principal fait la même chose. J’ai plutôt choisi la liste de raccourcis comme panneau latéral, et je me retrouve beaucoup plus rapidement.

Je n’en parlerais pas si je n’avais pas de bogue à rapporter. Un clic-droit sur un raccourci donne seulement deux options: Supprimer et Renommer. Renommer devrait être équivalent à appuyer sur F2, mais ce n’est pas le cas. La touche Delete ne fonctionne pas toujours non plus, à cause d’un bogue.

D’ailleurs, le menu contextuel d’un raccourcis devrait être révisé, car il devrait être identique à celui d’un répertoire ordinaire.

16 juillet 2007: 0:55: nicolasNon classé

Ça fait un bout de temps que je voulais installer ce blogue pour parler de ce qui me facilite ou pas la vie avec les technologies. Ici, vous me verrez donc en Technocouleur, alors que mon carnet personnel reste ce qu’il est.

« Previous Page