Transformar correo en estilo maildir a MH

En un intento de simplificar la gestión de mi correo, encontré el manejador moderno de correo (mmh - modern mail handler), que moderniza y simplifica el systema para gestión de correo NMH.

Como ya tengo getmail para descargar mi correo, primero intenté convertir del formato maildir a MH.

¿Cómo guarda el correo MH?

El formato en que se escribe el correo es elegante y consiste en:

  • Un directorio que contiene archivos de correo numerados comenzando desde 1.

  • Un archivo oculto llamado .mh_sequences que contiene información acerca del último correo, la lista de los correos que no se han leído y tal vez alguna otra información.

Pero este formato tiene problemas para garantizar que el correo se entrega correctamente.

Vinculando el correo en mh

Este método no ocupa tanto espacio y se resuelve con un script sencillo, en el que hay que modificar las primeras 3 líneas para que funcione de la manera esperada:

#!/bin/bash

# This script makes simbolic links from your OLDMAILDIR
# in order to build a NEWMAILDIR suitable for use in [mmh](http://marmaro.de/prog/mmh/ ).

# CONFIG_FILE file is a list or your mail in the format: mtime <tab> filename

OLDMAILDIR="$HOME/mail"
NEWMAILDIR="$HOME/newmail"
CONFIG_FILE="$HOME/.config/oldmails"

# find mail directories
MAILD="`find $OLDMAILDIR -type d -name cur`"

# find out how many mails where there before previous check
PREVMAILS=`wc -l "$CONFIG_FILE" | awk '{print $1}'`

# find all mails in those directories
# that are newer than last check
# and sort them from older to newer,
# store the result on a file.
find $MAILD -type f -newer "$CONFIG_FILE" | xargs mtime | sort >> "$CONFIG_FILE"

# find out which are the new emails
# so that we can add them to .mh-sequences
POSTMAILS=`wc -l "$CONFIG_FILE" | awk '{print $1}'`

# link files in the mmh folder `$NEWMAILDIR`
awk 'NR > '"$PREVMAILS"' {print "ln -s " $2 " $NEWMAILDIR/inbox/" NR}' "$CONFIG_FILE" | sh

# set the unread messages on mh
sed -i -e 's#^\(u:.*\)$#\1 '"$(( $PREVMAILS + 1 ))"'-'"$POSTMAILS"'#'  "$NEWMAILDIR/inbox/.mh_sequences"

Se requieren los siguientes programas, que salvo el vinculado vienen por defecto en cualquier *nix:

Había intentado primero el script de Andy Schofield, pero requería demasiada configuración para mi gusto, que no es obvia.

Tags// , ,
More Reading