Du mail sur un système itinérant

Ce billet va tâcher de décrire la configuration de la partie mail de mon laptop, vu comme une machine d’appoint itinérante. En voici le cahier des charges succints :

  • Des connexions partout sécurisées
  • De la connection directe quand on est connecté
  • Du cache quand on n’est pas connecté
  • Du choix si on désire se connecter
  • Utiliser le plus possible les mécanismes standard (i.e. pas de VPN ni de tunnel ssh)

Mon laptop est équipé des logiciels distribués par Debian GNU/Linux me permettant d’avoir une confiance assez relative dans les logiciels que je vais utiliser par la suite. Il s’agit bien sûr d’une machine d’appoint utilisée dans des conditions de mobilité et je souhaite que cette machine synchronise automatiquement une partie des mails lorsqu’elle est en ligne et me permette d’envoyer les mails lorsque je suis hors-ligne.

Je passerais rapidement sur l’utilisation de Awesome, urxvt et GNU/Emacs comme outils principaux pour m’arrêter à la solution que j’ai retenu pour la gestion des mails.

J’utilise mutt, en conjonction avec muttprofile pour changer de profile entre mes différentes sessions. Pour cela, il suffit de disposer des directives suivantes :

zsh 1198 % ls -lh .mutt total 16K lrwxrwxrwx 1 endymion endymion 32 oct. 13 20:01 profile.active -> profile.endymion_network -rw-r—r— 1 endymion endymion 1,8K juil. 24 22:13 profile.endymion -rw-r—r— 1 endymion endymion 974 oct. 13 22:23 profile.endymion_network -rw-r—r— 1 endymion endymion 1023 juin 27 19:47 profile.vincentxavier -rw-r—r— 1 endymion endymion 995 oct. 13 22:23 profile.vincentxavier_network

Un de ces fichiers contient par exemple :

# NAME : imap://endymion@thetys-retz.net # DESC : This profile display imap mailboxes for endymion@thetys-retz.net account .source ~/.muttrc.commons set folder=”imap://mail.thetys-retz.net” source ~/.muttrc.folders set imap_user=”endymion” set imap_pass=~/.local/bin/netrc.pl mail.thetys-retz.net endymion # Mutt is able to deal with IMAP subscription, just enable it with # this variable set imap_check_subscribed=”yes” set imap_list_subscribed=”yes” # Mutt is able to send mail over various method, smtp being one of the # methods. These setting allows you to customize it. Beware that some # internet provider block port 25, so be sure to send on some other port. set smtp_url=”smtps://username@mail.thetys-retz.net” set smtp_pass=~/.local/bin/netrc.pl mail.thetys-retz.net endymion

Lorsque je ne suis pas connecté, j’utilise la version suivante :

# NAME : endymion@thetys-retz.net # DESC : This profile display synchronised folders for endymion@thetys-retz.net account. source ~/.muttrc.commons set folder=”~/.maildir/endymion@thetys-retz.net/” source ~/.muttrc.folders mailboxes =INBOX =Sent =Brouillons =Admin

En ne précisant pas l’adresse du serveur smtp, Mutt va utiliser la version local de sendmail, qui chez moi est fournie par postfix. Et c’est là que l’utilisation de postfix va se révéler intéressante. Voici déjà une copie de ma configuration :

# TLS parameterssmtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.keysmtpd_use_tls=yessmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_tls_session_cache_database = btree:${data_directory}/smtp_scachesmtp_sasl_auth_enable = yessmtp_sasl_security_options = noanonymoussmtp_use_tls = yessmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwdsmtp_tls_CAfile = /etc/postfix/mail.thetys-retz.net.pem# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for# information on enabling SSL in the smtp client.myhostname = tauceticentral.thetys-retz.netalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliases#myorigin = /etc/mailnamemyorigin = thetys-retz.netmydestination = relayhost = [mail.thetys-retz.net]:587mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128mailbox_command = mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-onlyinet_protocols = alldefer_transports = smtp

Cette configuration permet de stocker tous les messages envoyés au serveur local, via sendmail et de les mettre dans une file d’attente s’il s’agit de les envoyer par smtp. Dès que je suis connecté, il suffit de lancer (manuellement ou autmatiquement) un postqueue -f pour vider la file d’attente. Le relais se fait exclusivement via mon propre serveur de mail via une connexion chiffrée et authentifiée. Pour cela, il ne faut pas oublier le mot de passe SASL :

# destination credentials[mail.thetys-retz.net]:587 remotemail:password

La configuration du système mail côté client a été jointe à ce billet.

Du côté serveur, il faut créer un utilisateur remotemail, qui servira pour les envois via un relais authentifié. Pour cela, il faut rajouter remotemail@thetys-retz.net reject au fichier /etc/postfix/local_part. Dans la configuration de postfix, il ne faut pas oublier d’ouvrir les protocoles smtps et submission dans /etc/postfix/master.cf sans oublier de rajouter check_recipient_access hash:/etc/postfix/local_part dans smtpd_recipient_restrictions

Tagcloud
PSL Mutt bash iSCSI Ubuntu Educ IPv6 authentification LED vélo Informatique vserver kernel identification Mathématiques orgcamp Bordage LaTeX OpenStack Iptables mail Réflexions beamer Libre PlanetUbuntuFr Voile Python postfix configuration Essai Vie numérique April CPL ArchLinux Internet Lectures auto hébergement installation PlanetUbuntu Dédibox shell automatisation Admin Sys dovecot JDLL LDAP Humour noir Web Mandriva Randonnée Fedora Coup de gueule GNU-Linux ssh Coups de gueule RaspberryPi Bretagne AdminSys Hadopi UbuntuFr Science-Fiction CAPES DNS loop ISN Drupal imap sudo sympa Spam Amis jeu nfs sieve fluxbox compilation fun Perso debug RATP dotclear cli OSM KDE Paris roundcube orgmode X.org Emacs Debian Épinay OpenSSL code fail eCryptfs Opinions Gentoo Technique Parinux Mozilla