neomutt
、一度メールヘッダーをキャッシュさせれば、次回からの起動は10秒もかからないが、それでも参照するラベル(フォルダ)を変えたりすると、少々待たされる。裏で読んでくれるとありがたいのだけど、読み終わるまで操作できないのが玉に瑕。ということで
OfflineIMAPを導入して少しでも快適にメール操作したい。
こちら前半は失敗ばかり書き連ねているので、とっとと成功例を知りたい人は 後半へ。
isyncは失敗
初めは isyncを導入しようとしたのだけど、以下にように認証エラーになってしまうので諦めた。
$ mbsync -a
Notice: Master/Slave are deprecated; use Far/Near instead.
C: 0/1 B: 0/0 F: +0/0 *0/0 #0/0 N: +0/0 *0/0 #0/0
IMAP command 'AUTHENTICATE PLAIN <authdata>' returned an error: NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)
C: 1/1 B: 0/0 F: +0/0 *0/0 #0/0 N: +0/0 *0/0 #0/0
ちなみに
#Pass
# To store the password in an encrypted file use PassCmd instead of Pass
PassCmd "gpg2 -q --for-your-eyes-only --no-tty -d ~/.config/neomutt/mailpass.gpg"
Pass
でもPassCmd
どっちも駄目だった。ちゃんとコマンド上で確認してもパスワードやユーザー名が合っているのに…1
OfflineIMAP
ということで OfflineIMAP - ArchWikiを見て設定していく。
手続きとしては難しくない。設定ファイルさえ ちゃんと 記述できれば、という当たり前な条件付きだが。
$ mkdir ~/Maildir
$ nvim $HOME/.offlineimaprc
$ offlineimap
$ nvim $HOME/.config/neomutt/neomuttrc
ドキュメントをちゃんと読むなり、ちゃんと知ってる人がみたら、バカじゃないか?というエラーにぶち当ったので、折角なので解説していく。
アカウント名が違うエラー
OfflineIMAP 7.3.4
Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v2.101 (bundled), Python v2.7.18, OpenSSL 1.1.1k 25 Mar 2021
Account sync main:
ERROR: Could not find section 'Repository main-remote' in configuration. Required for account 'main'.
ERROR: Exceptions occurred during the run!
ERROR: Could not find section 'Repository main-remote' in configuration. Required for account 'main'.
Traceback:
File "/usr/lib/python2.7/site-packages/offlineimap/accounts.py", line 278, in syncrunner
self.remoterepos = Repository(self, 'remote')
File "/usr/lib/python2.7/site-packages/offlineimap/repository/__init__.py", line 73, in __new__
exc_info()[2])
File "/usr/lib/python2.7/site-packages/offlineimap/repository/__init__.py", line 67, in __new__
repostype = config.get('Repository ' + name, 'type').strip()
File "/usr/lib/python2.7/ConfigParser.py", line 607, in get
raise NoSectionError(section)
アカウント名がズレてる。
[Account main]
[Repository main-local]
[Repository main-remote]
と合わせる必要がある。
ArchWikiにはGmail の設定として[Repository gmail-remote]
と記述されているので、コピペするとこうなる。
括弧が足らないエラー
$ offlineimap
OfflineIMAP 7.3.4
Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v2.101 (bundled), Python v2.7.18, OpenSSL 1.1.1k 25 Mar 2021
Thread 'Account sync main' terminated with exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/offlineimap/threadutil.py", line 159, in run
Thread.run(self)
File "/usr/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/site-packages/offlineimap/accounts.py", line 278, in syncrunner
self.remoterepos = Repository(self, 'remote')
File "/usr/lib/python2.7/site-packages/offlineimap/repository/__init__.py", line 84, in __new__
return repo(name, account)
File "/usr/lib/python2.7/site-packages/offlineimap/repository/Gmail.py", line 33, in __init__
IMAPRepository.__init__(self, reposname, account)
File "/usr/lib/python2.7/site-packages/offlineimap/repository/IMAP.py", line 37, in __init__
BaseRepository.__init__(self, reposname, account)
File "/usr/lib/python2.7/site-packages/offlineimap/repository/Base.py", line 55, in __init__
self.getconf('nametrans'), {'re': re})
File "/usr/lib/python2.7/site-packages/offlineimap/localeval.py", line 48, in eval
return eval(text, names)
File "<string>", line 1
lambda foldername:
^
SyntaxError: invalid syntax
フォルダ名の変更の設定で、括弧が足りてなかった。
nametrans = lambda foldername: re.sub('^\[Gmail\]/ゴミ箱', 'ゴミ箱',
re.sub('^\[Gmail\]/スター付き', 'スター付き',
re.sub('^\[Gmail\]/迷惑メール', '迷惑メール',
re.sub('^\[Gmail\]/下書き', '下書き',
re.sub('^\[Gmail\]/迷惑メール', '迷惑メール',
re.sub('^\[Gmail\]/送信済みメール', '送信済みメール',
re.sub('^\[Gmail\]/重要', '重要', foldername)))))))
とちゃんと閉じられるように記述する。
削除されたオプションを指定していた
Last 1 debug messages logged for Account sync main prior to exception:
thread: Register new thread 'Account sync main' (account 'main')
arimasou16 lemur ~ 100 % offlineimap
OfflineIMAP 7.3.4
Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v2.101 (bundled), Python v2.7.18, OpenSSL 1.1.1k 25 Mar 2021
Account sync main:
ERROR: the 'status_backend' configuration option is not supported anymore; please, remove this configuration option.
ERROR: Exceptions occurred during the run!
ERROR: the 'status_backend' configuration option is not supported anymore; please, remove this configuration option.
Traceback:
File "/usr/lib/python2.7/site-packages/offlineimap/accounts.py", line 280, in syncrunner
self.statusrepos = Repository(self, 'status')
File "/usr/lib/python2.7/site-packages/offlineimap/repository/__init__.py", line 58, in __new__
return LocalStatusRepository(name, account)
File "/usr/lib/python2.7/site-packages/offlineimap/repository/LocalStatus.py", line 45, in __init__
OfflineImapError.ERROR.REPO
status_backend = sqlite
が要らなかった。
ArchWikiのMinimal
には存在しているが削除する必要があった。
ちょっと調べると status_backend replacement? · Issue #527 · OfflineIMAP/offlineimap · GitHubには、それまでデフォルトがテキストだったけど、今ではsqliteだけしか対応していないために、このオプションは削除されたとのこと。
回答にもあるが、sqlite
をインストール記憶がなかったが、find ~/.offlineimap/* -type f -exec file '{}' \+
で確認すると
/home/arimasou16/.offlineimap/Account-main/LocalStatus-sqlite/INBOX: SQLite 3.x database, last written using SQLite version 3036000
とちゃんと使われいた。
長くなったので 続く。
-
offlineimap
では成功しているのでアプリ側の問題と思うのだけど。 ↩︎