メールのバックアップ
2015年8月26日
メールボックスは大事なデータの一つです。
中にはサービスのパスワード情報、ビジネスや家族の重要メールが多く、 データ損失を避けたい情報源の一つです。
バックアップ方法
クラウドベースバックアップ、有料なソリューションがいろいろありますが、 今回はオープンソースソフトウェアisyncのmbsync
というツールを利用します。
mbsync
はIMAPとMaildir形式を対応しています。
オンラインメールの多くはIMAPを対応しますので、mbsync
経由でmaildirとしてバックアップできます。
mbsync
を利用する前に設定ファイルを作成する必要があります。 デフォルトの設定ファイル~/.mbsyncrc
となります。
設定によって、いろいろなワークフローを実装できます。
メールボックスバックアップ(IMAP -> Maildir)
.mbsyncrc
IMAPStore myaccount-remote
Host imap.foo.jp
User account@foo.jp
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
MaildirStore myaccount-local
Path ~/.mail/account@foo.jp/
Inbox ~/.mail/account@foo.jp/INBOX
Channel myaccount
Master :myaccount-remote:
Slave :myaccount-local:
Patterns *
Create Slave
Sync Pull
SyncState *
解説
IMAPStore ストア名
: 「ストア名」のIMAPストア設定ブロック開始Host ホスト
: IMAPのホスト設定Account アカウント
: IMAPのユーザ名SSLType IMAPS
: 接続方法、IMAPS以外に{None
|STARTTLS
}を設定できますCertificateFile パス
: 証明書ファイルへのパス。SSLType
はNone
以外に必要です。
MaildirStore ストア名
: 「ストア名」のMaildirストアブロック開始Path パス
: MaildirフォルダへのパスInbox パス
: MaildirのInboxフォルダへのパス
Channel チャンネル名
: 「チャンネル名」のチャンネルブロック開始Master :ストア名:
: バックアップ元のストア指定Slave :ストア名:
: バックアップ先のストア指定Patterns *
: 同期するパターン、「*」はすべてをマッチするCreate Slave
: 存在しないメールボックスを作成する、「Slave」の場合にはコピ先に必要なメールボックスを作成Sync Pull
: マスターからスレイブへ同期するSyncState *
: 同期状態ステートファイルの保存先、「*」の場合はメールボックス内に保存します。
実行方法(すべてのチャンネル)
実行方法(特定なチャンネル)
IMAPサーバの制限により、一回ですべてのメールをコピーされないこともあります、 その場合は同期が完了するまでに再度コマンドを実行すればよいです。
バックアップ復元(Maildir -> IMAP)
メールボックスバックアップとほぼ同じ設定で、チャンネルのMaster
とSlave
を入れ替えます。
IMAPStore myaccount-remote
Host imap.foo.jp
User account@foo.jp
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
MaildirStore myaccount-local
Path ~/.mail/mail@foo.jp/
Inbox ~/.mail/mail@foo.jp/INBOX
Channel myaccount
Master :myaccount-local:
Slave :myaccount-remote:
Patterns *
Create Slave
Sync Pull
SyncState *
アカウント移行(IMAP -> IMAP)
mbsyncは直接一つのIMAPメールボックスの内容を別なIMAPメールボックスにコピーすることができます。 メールアドレスを変更の際に役立つ機能です。
設定では2つのIMAPストアとコピー用チャンネルとなります。
IMAPStore myaccount-from
Host imap.foo.jp
User account@foo.jp
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
IMAPStore myaccount-to
Host imap.bar.jp
User account@bar.jp
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
Channel imap-copy
Master :myaccount-from:
Slave :myaccount-to:
Patterns *
Create Slave
Sync Pull
SyncState ~/.mail/imap-copy
注意する箇所はChannel
のSyncState
設定。 IMAPストアに同期状態ファイルは保存できないため、 ローカルファイルに保存します。
メールクライアントと一緒に使う
maildir形式メールボックスを対応するメールクライアントを使えば、mbsync
をメールクライアントのメール取得コンポネントとして利用できます。
このワークフローには下記のメリットがあります:
- メールボックスをオフラインで利用できる
- 同期設定を細かくカスタマイズできる
- メールボックスの自動バックアップ
IMAPStore myaccount-remote
Host imap.foo.com
User account@foo.jp
Pass mypassword
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt
MaildirStore myaccount-local
Path ~/.mail/account@foo.jp/
Inbox ~/.mail/account@foo.jp/INBOX
Channel myaccount
Master :myaccount-remote:
Slave :myaccount-local:
Patterns *
Create Slave
Sync PullNew Push
SyncState *
大事な設定はSync
です。
PullNew Push
に設定することで、IMAPから新しいメールを取得してから、ローカルメールボックスの情報をIMAPへ同期する。 そのため、IMAP側の不具合やハックでメールが削除されても、バックアップのメールは削除されません。
mbsync -c myaccount
を実行ると同期できます。
cronjob
でmbsync
コマンドを登録するとメール同期を自動化できます。
Sync
設定で同期を細かくできるので、自分のメールワークフローに合わせることができます。
maildir
対応クライアント