この話の続き。
ThunderbirdでドコモメールをGmailに自動転送する - kkobayashi_a’s blog
今までThunderbirdのフィルタ機能を使ってキャリアメールからGmailにモバメをコピーしていたけど、そのためだけに常時Thunderbirdを起動させておくのがどうもオーバースペックだなと思っていて。メモリ300~500MBくらい使ってるし。
近々Windowsを再インストールするので、せっかくだからThunderbirdを使わずコマンドラインでcronに登録できるようなものを探してみました。
どうやらimapsyncというツールで目的が達成できそう。
Official imapsync migration tool ( release 1.921 )
有料のソフトっぽいけど、GitHubで古いバージョンが公開されている。
makeの仕方がよく分からん。まあ中身はPerlスクリプトなのでそのまま実行できますね。
オプションはこんな感じ。
imapsync --host1 $HOST1 --user1 $USER1 --password1 $PASS1 --user2 $USER2 --password2 $PASS2 --gmail2 --folder INBOX --f1f2 INBOX=Mobame --nofoldersizes --nofoldersizesatend --noresyncflags --search "SENTSINCE 06-Apr-2019 OR FROM mls.ngt48.com FROM sp.hkt48.jp"
自分はGmailで"Mobame"ラベルを付けているので、--f1f2 INBOX=Mobame の設定でInboxのメールをMobameフォルダ(IMAP上ではラベルはフォルダ扱いになる)にコピーする。
--nofoldersizes --nofoldersizesatend は時短のため。
--noresyncflags はGmail側で既読にしたメールが次回のsyncで未読に戻ってしまうのを防ぐため。
--searchオプション、IMAPのsearch queryがポーランド記法らしく癖がある。モバメのアドレスを増やす場合は "OR OR FROM mls.ngt48.com FROM sp.hkt48.jp FROM mm.akb48.co.jp"という感じで書けばよい(と思う)。
おまけ(Cygwinで動かす場合)
Cygwinで動かすとpsのオプションがなんちゃらというエラーが出る。これはツール自身のメモリー使用量を "ps -o vsz" で取得しているため。
Thunderbirdを常駐させておくことに比べたらメモリー使用量なんて微々たるものなのでエラーなど無視しておいてもいいんだけど、せっかくなので直しておく。
https://github.com/imapsync/imapsync/pull/22
WindowsだけじゃなくてCygwinの場合もtasklistからメモリー使用量を取得するようにする。
実はここの修正だけでは不十分で、memory_consumption_of_pids_win32()関数内でCygwinのPID -> WindowsのPIDの変換をする必要があります。
Perlで書かれてると治すのが楽でいいわ。笑
sub memory_consumption_of_pids_win32 { # Windows my @PID = @_; if ( 'cygwin' eq $OSNAME ) { @PID = map { open my $fh, '<', "/proc/$_/winpid"; $_=<$fh>; tr/\x0A\x0D//d; $_ } @PID; }