On this page... (hide)

  1.   1.  基本使用
  2.   2.  让同步过程更健壮

1.  基本使用

OfflineIMAP 可以直接在两个 IMAP 服务同步数据。安装 OfflineIMAP (绝大多数 linux 发行版自带这个包,或者从 GitHub 下载最新版本)之后,编辑 ~/.offlineimaprc 文件,类似如下内容:

# Sample minimal config file.  Copy this to ~/.offlineimaprc and edit to
# suit to get started fast.

[general]
socktimeout = 30
accounts = Test

[Account Test]
localrepository = Local
remoterepository = Remote

[Repository Local]
type = IMAP
remotehost=imap.gmail.com
remoteuser=some_user@some_domain.com
remotepass=some_user_password
ssl=yes
realdelete=no
folderfilter = lambda folder: True if folder in ['INBOX', 'Drafts', 'Sent'] else False

[Repository Remote]
type = IMAP
remotehost=imap.some_imap_server.com
remoteuser=some_user@some_domain.com
remotepass=some_user_password
ssl=yes
realdelete=no
folderfilter = lambda folder: True if folder in ['INBOX', 'Drafts', 'Sent'] else False

注意以上配置文件中,我设置了 timeout 参数。OfflineIMAP 默认的 timeout 是 None,表示除非服务器端明确断开网络连接,否则它会一直等,等到天荒地老。。所以建议还是设置一个 30~60 秒之间的 timeout 值比较可靠。

之后直接执行 offlineimap 指令,就会按照配置文件中的设置启动同步过程。更详细的配置文件说明参考 官方文档 ,以及随源代码的示例 conf 文件(Debian 下这个示例文件在 /usr/share/doc/offlineimap/examples/offlineimap.conf.gz )。

2.  让同步过程更健壮

由于网络等原因,OfflineIMAP 崩溃的概率挺高的,而且如果是希望持续保持同步状态的话(也即被同步的两端都有可能有新操作),那么需要在其崩溃时自动重启,其中一个办法是可以用如下脚本来调用 OfflineIMAP 。

#!/bin/ksh
# remove any old instances of this shell script or offlineimap
for pid in $(pgrep offlineimap)
do
  if  $pid -ne $$
  then
    kill $pid
  fi
done

# wait for compiz (or whatever) to start and setup wifi
sleep 20
# If offlineimap exits, restart it
while true
do
  ( exec /usr/bin/offlineimap -u Noninteractive.Basic )
  sleep 60 # prevents extended failure condition
done

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki