Comment puis-je utiliser mutt avec le stockage local, IMAP et la transmission instantanée de nouveaux e-mails?

8

Je pense à passer à la muttmessagerie électronique. Cependant, j'ai quelques exigences.

  1. J'aimerais pouvoir stocker l'e-mail hors ligne.
  2. J'aimerais que les e-mails soient envoyés immédiatement sur mon ordinateur local, par opposition à une interrogation périodique (par exemple, en utilisant IMAP IDLE).

Pour le stockage hors ligne, je pourrais utiliser imapofflineou isync. Je comprends que ce dernier est plus stable. Cependant, pour envoyer des e-mails à la demande, la seule option que j'ai trouvée pour isync est mswatch . Malheureusement, cela nécessite l'installation d'un programme sur le serveur de messagerie distant, ce qui n'est pas possible. Existe-t-il une solution qui me permettra d'utiliser mutt, avec stockage de courrier électronique hors ligne et livraison instantanée de courrier électronique?

Sparhawk
la source
avez-vous envisagé de demander l'administrateur système de votre serveur de messagerie?
cas
@cas Oui, mais j'ai pensé qu'il serait peut-être plus simple et plus rapide de le tester moi-même. Et une réponse plus "définitive", car c'est probablement un cas rare.
Sparhawk
vous devriez leur demander quand même car ils peuvent s'opposer à ce que vous installiez mswatch ou d'autres logiciels sur leur serveur
cas
@cas J'ai peut-être mal compris, mais je pensais que mswatch n'était installé que localement.
Sparhawk
1
le site Web de mswatch indique que "mswatch surveille les magasins de messagerie pour les changements en s'exécutant à la fois sur le client et le serveur (un accès shell à chacun est requis)". je suppose que cela signifie qu'il doit être installé sur les deux.
cas

Réponses:

5

La seule façon de «pousser» le courrier immédiatement vers votre client est que le serveur le fasse dès la livraison du courrier. Cela nécessitera inévitablement que le logiciel soit installé et exécuté sur le serveur de messagerie, de sorte que chaque solution potentielle aura le même problème que mswatch.

Des sondages fréquents sont probablement votre meilleure option.

D'après mon expérience, l'exécution offlineimapde cron ou similaire toutes les quelques minutes fonctionne assez bien.

Certains programmes imap-fetching prennent en charge la commande imap IDLE. IDLE n'est pas exactement «push» (puisque le courrier est toujours extrait du serveur par le client) mais entraîne généralement des mises à jour presque instantanées de votre boîte aux lettres locale.

offlineimap le prend en charge mais le manuel indique que "le support IDLE est incomplet et expérimental. Des bugs peuvent être rencontrés."

fetchmail prend en charge IDLE depuis la version 5.0

cas
la source
Peut-être (encore une fois) je me méprends. Actuellement avec Thunderbird, je peux le régler sur "Utiliser la commande IDLE si le serveur le supporte". Je pense que cela établit une connexion permanente avec le serveur de messagerie, afin que la livraison des e-mails soit instantanée. Cela fonctionne très bien dès le départ pour mes serveurs de messagerie (NetOrigin, Gmail, mail.com, etc.).
Sparhawk
Oui c'est vrai. mais pratiquement il n'y a pas ou peu de différence pour l'utilisateur final - IDLE maintient une connexion ouverte (en utilisant des ressources telles que des descripteurs de fichiers sur le serveur), et l'interrogation se connecte et se déconnecte fréquemment. les interrogations sont légèrement plus lourdes, mais si votre serveur de messagerie ne peut pas y faire face, il y a des problèmes plus importants à résoudre par les administrateurs système.
cas
BTW, offlineimapa une certaine prise en charge pour IDLE, mais le manuel dit "La prise en charge IDLE est incomplète et expérimentale. Des bogues peuvent être rencontrés."
cas
D'après mon expérience, IDLE a (tout au plus) quelques secondes de retard avant d'aller chercher l'e-mail. OTOH, de nombreux clients de messagerie ont un temps d'interrogation par défaut de l'ordre de ~ 5 minutes. J'imagine que le régler sur (disons) 10 secondes ne serait pas idéal. De la recherche sur le Web, un premier coup dit Don't set the automatic send/receive interval too short [less than 5 minutes] or you could end up endlessly polling the mail server, send/receive errors and sometimes even duplicates (bien que ce soit pour un client spécifique).
Sparhawk
fetchmailprend également en charge IDLE depuis la v5.0 fetchmail.info/fetchmail-features.html
cas
4

Malheureusement, les deux possibilités suggérées dans l'autre réponse étaient imparfaites. offlineimapétait assez buggé dans le meilleur des cas. Par exemple, il n'y a aucun moyen d'exécuter automatiquement un script après l'arrivée de nouveaux messages. fetchmailne se synchronise pas bidirectionnellement.

Au lieu de cela, la solution que j'ai finalement utilisée était une combinaison d' imapnotify et d' isync . J'ai configuré imapnotifypour exécuter un script lorsqu'un nouveau courrier est déclenché (via IDLE).

Ce script s'exécute en mbsync "${channel}:INBOX"fonction du compte disposant de la messagerie. Ensuite, il s'exécute notmuch new. Enfin, il enregistre le nombre d'e-mails non lus dans un fichier comme ci-dessous. Le contenu de ce fichier est affiché sur un panneau de mon environnement de bureau.

mail_count_file="/home/foo/.cache/new_mail_count"
new_count=$(find ~/.mail/*/Inbox/new -type f | wc -l)
if [[ $new_count > 0 ]]; then
  echo $new_count > "$mail_count_file"
else
  if [[ -f "$mail_count_file" ]]; then
    rm "$mail_count_file"
  fi
fi

Mise à jour

imapnotify (nodejs-imapnotify) se déconnecte régulièrement sans avertissements / erreurs et manque souvent de nouveaux messages. python-imapnotify fonctionne également par intermittence. Cependant, goimapnotify fonctionne très bien dans mon expérience. Il abandonne rarement, et quand il le fait (par exemple en raison de déconnexions de réseau et / ou de cycles de suspension), il redémarre rapidement sans problème.

Sparhawk
la source
Vous pouvez exécuter un script immédiatement après l'arrivée du courrier avec offlineimap: l'utilisation de l' postsynchookoption dans la configuration; c'est comme ça que je cours notmuch new...
jasonwryan
@jasonwryan Est-ce spécifiquement pour IDLE? Je ne suis pas à 100% si je comprends bien, mais cela dit"No hook exists for “run after an IDLE response”. Email will show up, but may not be processed until the next refresh cycle."
Sparhawk
Non, je n'utilise pas Idle ...
jasonwryan