Problème de lancement de thunderbird 3

J’ai rencontré une erreur surprenante:

Sur un ordinateur avec Thunderbird 3 installé, et qui fonctionnait correctement jusqu’à présent, l’installation de certaines extensions (lightning et enigmail dans mon cas, mais peut être avec d’autres) empêchait le démarrage de thunderbird.

  • L’installation se passait correctement, le redémarrage après installation de l’extension aussi, mais une fois fermé, impossible de relancer le gestionnaire de messagerie.
  • Le clic sur l’icone ouvre un bouton dans la barre des tâches, le sablier tourne pendant quelques secondes puis le bouton et le sablier disparaissent.
  • La tentative de lancement en ligne de commande n’affichait aucune information ni message d’erreur quelconque. Le lancement en mode safe mode lançait Thunderbird correctement.
  • Pour pouvoir le relancer, il fallait vider le répertoire des extensions /home/user/.thunderbird/profile.default/extensions

Mais bien sûr, les extensions voulues n’existaient alors plus…

Le problème vient du fait que le dossier .thunderbird n’existe pas dans le home de l’utilisateur. Dans mon cas, ce n’est pas un dossier, c’est un lien .thunderbird qui pointe vers une autre partition. Déplacer le dossier depuis la partition vers le home de l’utilisateur, avec un vrai dossier .thunderbird, permet de tout faire re-fonctionner correctement.

Pourquoi avoir un lien, me demanderez vous¹?

Tout simplement parce que thunderbird ne gérant pas les boites en maildir, que les fichiers de mail font des tailles phénoménales² et que les sauvegardes des comptes utilisateurs prennent des heures à cause de ces boites énormes, cette partition est sauvegardée en arrière plan à des fréquences différentes des homes utilisateurs³. Et parce que j’ai des dizaines d’utilisateurs et qu’il faut uniformiser le fonctionnement de tous, d’un site à l’autre, d’un ordinateur à l’autre.

Voilà qui clôt mon histoire d’amour avec thunderbird et m’a décidé à trouver un remplaçant qui ne me poserait pas ces problèmes. Le phénix ne renaitra pas des cendres qu’il a laissé sur mes tapis.

J’avais choisi thunderbird pour ses extensions (et son potentiel de personnalisation), sa gestion des spams, sa simplicité d’utilisation, son évolution rapide et le fait qu’il tourne identiquement sur tous les OS, facilitant ainsi la migration.

Mais autant thunderbird est fantastique pour une utilisation personnelle, autant en entreprise il s’avère inadapté.

Aujourd’hui donc commence la recherche du gestionnaire de messagerie en maildir, efficace avec les spams, permettant les signature/cryptages PGP, intégrant si possible un calendrier publiable. S’il peut fonctionner sur Windows, c’est mieux, mais sans aucune obligation, je continuerais avec thunderbird sur cet OS, au besoin.

Des suggestions sur le gestionnaire de messagerie que vous me conseilleriez?

1- Si, si, je sais que vous allez me le demander.
2- En entreprise, vous n’imaginez pas la quantité de mails reçus, stockés, utilisés.
3- Sauvegarder 700 Mo, même sur le réseau, toutes les heures, occupe une bande passante qui ralentit tout le monde. Pour un seul mail reçu, c’est l’ensemble des mails qui est sauvegardé.

Communiquer par un tunnel crypté SSH avec votre serveur comme relai (depuis Linux)

tunnelierLorsque vous êtes en déplacement, connecté en wifi à une borne gérée par on ne sait qui, il est délicat d’accéder à vos comptes bancaires ou votre messagerie en ayant l’esprit tranquille.

En effet, rien n’empêche le propriétaire du point d’accès de surveiller tous les échanges sur cette borne, ou un pirate de sniffer les communications.

Il est possible d’utiliser votre serveur qui tourne à la maison, (voire même un serveur kimsufi, dédibox, ou autre), comme relai pour vos communication, à la fois pour la navigation web et pour les mails. L’important étant que vous ayez confiance dans la machine qui va vous servir d’intermédiaire et du réseau sur lequel elle est connectée.

L’avantage, c’est que c’est rapide et simple à mettre en place, même au dernier moment.

Précisions

Un tunnel ssh ne permet de passer que des protocoles basés sur TCP, au contraire d’un VPN qui permet de transporter tout type de trame IP et non IP en plus d’apporter un routage complet. Ce n’est donc pas un VPN au sens réel du terme, mais cela va vous permettre d’utiliser la sécurité du SSH sur la partie du réseau qui n’est pas fiable.

Creusons le tunnel

Votre ordinateur relai devra, bien évidemment, avoir un serveur SSH accessible depuis l’extérieur. L’idéal étant de pouvoir s’y connecter par clef plutôt que par mot de passe, ce qui vous permettra de fermer l’authentification par clef et de limiter les attaques. Mais les deux fonctionnent.

Je vous laisser lire la documentation pour mettre en place un serveur ssh si vous ne savez pas encore le faire.

Nous allons donc lancer une connexion vers notre serveur, et « binder » (lier) cette connexion à un port local afin que tout ce qui arrive sur le port local soit transféré sur la connexion SSH (et vice versa). Dans un terminal, qu’il faudra laisser ouvert tout le temps de la session, entrez ceci:

ssh -D 1234 utilisateur@serveur_relai

Un man ssh vous donnera plus de détails sur le fait que l’option -D fait que SSH se comporte comme un serveur SOCKS et vous rappellera que seul root peut utiliser les ports privilégiés. Nous utilisons arbitrairement le port 1234, mais vous pouvez utiliser n’importe quel port local supérieur à 1024 (lancé par un utilisateur non root) à condition qu’un service ne tourne pas déjà sur ce port.

Si votre serveur ssh ne tournait pas sur le port par défaut, vous pourrez alors utiliser cette commande en précisant le port de votre serveur:

ssh -D 1234:port_ssh utilisateur@serveur_relai

par exemple

ssh -D 1234:443 utilisateur@serveur_relai

ou

ssh -D 1234 -p 443 utilisateur@serveur_relai

Si vous fermez le terminal dans lequel vous avez ouvert le tunnel, la communication serait fermée et vos logiciels ne pourraient plus sortir. Il faudra donc ne pas le fermer tout le temps de la session.

Hey Ho, Hey Ho, on rentre … dans le tunnel

Maintenant que nous avons créé notre tunnel, il faut indiquer aux logiciels de l’utiliser.

Par exemple, pour firefox:

menu Édition > Préférences > Avancé > Réseau > Paramètres

Utilisez un proxy SOCKS qui est donc votre ordinateur (point de départ de la connexion SSH) sur le port indiqué (1234 dans ce cas) tel que ci dessous

Paramétrage pour Firefox

Pour vous convaincre que vous passez par votre serveur et non par la connexion wifi en cours, allez visiter un site comme http://www.monip.org/ qui vous montrera votre adresse IP externe. Si votre serveur a une IP fixe, vous reconnaitrez facilement votre IP. Sinon, visitez le site, un coup sans proxy, un coup avec, et vous verrez que l’ip n’est pas la même.

Par exemple, pour thunderbird:

Les avantages de cette solution, pour envoyer du mail, sont:

  • vous n’aurez pas à modifier le serveur SMTP d’envoi à chaque fois, même si des extentions existent pour compenser ce problème.
  • pas d’interception de vos mails par un éventuel proxy ou sniffer sur le réseau
  • l’adresse IP d’expédition est celle de votre serveur, pas celle de votre emplacement actuel (vie privée respectée)

Rendez vous à menu Édition > Préférences > Avancé > Réseau et espace disque > Paramètres et paramétrez tel que sur l’image suivante:

Paramétrages de mozilla thunderbird

Lorsque vous enverrez un mail, il passera par le tunnel et sera donc réellement envoyé par votre serveur relai vers votre propre fournisseur d’accès, indépendamment du FAI depuis lequel vous êtes actuellement connecté.

Pour les autres logiciels:

Le principe du paramétrage est identique aux exemples ci dessus. Cherchez dans leur configuration comment utiliser un proxy socks.

Ça peut aussi ne pas fonctionner!

En effet, si un proxy est paramétré sur votre réseau (pas chez vous, là où vous êtes connecté) et qu’il ne laisse pas passer le ssh, vous êtes bloqué. Mais il existe parfois des solutions:

  • Si le blocage du ssh est dû aux ports qui sont autorisés, il vous faudra mettre votre serveur ssh (chez vous) en écoute sur un de ceux ci. Il y a de fortes chances pour que le http et le https soient autorisés (sinon le proxy ne servirait à rien, autant débrancher le câble…).
  • Si le blocage est dû à l’analyse des flux par le proxy et que le ssh est refusé, il faudra passer par un tunnel http dans lequel vous ferez passer un tunnel ssh (ou ce que vous voudrez). Vous pouvez utiliser l’excellent http-tunnel qui vous sortira de l’impasse.
  • Si le proxy utilise un filtrage applicatif en plus du reste… c’est que l’admin est un acharné et que vous n’arriverez pas à sortir par cette voie.

Notez qu’il est possible de faire la même chose avec putty et Windows mais je vous laisser faire ça seuls, n’ayant plus de licence depuis longtemps, et encore moins l’envie de me salir les mains avec ça.

A lire aussi:

Migrer de Thunderbird2 vers Thunderbird3 sur Jaunty

Après l’installation, j’ai eu quelques problèmes: aucun de mes comptes de messageries n’étaient visibles (pas plus que les mails), et Thunderbird me proposait de créer un nouveau compte.

Toutes les manipulations se font à partir du home de l’utilisateur.

Installer Mozilla Thunderbird 3 sur Ubuntu

Téléchargez TB3 et décompactez l’archive. Déplacez ensuite celle ci sur /opt

sudo mv Bureau/thunderbird /opt/

Modifiez ensuite le lanceur afin qu’il lance thunderbird 3 au lieu de la version 2

sudo gedit /usr/share/applications/thunderbird.desktop

Modifiez la ligne Exec=thunderbird %u en Exec=/opt/thunderbird/thunderbird %u

Enregistrez et fermez le fichier.

Retrouver ses mails

Le problème des mails vient que TB3 utilise le dossier ~/.thunderbird alors que la version 2 sur Jaunty (et sans doute sur les autres versions)  utilise ~/.mozilla-thunderbird. Donc, TB3 ne retrouve pas les éléments auxquels on s’attend.

Il faut alors soit copier le contenu de .mozilla-thunderbird dans .thunderbird, soit créer un lien d’un dossier vers l’autre.

La première chose à faire est de sauvegarder le dossier pour permettre un retour en arrière en cas de problème. Effectuez une copie de .mozilla-thunderbird avant toute modification.

Je crée un lien nommé .thunderbird pointant sur .mozilla-thunderbird. Si vous avez déjà lancé TB3, supprimez le dossier .thunderbird automatiquement créé

ln -s .mozilla-thunderbird/ .thunderbird

Il ne reste plus qu’à lancer Thunderbird en cliquant sur l’icone habituelle.

Ne vous étonnez pas. Si vous avez beaucoup de messages ou de comptes de messageries, TB3 va tous les indexer, et ça peut prendre du temps…

Recevoir les logs par mail

Il peut être intéressant de recevoir les logs de vos ordinateurs par mail pour plusieurs raisons:

  • pour penser à les regarder,
  • pour recevoir les logs de vos serveurs,
  • pour garder un historique des logs et pouvoir remonter dans le temps,
  • générer des statistiques à partir des logs sans se connecter aux serveurs (ce qui est utilisé par exemple pour générer la liste des identifiants déconseillés)

Pour cela, je vous propose d’installer un utilitaire en python développé par mes soins.

ATTENTION: ce programme fonctionne pour Hardy et Jaunty. Il n’a pas été développé ou testé sur Karmic mais sera disponible pour toutes les version X.04 d’Ubuntu.

ATTENTION2: ce programme ne peut fonctionner simplement avec Orange. Pour ce FAI, il faut installer postfix et le paramétrer avec l’authentification sasl. Cela fera l’objet d’un prochain article. Pas de problème chez Free, Alice et SFR.

Zeli-sendlog

zeli-sendlog est un programme python qui va créer une archive des logs de l’ordinateur sur lequel il est installé et va automatiquement l’envoyer par mail aux adresses paramétrées.

Une fois installé, ce programme ne nécessite aucun réglage.

Installation

Il vous faut tout d’abord ajouter les miroirs Absolacom à votre fichier de sources tel qu’indiqué sur cette page. Rechargez la liste des paquets et installez le paquet zeli-sendlog et ses dépendances.

Paramétrage

Pour envoyer un mail, il vous faut trois choses:

  1. un serveur SMTP,
  2. une ou plusieurs adresses de destination,
  3. un nom pleinement qualifié afin que vos mails soient acceptés sans être considérés comme du spam.

Serveur SMTP

Il se règle dans le fichier /etc/smtp_server. Vous indiquez simplement le nom ou l’adresse de votre serveur SMTP. Par exemple, pour free, indiquez simplement smtp.free.fr.

Adresses de destination

Les adresses où seront envoyés les mails s’indiquent dans le fichier /etc/mail_secu.txt. Indiquez sur une ligne les adresses séparées par des virgules.

Si vous n’indiquez qu’une seule adresse, inutile d’ajouter une virgule.

Nom FQDN

Votre machine ne peut envoyer des mails que vers un serveur qui l’autorise. Pour cela, il faut qu’elle soit identifiée, et c’est son nom d’expéditeur qui est utilisé.

Si vous possédez un nom de domaine, éditez le fichier /etc/mailname et indiquez le nom de votre ordinateur ainsi: machine.mondomaine.org.

Identifiez correctement votre ordinateur, ce nom apparaît dans les courriers qui vous sont envoyés et vous permettront de vous y retrouver si vous recevez les logs de plusieurs serveurs.

Lancement en console

Vous pouvez lancer manuellement le programme pour envoyer les logs immédiatement ou pour vérifier son fonctionnement. En cas de problème, celui ci vous est affiché (en anglais) et vous permettra de rechercher une solution.

Dans un terminal, entrez: sudo sendlog

(le programme doit être lancé en root pour pouvoir accéder aux fichiers de log)

Programmation

A l’installation, le programme a paramétré le cron de root afin de lancer l’envoi de mail tous les jours à minuit. Pas avant, sinon il vous manquerait du contenu dans les logs du jour, pas après, sinon ce serait les logs du lendemain.

Faites quelques essais, mais n’envoyez pas beaucoup de mails en peu de temps, cela risquerait de vous faire mettre en quarantaine par votre FAI.

Une fois le logiciel paramétré, il n’y a plus à y toucher.

Servez vous, c’est GPL!

Installer un serveur LAMP avec Ubuntu

Un serveur LAMP signifie Linux Apache Mysql Php. Il est possible d’installer et configurer chacun des services manuellement, mais il existe une autre façon plus simple et moins connue de faire tout ceci en une seule fois.

Dans un terminal, entrez ceci:

sudo tasksel install lamp-server

Et c’est tout!

Ou alors:

sudo tasksel

tasksel

Et sélectionnez LAMP server, ou tout autre service que vous désirez installer.

Lire les mails de cron avec son lecteur de messagerie

Vous pouvez simplement lire vos mails système avec votre lecteur de messagerie, après quelques manipulations.

Explications sur le fonctionnement:

Si les opérations effectuées avec le crontab de root renvoient des informations, cron les envoie par mail à l’utilisateur root.

Root n’étant pas sensé se connecter, ces mails sont transférés à un des utilisateurs du système. Par défaut, il s’agit de l’utilisateur que vous avrez créé lors de l’installation système, mais vous pouvez le changer en modifiant le contenu du fichier /etc/aliases:

# Added by installer for initial user
root:	manu

Dans ce cas, c’est l’utilisateur manu qui va hériter des mails système à destination de root.

Attention: sur certaines versions, et en particulier la Jaunty 9.04, le fichier ne contient pas le nom d’utilisateur. Tout est renvoyé à root, mais root ne renvoie vers personne:

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
clamav: root
root: manu

Il suffira d’ajouter « root: manu » tel que ci dessus pour que l’utilisateur manu accède aux mails système.

Ces mails sont lisibles en console par l’intermédiaire, par exemple, de la commande mail (disponible dans le paquet mailutils). Mais il faut reconnaître qu’il serait plus pratique de les avoir dans le lecteur de messagerie même, puisque celui ci est ouvert régulièrement.
La méthode ci dessous n’est utile et exacte que si vous n’installez pas de serveur imap ou pop sur cette machine même pour y lire les mails (par défaut, dans 99,9% des cas).

Paramétrage du client de messagerie

La méthode est donnée ici pour Mozilla-Thunderbird, mais il est simple de l’adapter pour un autre lecteur de messagerie installée sur le système capable de lire le format Movemail¹ (testé avec Evolution et mutt).

  • Ouvrez votre lecteur de messagerie.
  • Si c’est la première ouverture, il vous est proposé de créer un nouveau compte. Dans le cas contraire, rendez vous dans le menu Edition / Paramètres des comptes … puis cliquez sur Ajouter un compte.
  • Dans le paramétrage d’un nouveau compte, sélectionnez Unix Mailspool (Movemail), puis cliquez sur suivant.
  • Sélection du type de compte

    Sélection du type de compte

  • Dans la fenêtre Identité, indiquez votre nom d’utilisateur (normalement déjà rempli). L’adresse de courrier n’a que peu d’importance (vous n’enverrez pas de courrier depuis ce compte), elle servira principalement à identifier ce compte dans la liste des comptes paramétrés.
  • S’il vous est demandé un serveur smtp, vous pouvez indiquer celui de votre FAI (souvent de la forme smtp.fai.fr). Si vous aviez déjà des comptes, le serveur smtp que vous aviez précédemment indiqué sera utilisé. Si votre ordinateur n’est pas connecté à internet ou n’envoie pas de mails par l’intermédiaire du lecteur de messagerie, vous pouvez mettre seulement « smtp » pour que la configuration puisse être finalisée.
  • Indiquez le nom du compte tel que vous désirez qu’il apparaisse dans la liste si la proposition ne vous convient pas.
  • Cliquez sur Terminer à l’affichage du résumé.

Il suffit désormais de relever le courrier pour pouvoir lire normalement les mails système et surveiller le fonctionnement de l’ordinateur.

Limitations

  • Les mails ne peuvent être lus QUE depuis la machine sur laquelle ils se trouvent. Pour les récupérer d’une autre machine, il faudra installer un serveur POP ou IMAP afin que le lecteur de messagerie de l’ordinateur client puisse accéder à ces mails. Cela fera l’objet d’un prochain article.
  • Il est possible d’envoyer les mails sur une autre adresse en indiquant l’adresse de destination pour l’alias du root dans le fichier /etc/aliases ainsi: root: manu@fai.fr. Cela oblige, par contre, l’ordinateur à posséder un système d’envoi de mails externes, tel que postfix ou exim4, paramétré correctement. Lorsque ce n’est pas nécessaire (si l’ordinateur est sur un réseau que je contrôle), je préfère éviter d’avoir un système d’envoi de mails que je serais obligé de maintenir et contrôler. En particulier si un logiciel s’affole et envoie plusieurs centaines de messages au système en quelques minutes (vécu), le risque de passer pour spammeur est grand!

Messages d’erreur

Impossible de localiser le fichier de spool du courrier

Impossible de localiser le fichier de spool du courrier

Ce message vous indique que le fichier /var/spool/mail/user n’existe pas. Il peut ne pas exister pour 2 raisons principales:²

  • L’utilisateur n’est pas déclaré comme devant recevoir les messages de root dans le fichier /etc/aliases
  • Aucun mail n’a été envoyé par le système, donc il n’y a pas de fichier contenant les mails…
Impossible de créer les verrours

Impossible de créer les verrours

Ce message vous informe que les droits ne sont pas corrects. Dans une console, la commande sudo chroot 01777 /var/spool/mail résoudra le problème.

¹ Opera mail ne semble pas pouvoir être utilisé pour accéder à ce type de compte mail.

² Assurez vous que la partition /var est montée, accessible à l’utilisateur, droits corrects, etc…

Envoyer un mail avec pièces jointes en python

Envoyer un mail avec pièces jointes avec python est simple en utilisant le code ci dessous.


import smtplib

import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encodersdef send_mail(send_from, send_to, subject, text, files=[], server="localhost"):

assert type(send_to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = COMMASPACE.join(send_to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )

for f in files:
part = MIMEBase('application', "octet-stream")
print f
part.set_payload( open(f,"rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))

msg.attach(part)

smtp = smtplib.SMTP(server)
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.close()

retour = "Une erreur s'est produite lors de l'envoi de mail"
files = [ 'monfichier1.zip', '/tmp/le_fichier.pdf' ] # les pièces jointes avec leur chemin
destinataires = [ 'moi@monsite.com', 'moncopain@chez.lui' ]

try:
send_mail('expediteur@monsite.com', destinataires , "Sujet du mail", "Texte du message",files , 'smtp.free.fr')
except:
send_mail('expediteur@monsite.com', [ 'adresse@secours.fr'] , " [ERROR ] Sujet du message", retour ,[] , 'smtp.free.fr')

C’est tout!

Ah, si!

  • N’utilisez pas ceci à tout va: il est facile de se faire blacklister avec l’étiquette « spammeur ». Et il est très difficile de se faire dé-blacklister.
  • Attention à la taille des pièces jointes. Si vous dépassez la taille limite de votre FAI (30Mo chez free), une erreur bloque le script avec un message du type:  smtplib.SMTPSenderRefused: (552, ‘Message size exceeds fixed limit’, ‘expediteur@monsite.com’)