Gmailのバックアップ環境を作る

getmail

mailboxes に日本語のフォルダを指定するとエラーになる

  • Ubuntu 18.04 LTS
  • Python 2.7.15+

mailboxes = ALL だと二重に受信しているような気がするので mailboxes = ("[Gmail].すべてのメール", ) としたとき

Unhandled exception follows:
    File "/usr/bin/getmail", line 892, in main
    success = go(configs, options.idle)
    File "/usr/bin/getmail", line 171, in go
    'permissions\n' % (mailbox.encode('utf-8'), o))
  UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-14: ordinal not in range(128)

LC_ALL=ja_JP.UTF8 getmail ... とする

% python -c 'import sys; print(sys.getdefaultencoding())'
ascii

上記は未解決だが,存在しないフォルダを指定したときのエラーメッセージを出そうとして死んでるみたいなので mailboxes を修正

mailboxes = ("[Gmail]/すべてのメール", )

dovecot

% sudo apt install dovecot-imapd

  • /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir:LAYOUT=fs
  • /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain cram-md5
#!include auth-system.conf.ext
!include auth-passwdfile.conf.ext
  • /etc/dovecot/users
<username>:{CRAM-MD5}xxx ... xxx:<uid>:<gid>::<homedir>
パスワード部分は doveadm pw -s CRAM-MD5 で生成

% sudo chown root:dovecot users

% sudo chmod 640 users

ついでに古いメーラーのメールもMaildirにぶっこむ

変換失敗?

EdMaxでエクスポートしたファイルを変換するとメール数が減ってる

% grep ^From\\s bar.mbox | wc -l
423
% mb2md -s bar.mbox -d ~/temp
Converting /home/foo/bar.mbox to maildir: /home/foo/temp
Source Mbox is /home/foo/bar.mbox
Target Maildir is /home/foo/temp
333 messages.

90通減ってる?

“From “ で始まる行の前に空行が無いと前のメールと同じメールとして変換されてしまう

適当に修正

#!/usr/bin/perl
use strict;
use warnings;
use utf8;

my $prev_line = '';

while(<STDIN>)
{
    if (/^From\s/ && $prev_line !~ /^$/) {
        print "\n";
    }
    print;
    $prev_line = $_;
}

rainloop

参考