imapsync で IMAP メールを同期する
目次 |
- imapsync
- IMAP メールサーバー間のメッセージを同期させることができる Perl スクリプト。
インストール
epel にあるので yum でインストール。(依存する perl モジュールが結構ある。)
yum install imapsync
使い方
host1 (Gmail) から host2 (Google Apps Mail) へ、メールメッセージをミラー(差分コピー)させる例。
imapsync \ --host1 imap.gmail.com --port1 993 --ssl1 --authmech1 LOGIN \ --user1 username --password1 password \ --host2 imap.gmail.com --port2 993 --ssl2 --authmech2 LOGIN \ --user2 foo@example.com --password2 password \ --dry
- Gmail は、IMAP アクセスがデフォルトで無効なので有効にする必要がある。
--dry
を付けドライラン(試験動作)してから、--dry
を外し本実行するようにする。--authmech
は PLAIN, LOGIN, CRAM-MD5 のうちどれか。- Google Apps Mail(独自ドメインの Gmail)の IMAP メールサーバ名は imap.gmail.com で、ユーザ名は foo@example.com のように指定する。
ミラーするフォルダを限定する
ミラーするフォルダを限定するには、 --folder フォルダ名A --folder フォルダ名B ...
で指定する。
Gmail の場合はラベルの設定で IMAP で表示 をオン・オフすることで、ミラーするラベルを指定することもできる。
IMAP サーバのフォルダ名は、[Gmail]/&MFkweTBmMG4w4TD8MOs- のように Modified UTF-7 (UTF7-IMAP) 方式でエンコードされている。エンコード・デコードは PHP の mbstring で可能。 [shell@centos]$ php -r 'echo mb_convert_encoding( "[Gmail]/&MFkweTBmMG4w4TD8MOs-", "UTF-8", "UTF7-IMAP");' [Gmail]/すべてのメール |
[INBOX] [Trash] [[Gmail]] [[Gmail]/&MFkweTBmMG4w4TD8MOs-] [Gmail]/すべてのメール [[Gmail]/&MLQw33ux-] [Gmail]/ゴミ箱 [[Gmail]/&MLkwvzD8TtgwTQ-] [Gmail]/スター付き [[Gmail]/&Tgtm+DBN-] [Gmail]/下書き [[Gmail]/&j,dg0TDhMPww6w-] [Gmail]/迷惑メール [[Gmail]/&kAFP4W4IMH8w4TD8MOs-] [Gmail]/送信済みメール [[Gmail]/&kc2JgQ-] [Gmail]/重要
Gmail のラベル
Gmail はメールにラベルを付けることでフォルダ分けしているように使うことができる。
ラベルは大きく分けて、デフォルトで用意されている システム ラベル と、自由に作ることのできる ラベル の2つがある。
メールは、システムラベルの 下書き、すべてのメール、ゴミ箱、迷惑メール のどれか1つに必ず属している。
メールに複数のラベルを付けると、そのメールは複数のフォルダに存在しているように見える。
システムラベル = フォルダ |
2 つの Gmail を同期する
Gmail を複数アカウント利用している場合、サブのアカウントに届いたメールをメインのアカウントに(自動)転送させることで、1つのアカウントのみチェックするだけで済むようになるので、便利に利用できる。
しかし、自動転送は迷惑メールと判断されたメールについては転送されないので、たまにサブ・アカウントの迷惑メールをチェックする必要がある。
これでは面倒なので、サブ・アカウントの迷惑メールを、メイン・アカウントの迷惑メールに imapsync を使い定期的にコピーすれば、サブ・アカウントの迷惑メールをチェックする必要もなくなる。
メール転送だけだと迷惑メールと判断されたメールが転送されない。
迷惑メール をコピーする imapsync コマンド
imapsync \ --host1 imap.gmail.com \ --port1 993 \ --ssl1 \ --authmech1 LOGIN \ --user1 sub@gmail.com \ --password1 サブ・アカウントのパスワード \ --host2 imap.gmail.com \ --port2 993 \ --ssl2 \ --authmech2 LOGIN \ --user2 main@gmail.com \ --password2 メイン・アカウントのパスワード \ --folder "[Gmail]/&j,dg0TDhMPww6w-" \ --fast \ --delete
--folder "[Gmail]/&j,dg0TDhMPww6w-"
で迷惑メールのみ指定しコピーする。- コピー後は
--delete
で削除する。