mailsyncは、主に次の3種類のタスクに適しています。
ローカルに保存されている電子メールをサーバに保存されているメールと同期させる。
メールボックスを異なる形式または異なるサーバに移行する。
メールボックスの完全性チェックまたは重複の検索を行う。
mailsyncは、メールボックス自体(ストア)と2つのメールボックス間の接続(チャネル)を区別します。ストアとチャネルの定義は、~/.mailsyncで説明されています。ここでは、ストアの例をいくつか示します。
単純な定義は次のようになります。
store saved-messages {
pat Mail/saved-messages
prefix Mail/
}
Mail/とは、ユーザのホームディレクトリのサブディレクトリであって、フォルダsaved-messagesをはじめとする電子メールフォルダが格納されています。mailsyncがmailsync -m saved-messagesで始まっている場合、すべてのメッセージのインデックスは、saved-messagesにリストされます。次のように定義されている場合、
store localdir {
pat Mail/*
prefix Mail/
}
コマンドmailsync -m localdirを実行すると、Mail/の下位に保存されているすべてのメッセージがリストされます。これとは異なり、コマンドmailsync localdirを実行するとフォルダ名がリストされます。IMAPサーバでのストアの指定は次のようになります。
store imapinbox {
server {mail.edu.harvard.com/user=gulliver}
ref {mail.edu.harvard.com}
pat INBOX
}
上の例は、単にIMAPサーバ上のメインフォルダのアドレス指定です。サブフォルダのストアは次のように表示されます。
store imapdir {
server {mail.edu.harvard.com/user=gulliver}
ref {mail.edu.harvard.com}
pat INBOX.*
prefix INBOX.
}
IMAPサーバが暗号化接続をサポートしている場合、サーバ指定を次のように変更する必要があります。
server {mail.edu.harvard.com/ssl/user=gulliver}
変更しなければ、サーバ証明書が次のサーバに認識されません。
server {mail.edu.harvard.com/ssl/novalidate-cert/user=gulliver}
プレフィクスについては、後で説明します。
ここでMail/の下位のフォルダをIMAPサーバのサブディレクトリに接続する必要があります。
channel folder localdir imapdir {
msinfo .mailsync.info
}
mailsyncはmsinfoファイルを使用して、既に同期されているメッセージを追跡します。
コマンドmailsync folderを実行すると、次の処理が行われます。
メールボックスパターンが、両方の側で拡張されます。
作成されたフォルダ名からプレフィクスが取り除かれます。
フォルダがペアとして同期されます(片方が存在しない場合は作成されます)。
これにより、IMAPサーバ上のINBOX.sent-mailが、ローカルフォルダMail/sent-mail(前述の定義が存在する場合)と同期されます。個々のフォルダ間の同期は、次のように実行されます。
メッセージが両方の側に存在する場合は何も行いません。
片側にメッセージが存在せず、新規メッセージ(msinfoファイルに存在しない)の場合は送信されます。
単にメッセージが片側に存在し、古いメッセージ(msinfoファイルに存在する)の場合は削除されます(もう片方に以前存在したメッセージが削除されているため)。
同期によって、どのメッセージが送信送され、どのメッセージが削除されるかを事前に確認するには、mailsync folder localdirを使用して、チャネルとストアの両方に対しmailsyncを実行します。このコマンドを実行すると、ローカルホストにあるすべての新規メッセージのリストと共に、同期の際にIMAP側で削除されるすべてのメッセージのリストが作成されます。同様に、コマンドmailsync folder imapdirを実行すると、IMAP側にあるすべての新規メッセージのリストと共に、同期の際にローカルホストで削除されるすべてのメッセージのリストが作成されます。
データが損失した場合、最も安全な方法は、関連のチャネルログファイルmsinfoを削除することです。これにより、片方だけに存在するメッセージはすべて新規とみなされ、次回の同期の際に送信されます。
同期の対象となるのは、メッセージIDを持つメッセージのみです。メッセージIDのないメッセージは無視され、送信も削除もされません。メッセージIDのないメッセージは、通常、そのメッセージの送信または作成時にプログラムに障害が発生します。
IMAPサーバによっては、メインフォルダがINBOXとして識別され、そのサブフォルダが無作為に選択された名前(INBOXとINBOX.nameではなく)で識別されます。このようなIMAPサーバでは、サブフォルダだけに使用されるパターンを指定することができません。
IMAPサーバにメッセージを正常に送信すると、mailsyncが使用するメールボックスドライバ(c-client)が、特別なステータスフラグを設定します。このため、muttなど一部の電子メールプログラムでは、これらのメッセージを新規として認識できません。この特別なステータスフラグの設定を無効にするには、オプション-nを使用します。