User Tools

Site Tools


doc:appunti:linux:sa:maildir

Gestione posta con Maildir

NOTA: Queste note risalgono al 19 Ott 2004, bisognerebbe verificarne la validità con le nuove versioni Debian GNU/Linux.

Variabile d'ambiente MAIL

Accedendo via telnet e via ssh viene eseguito il modulo pam_mail.so che stampa il messaggio “You have new mail” e imposta la variabile MAIL. Per modificare il default (/var/mail/<username>) si modificano i file /etc/pam.d/login e /etc/pam.d/ssh modificando come segue:

session optional pam_mail.so standard noenv
session optional pam_mail.so standard dir=~/Maildir

Purtroppo il modulo PAM non viene utilizzato durante su(1), forse si potrebbe modificare /etc/pam.d/su.

Variabile d'ambiente MAILDIR

In /etc/login.defs si imposta QMAIL_DIR Maildir/ in modo che al login venga impostata la variabile MAILDIR=~/Maildir. Purtroppo login.defs non viene utilizzato sshd(8), ma solo da login(1) quando si entra via telnet e da su(1). Inoltre la variabile MAILDIR viene ignorata ad esempio da mutt.

MAIL e MAILDIR in un colpo solo

Visti i risultati deludenti di cui sopra, conviene impostare le due variabili direttamente in /etc/profile.

Mutt

Per convincere mutt a leggere la posta dalla maildir basta avere la variabile d'ambiente MAIL=~/Maildir. L'opzione set mbox_type=Maildir in .muttrc pare superflua.

POP3 e IMAP

Il server POP3 deve essere compatibile con Maildir, installato pertanto courier-pop. Pare che l'installazione di default vada bene. Eventualmente per creare la gerarchia ~/Maildir/ senza dover inviare una mail all'utente, è sufficiente far girare a nome dell'utente il comando maildirmake Maildir.

Anche il server IMAP deve essere compatibile Maildir. Installato courier-imap. Anche in questo caso pare che le impostazioni di default siano piu' che adeguate.

Sono state installate anche le versioni SSL dei due pacchetti.

Conversione da Maildir a mbox

In generale capita di fare il passaggio dal vecchio formato mbox (unico file per tutti i messaggi di una cartella) al più moderno Maildir (una cartella in cui ogni messaggio è un file). Tuttavia potrebbe essere necessario fare il contrario, ad esempio per importare una Maildir come posta locale di un client Thunderbird.

È possibile in questo caso utilizzare mutt con una sola riga di comando:

mutt -f "/backup/mail/.Sent/" \
  -e 'set mbox_type=mbox; set confirmcreate=no; set delete=no; push "T.*<enter>;sSent<enter><quit>"'

In questo esempio si esporta la Maildir archiviata in /backup/mail/.Sent/ nel file Sent (relativo alla directory corrente). In pratica mutt viene invocato indicando quale mailbox caricare, si impostano alcuni parametri tra cui il formato preferito mbox e infine si lancia una macro che ha il seguente significato:

T.* Seleziona tutti i messaggi della mailbox corrente.
;s Relativamente a tutta la selezione, salva in altra cartella (mbox).
Sent Nome del file mbox da creare.

Un'altra ricetta usa il comando formail installato dal pacchetto procmail, ecco un esempio da Maildir di Evolution a mbox di Thunderbird (Icedove in Debian):

#!/bin/sh
 
MAILDIR="$HOME/.local/share/evolution/mail/local/.Archiviate.2013"
MBOX="$HOME/.icedove/kg2aldhe.default/Mail/Local Folders/Archiviate.sbd/2013"
 
echo "Input Maildir: $MAILDIR"
echo "Output mbox:   $MBOX"
for file in `find "$MAILDIR"/cur -type f`; do
    cat $file | formail -A Date: >> "$MBOX"
done
doc/appunti/linux/sa/maildir.txt · Last modified: 2015/10/09 08:07 by niccolo