nametrans confusion ...

Sebastian Spaeth Sebastian at SSpaeth.de
Thu Feb 16 15:23:50 UTC 2012


On Wed, 8 Feb 2012 14:18:05 +1100, Cameron Simpson <cs at zip.com.au> wrote:
> "OLD/2012/getmail". The remote folder may be "MD/OLD/2012/getmail" or
> "MD/OLD.2012.getmail" or even "MD.OLD.2012.getmail"

>   offlineimap -c myconfig.cfg -f MD/OLD/2012/getmail, -l a-logfile

> and it does not seem to be pulling messages from the remote
> OLD/2012/getmail folder. (It makes the local one, perhaps purely because
> it is named on the command line?)

If it does create the folder, it seems to get the mapping right.
 
> I'm using this config:
>     [general]
>     pythonfile = ~/offl.py

>     [Repository cameron at cskk.local:143]
>     nametrans = lambda foldername: there2here(foldername)
>     [Repository _Users_cameron_mail]
>     type = Maildir
>     sep = /
>     nametrans = lambda foldername: here2there(foldername)
> 
>   prepath = 'MD/'
>   def here2there(f):
>     rf = (prepath + f).replace('/', '.')
>     print >>sys.stderr, "here2there(%s) -> %s" % (f, rf)
>     return rf

your local nametrans essentially prefixes "MD/" to any path. There is no
need for separator munging, we do that ourselves. I'd probably use:
nametrans lambda f: "MD/" + f
(but your solution looks good too)
 
>   def there2here(rf):
>     f = rf[len(prepath):] if rf.startswith(prepath) else rf
>     print >>sys.stderr, "there2here(%s) -> %s" % (rf, f)
>     return f

so your remote nametrans essentially strips away and mention of MD/, it
seems. (I would use a nametrans=lambda f: re.sub('^MD/','',f) here, but
yours seems to look good too)

> Amongst the stderr I see these referring to getmail:
> 
>   there2here(MD/OLD/2012/getmail) -> OLD/2012/getmail
>   there2here(MD/getmail) -> getmail
>   here2there(getmail) -> MD.getmail
>   here2there(OLD/2012/getmail) -> MD.OLD.2012.getmail
>   here2there(getmail) -> MD.getmail

Looks good. 

In a current version of OfflineImap, what does "--info" output? It
should show you a list of foldermappings and what is being filtered
out. (you can also use the -f option with it).

Now that I come to think about it, I see what might be an issue. The -f
option works on the untranslated remote folder name. And that is not
MD/OLD/2012/getmail but MD.OLD.2012.getmail I guess. Does that work?

Sebastian



More information about the OfflineIMAP-project mailing list