平衡点


2011/07/04

_ 快適なメール環境の構築(2/n): offlineimap の設定, again

尊也さんに「Google Contacts 使うなら日本語の方が快適だよ」と唆されたので, 試しに変えてみたら(案の定) Gmail の規定のラベルが全て日本語になってしまい, offlineimap で幸せになれなくなってしまったので, メモ.

IMAP4 でのフォルダ名に「日本語」を使う話

本来ならそんな事する気はなかったのですが.

"[Gmail]/All Mail" とかは Gmail を日本語にすると "[Gmail]/すべてのメール" となる. この状況で IMAP 接続すると, modified UTF-7(RFC 2060(日本語訳)) でエンコードされたフォルダ名が取得される. wanderlust なんかでは

;; 日本語フォルダ対策
(setq elmo-imap4-use-modified-utf7 t)

などと設定しておけば良いわけだが, offlineimap の場合は folderfilter とか nametrans などで困ってしまった.

  • 安直にやるなら, utf-7 のフォルダ名を(読み難いけれど)使うのかな?
  • Get offlineimap working with non ASCII characters. にある様に, utf-7 <-> utf-8 変換をする python ファイルを読み込んで, nametrans や folderfilter で使用する, という手もある.

というわけで, 安直にやってみた.

# source: python
# すべてのメール: '[Gmail].&MFkweTBmMG4w4TD8MOs-'
# スター付き: '[Gmail].&MLkwvzD8TtgwTQ-'
# ゴミ箱: '[Gmail].&MLQw33ux-'
# 迷惑メール: '[Gmail].&j,dg0TDhMPww6w-'
# 送信済みメール: '[Gmail].&kAFP4W4IMH8w4TD8MOs-'
# 下書き:'[Gmail].&Tgtm+DBN-
nametrans = lambda foldername: re.sub('^\[Gmail\].&MFkweTBmMG4w4TD8MOs-', 'Archives',
          re.sub('^\[Gmail\].&MLkwvzD8TtgwTQ-', 'Starred',
          re.sub('^\[Gmail\].&MLQw33ux-', 'Trash',
          re.sub('^\[Gmail\].&j,dg0TDhMPww6w-', 'Spam',
          re.sub('^\[Gmail\].&kAFP4W4IMH8w4TD8MOs-', 'Sent',
          re.sub('^\[Gmail\].&Tgtm+DBN-', 'Drafts',
          foldername))))))
folderfilter = lambda foldername: foldername not in ['[Gmail]/&kAFP4W4IMH8w4TD8MOs-', '[Gmail]/&MLQw33ux-', '[Gmail]/&kAFP4W4IMH8w4TD8MOs-', '[Gmail]/&Tgtm+DBN-']

とりあえずコレで行ってみる.

offlineimap を cron から呼ぶために

offlineimap のパスワードを gpg 暗号化した別ファイルから読み込むようにしているので, cron で動かすと gpg の複合ではまる. 鍵の管理は gpg-agent 任せなので, pinentry-gtk-2 が表示できる X 環境を cron に渡すようにすれば良い. 例えば, 以下の様なスクリプトを cron でまわすようにしてみる

# source: sh
#!/bin/sh
# -*- mode:sh; coding: utf-8-unix; indent-tabs-mode: nil -*-
#  offlineimap-cron.sh
#
# Copyright(C) Youhei SASAKI All rights reserved.
# $Lastupdate: 2011/07/12 21:20:57$
# Author: Youhei SASAKI <uwabami@gfd-dennou.org>
# License: GPL-3+
#
#  Code:
#########################################################################
# for personal settings
OFFLINEIMAP_PID=~/Mail/.offlineimap/pid
OFFLINEIMAP_CONF=~/.offlineimaprc
UI=quiet
# access for current session
ck_pid=$(ps -C ck-launch-session  -o pid --no-heading | sed 's/^ //g')
[ $(ps -p `cat $OFFLINEIMAP_PID` -o pid --no-heading) ] && exit 0
[ -z $ck_pid ] && exit 0
local DBUS_SESSION_BUS_ADDRESS XDG_SESSION_COOKIE GPG_AGENT_INFO
for var in DBUS_SESSION_BUS_ADDRESS XDG_SESSION_COOKIE GPG_AGENT_INFO; do
    VAL=$(sed 's/\x00/\n/g' /proc/$ck_pid/environ | grep $var)
    var=$VAL ; export $var
done
[ $(ps -p `cat $OFFLINEIMAP_PID` -o pid --no-heading) ] \
  || nice -n 19 offlineimap -c $OFFLINEIMAP_CONF -u $UI -o &

console-kit を使ってない時には ck_pid の所を適宜弄ると良いかと.


連絡先など
最近の日記
  • 2024/05/10
    • 1. 特定の文字列を含むRubyスクリプトをEmacsで開くと CPU100% で止まります
  • 2024/04/28
    • 1. CF-SR3 での生活環境構築 (できてない)
  • 2024/03/29
    • 1. Debian GNU/Linux on CF-SR3
  • 2024/03/25
    • 1. org-mode → beamer でのリスト記号の一時変更
  • 2024/03/22
    • 1. 静的htmlによるGit Repository Browser
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|04|05|
Back to Top ▲