Come posso usare mutt con archiviazione locale, IMAP e invio istantaneo di nuove e-mail?


8

Sto pensando di passare a muttper e-mail. Tuttavia, ho alcuni requisiti.

  1. Vorrei poter archiviare l'e-mail offline.
  2. Vorrei che la posta elettronica venisse immediatamente inviata al mio computer locale invece del polling periodico (ad es. Utilizzando IMAP IDLE).

Per l'archiviazione offline, potrei usare imapofflineo isync. Capisco che quest'ultimo è più stabile. Tuttavia, per avere l'e-mail spinta su richiesta, l'unica opzione che ho trovato per isync è mswatch . Sfortunatamente, ciò richiede l'installazione di un programma sul server di posta elettronica remoto, il che non è possibile. Esiste una soluzione che mi consentirà di utilizzare mutt, con l'archiviazione e-mail offline e la consegna e-mail istantanea?


hai pensato di chiedere al sysadmin del tuo server di posta elettronica?
Cas

@cas Sì, ma ho pensato che sarebbe stato più semplice e veloce testarlo da solo. E una risposta più "definitiva", dato che probabilmente è un caso raro.
Sparhawk,

dovresti chiedere loro comunque perché potrebbero obiettare che stai installando mswatch o altri software sul loro server
cas

@cas Forse ho frainteso, ma ho pensato che mswatch fosse installato solo localmente.
Sparhawk,

1
il sito Web mswatch dice "mswatch monitora le mailstore per le modifiche eseguendo se stesso sia sul client che sul server (è richiesto l'accesso alla shell a ciascuno)". presumo che ciò significhi che deve essere installato su entrambi.
Cas

Risposte:


5

L'unico modo per "inviare" immediatamente la posta al client è che il server lo faccia non appena la posta viene recapitata. Ciò richiederà inevitabilmente l'installazione e l'esecuzione del software sul server di posta, quindi ogni potenziale soluzione avrà lo stesso problema mswatch.

Il polling frequente è probabilmente l'opzione migliore.

Nella mia esperienza, correre offlineimapo simili da cron ogni pochi minuti funziona abbastanza bene.

Alcuni programmi di recupero imap supportano il comando IDLE imap. IDLE non è esattamente "push" (dal momento che la posta è ancora estratta dal server dal client) ma generalmente si traduce in aggiornamenti quasi istantanei alla tua casella di posta locale.

offlineimap lo supporta ma il manuale dice "Il supporto IDLE è incompleto e sperimentale. È possibile che si verifichino dei bug".

fetchmail supporta IDLE dalla versione 5.0


Forse (di nuovo) ho frainteso. Attualmente con Thunderbird, posso impostarlo su "Usa il comando IDLE se il server lo supporta". Penso che questo stabilisca una connessione permanente con il server di posta elettronica, in modo che la consegna della posta sia immediata. Funziona perfettamente per i miei server di posta elettronica (NetOrigin, Gmail, mail.com, ecc.).
Sparhawk,

sì è vero. ma praticamente c'è poca o nessuna differenza per l'utente finale - IDLE mantiene aperta una connessione (usando risorse come descrittori di file sul server) e il polling si connette e si disconnette frequentemente. c'è un po 'più di overhead con il polling, ma se il tuo server di posta non riesce a farcela, allora ci sono problemi più grandi che i amministratori di sistema possono risolvere.
Cas

A proposito, offlineimapha un po 'di supporto per IDLE ma il manuale dice "Il supporto IDLE è incompleto e sperimentale. È possibile che si verifichino dei bug".
Cas

Nella mia esperienza, IDLE ha (al massimo) qualche secondo di ritardo prima di recuperare l'e-mail. OTOH, molti client di posta elettronica hanno un tempo di polling predefinito dell'ordine di ~ 5 minuti. Immagino che impostarlo su (diciamo) 10 secondi non sarebbe l'ideale. Dalla ricerca sul Web, un successo iniziale dice 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 (anche se questo è per un cliente specifico).
Sparhawk,

fetchmailsupporta anche IDLE dalla v5.0 fetchmail.info/fetchmail-features.html
cas

4

Sfortunatamente, le due possibilità suggerite nell'altra risposta erano imperfette. offlineimapera piuttosto buggy nel migliore dei casi. Ad esempio, non è possibile eseguire automaticamente uno script dopo l'arrivo della nuova posta. fetchmailnon si sincronizza in modo bidirezionale.

Invece, la soluzione che ho finito per usare era una combinazione di imapnotify e isync . Ho configurato imapnotifyper eseguire uno script quando viene attivata la nuova posta (tramite IDLE).

Questo script viene eseguito in mbsync "${channel}:INBOX"base all'account con posta. Quindi viene eseguito notmuch new. Infine, registra il numero di e-mail non lette in un file come di seguito. Il contenuto di questo file viene visualizzato su un pannello del mio ambiente desktop.

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

Aggiornare

imapnotify (nodejs-imapnotify) si disconnette regolarmente senza avvertimenti / errori e spesso manca la nuova posta. python-imapnotify funziona anche in modo intermittente. Tuttavia, goimapnotify funziona molto bene nella mia esperienza. Si abbandona raramente e quando lo fa (ad es. A causa della disconnessione della rete e / o della sospensione dei cicli), si riavvia rapidamente senza problemi.


È possibile eseguire uno script immediatamente dopo l'arrivo della posta con offlineimap: utilizzando l' postsynchookopzione nella configurazione; è così che corro notmuch new...
Jasonwryan,

@jasonwryan È quello specifico per IDLE? Non sono al 100% se capisco correttamente, ma questo dice"No hook exists for “run after an IDLE response”. Email will show up, but may not be processed until the next refresh cycle."
Sparhawk il

No, non uso Idle ...
Jasonwryan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.