オタク日記
(Mac と Linux, 2017Q2)

目次

2017-05-03 (Wed): メールシステムのメンテナンス
2017-04-26 (Wed): お願いしますよ、Analog Device さん
2017-04-15 (Sat): Raspberry Pi 再訪

古い日記:
2017Q1   2016Q4   2016Q3   2016Q2   2016Q1  
2015Q4   2015Q3   2015Q2   2015Q1   2014Q4   2014Q3  
2014Q2   2014Q1   2013Q4   2013Q3   2013Q2   2013Q1  
2012 年   2011 年   2010 年   2009 年   2008 年   2007 年  
2006 年   2005 年   2004 年   2003 年   2002 年   2001 年


2017-05-03 (Wed): メールシステムのメンテナンス

我が家というか弊社のメールシステムは (とりわけ凄い機能を持ってる訣ではないのに) 維持するのに手間暇が相当かかる…… とりわけ、 サーバの引越しなんかでは、 Dovecot/Postfix/Procmail/Mailman のケアに殆どの時間が費やされる。なのでその都度「骨折り損の草臥れ儲け」 だと痛感、「これはちょっと整理しなくては」と決心するのだが、 曲がり形にも動くようになったら、早速「喉元過ぎれば……」になってしまう。

Mail Security は大変

前にもぼやいたような気がするが、ツールやサーバ群はどんどん進歩しているのに、 メンテナンスがちっとも楽にならないのは、 セキュリティがらみ要求もどんどん高まっているからだろうと思う。

あんまり込み入っているので、ちょっと真面目に記録に残した方が、 結局は時間の節約だろう、と思って 頑張って書いた「絵」が、 さっそく古くなっているの気がついた……(今は .forward は使っていない)。ちょっと面倒だったけど修正して再掲。

Mail System Configuration
自宅外サーバのメールシステムの概要

この図の左の方のネットワーク越しの SSL/TLS アクセス (SMTP/587 と IMAPS/993) が今回の話題。

Wanderlust が不調

Mac でハック の応用編がなかなか出てこないのは、Wanderlust (WL) のせいです :-p。結構面倒臭いので、私のように、 頻繁に使うメールアカウントが四つくらいもあり、さらに幾つか ML を購読している、なんていう昔ながらのメールユーザでもなければ、 そのメリットは実感できないだろうし、つぎ込んだ労力もペイしないだろう、 と思った訣。(自分でもペイしているかどうか未詳 :-)

この一年余りは安定しているし、package パッケージでほぼ自動でアップデートできるようになったので、 そろそろ、(余計なお世話の) Mac でハック (応用編) に書こうかな、 と思っていた。(唯一の「不満」は、package で、 アップデートした直後は何故か IMAP が働かなくなる事くらい。)

しかし、最近、アップグレードの後、再起動してもやっぱり動かない、 という事があった。MBA に Wanderlust + EmacsMac.app の環境があるし、Mail.app でも、宅外サーバや、gmail.com の Dovecot (や Gimap) にアクセスできるので、然程慌てずに、ゴチャゴチャやってると、 しばらくして package がアップグレードされたか何かで、また動くようになった。

が、その時の「ゴチャゴチャ」が不味かったのか、さる ML のフォルダが読み込めなくなってしまった。 "Resuming Thread Structure" というメッセージが出っぱなしとなり、コントロールが戻って来なくなる。 一度、しばらく待って見ようと思って、4-5 時間放置しておいたら、 EmacsMac.app のメモリ専有量が 6 GB まで行ってそのままハングしていた……パニック! よりにもよって、それが起きたのは、 ltspice という ML (Yahoo groups) で LTspiceIV for Mac がアップグレードもインストールもできなくなった頃だったので、 これはとっても焦った。結局

  1. Mail.app に otacky.jp のメールアカウントを再度開設。 そこから問題のありそうなメッセージを消していってみた。 しかし結局全部消してしまう事になったが、それでも問題は解決せず。 (Mail.app では全部消えているのに、WL から見ると 3000 くらいもメッセージが残っている事になっている。)
  2. ~/.folders 内で、件のフォルダを削除。 これもフォルダを作り直せば元の木阿弥。
  3. emacs から elmo-cache-expire-by-age 14 を実行して、3 GB 近くあった ~/.elmo/cache を 18 MB くらいに減らした。 こうした直後も、一時的に「3000 くらい残っている」という表示が残って ガッカリしたが、そのうちに実数を表示するようになった。(その間にも、 ML にはメッセージが上がってくるので、ゼロではない。)
という事で、ようやくそれらしい動作が戻ってきた。

IMAPS と GnuTLS

しかし、その四苦八苦の中で、見過せない現象を見てしまった…… EmacsMac.app の*Messages* バッファで改めて再現させると
Resuming thread structure...done
Opening TLS connection to ‘imap.otacky.jp’...
Opening TLS connection with ‘gnutls-cli --x509cafile nil -p 993 imap.otacky.jp’...failed
Opening TLS connection with ‘gnutls-cli --x509cafile nil -p 993 imap.otacky.jp --protocols ssl3’...failed
Opening TLS connection with ‘openssl s_client -connect imap.otacky.jp:993 -no_ssl2 -ign_eof’...done
Opening TLS connection to ‘imap.otacky.jp’...done
Selecting %inbox:fukuda@imap.otacky.jp...done
Checking folder diff...done
Updating marks... 
つまり、gnutls-cli で、プロトコルを変えて二回チャレンジして失敗、 三度目で openssl に変更して、ようやくログインに成功した、という事らしい。 (しかし、これは cafile が nil になっているので然程不思議ではない。)

という事で、falcon にもとから有る ca file で手動で試してみた……

fukuda@falcon:~% gnutls-cli --x509cafile /opt/local/etc/openssh/cert.pem  -p 993 imap.otacky.jp
Error setting the x509 trust file
Resolving 'imap.otacky.jp:993'...
Connecting to '128.199.138.76:993'...
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
    .....
	Public Key PIN:
		pin-sha256:EL50cKdw2UTywDXQQos8RMw9SPul2zHwhJS2Wda3aks=
	Public key's random art:
		+--[ RSA 2048]----+
		|   +o ..  o.     |
		|  . .... o       |
		|     .+ o .    . |
		|       O . . . .o|
		|      o S E o . o|
		|     . . o o   . |
		|      . . o .   o|
		|         o  . +..|
		|        .... + ..|
		+-----------------+

- Certificate[1] info:
 - subject `CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US'....
    
- Status: The certificate is NOT trusted. The certificate issuer is unknown. The certificate chain uses insecure algorithm. 
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.
*** handshake has failed: Error in the certificate. 
となる。この "The certificate is NOT trusted." にすっかり騙されてしまい (というか私の勝手な勘違いだが) サーバ側の certificate がマズいに違いないと思い込んでしまった。

そのあたりのすったもんだは措いて、また Google さんに尋ね回っての四苦八苦も扨措いて、結局その勘違いに気付いて、 自分 (falcon - EmacsMac.app) の側の ca file 新しいものにしてみる事に。 (唐突に Python なのは、たまたま最初に行き当たった入手方法だっただけです :-p)

fukuda@falcon:~/pve36% . bin/activate
(pve36) fukuda@falcon:~/pve36% pip install certifi
Collecting certifi
  Using cached certifi-2017.4.17-py2.py3-none-any.whl
Installing collected packages: certifi
Successfully installed certifi-2017.4.17
(pve36) fukuda@falcon:~/pve36% python
Python 3.6.1 (default, Apr 24 2017, 04:48:47) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import certifi
>>> certifi.where()
>>> '/Users/fukuda/pve36/lib/python3.6/site-packages/certifi/cacert.pem'
fukuda@falcon:~% sudo mkdir /opt/local/etc/gnutls      
fukuda@falcon:~% sudo cp
    /Users/fukuda/pve36/lib/python3.6/site-packages/certifi/cacert.pem  \
    /opt/local/etc/gnutls/ 
のようにセットしておくと、これを使って
fukuda@falcon:~% gnutls-cli --x509cafile /opt/local/etc/gnutls/cacert.pem  -p 993 imap.otacky.jp
Processed 154 CA certificate(s).
Resolving 'imap.otacky.jp:993'...
Connecting to '128.199.138.76:993'...
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
 - subject `CN=www.otacky.jp', issuer `CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US', .....
    .....
	Public Key PIN:
		pin-sha256:EL50cKdw2UTywDXQQos8RMw9SPul2zHwhJS2Wda3aks=
	Public key's random art:
		+--[ RSA 2048]----+
		|   +o ..  o.     |
		|  . .... o       |
		|     .+ o .    . |
		|       O . . . .o|
		|      o S E o . o|
		|     . . o o   . |
		|      . . o .   o|
		|         o  . +..|
		|        .... + ..|
		+-----------------+

- Certificate[1] info:
 - subject `CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US',.....
- Status: The certificate is trusted. 
- Description: (TLS1.2)-(ECDHE-RSA-SECP256R1)-(AES-256-GCM)
- Session ID: DE:77:99:7A:FF:B9:AC:73:AE:C4:25:EE:1D:15:A4:E4:5D:18:3E:4A:D5:05:DD:4A:58:8B:11:D7:11:E9:B6:C7
- Ephemeral EC Diffie-Hellman parameters
 - Using curve: SECP256R1
 - Curve size: 256 bits
- Version: TLS1.2
- Key Exchange: ECDHE-RSA
- Server Signature: RSA-SHA256
- Cipher: AES-256-GCM
- MAC: AEAD
- Compression: NULL
- Options: safe renegotiation,
- Handshake was completed

- Simple Client Mode:

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
. login fukuda PASSWORD
. OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS .....] Logged in
. select inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft unknown-0 $Forwarded $NotJunk $Junk)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft unknown-0 $Forwarded $NotJunk $Junk \*)] Flags permitted.
* 1674 EXISTS
* 0 RECENT
* OK [UNSEEN 1626] First unseen.
* OK [UIDVALIDITY 1252205310] UIDs valid
* OK [UIDNEXT 71999] Predicted next UID
* OK [HIGHESTMODSEQ 7067] Highest
. OK [READ-WRITE] Select completed (0.000 + 0.000 secs).
....
のように、手動で IMAP4 でログインできた。

なんだ、それだけ事かぁ——元から有った certificate が、 "let's encrypt" (imap.otacky.jp) や、 "Google Internet Authority" (imap.gmail.com) が発行した certificate を認証できるものではなかっただけの事。

解ってみれば「それだけの事」だけど、それを lisp で書き表す方法が分らない……tls.el にある tls-program にパラメータを渡せば良いのだろうけど、どうやるのか見当もつかない。 Dennis さんのページにそれらしい事が書いてあって、 実は詳細はよく分らないのだけど、真似して書いてみたら、 一発で上手く行ったので、これで良い事にする :-p。 上の「ログインするごとに .elmo/cache を expire させる、とい うのを合わせて、

# ~/.wl
....
;;;; **** security ******
;; (setq tls-checktrust t)
;; (setq gnutls-verify-error t)
(let ((trustfile "/opt/local/etc/gnutls/cacert.pem"))
  (setq tls-program
	`(,(format "gnutls-cli --x509cafile %s -p %%p %%h" trustfile)
	  )))
(setq elmo-imap4-default-authenticate-type 'clear ;; 2016-09-16 (Fri): 
       elmo-imap4-default-stream-type 'ssl
       elmo-imap4-default-port '993)
;; 2017-05-01 (Mon): 
(elmo-cache-expire-by-age 14) ;; default is 50 days

まとめ

当初設定した際にいい加減にしていた事も含め、SSL/TLS によるログインに関する「現状」をまとめておく。

2017-04-26 (Wed): お願いしますよ, Analog Devices さん

このところ、どうも LTspice IV for Mac の調子がよくない。

大分前から、自動アップデートに失敗するようになり、 おかしいなぁと思っていた。しかし、本体は (細かい不具合はともかく) まあまあ動いているようだし、これをすぐ必要とするプロジェクトも有って、 そのまま使ってきたのだった。

ただ今回 (久し振りに) デバイスの登録をしようとしたら、 色々と「あまり細かいとは言えない不具合」が出てきた。仕方ないので、.TRAN (過渡) 解析は諦めて、お絵描きだけして、お茶を濁した。(接続図は PC 向けの LTspice IV より断然キレイなので……)

LTspice Schematics
LTspice for Mac の接続図は美しい……
(過渡解析を狙っていた回路ではありません)

それも一段落したので、さて、よくみてみよう、となった訣。

が、これがまた「どうにもこうにも」という体たらく。

万策尽きて、「しようがない、Windows 版の LTspice XVII へ移行するかな? (こっちはちゃんと動いているし、アップデートもできる)」 と思ったが、その前に一言文句を言ってやらねば、と、 MyLinear へ行って、(そこから、日本のサイトに飛ばされて) 「質問」欄にクレームを書いてみた。

実は前にも一度書いた事があるが、梨の礫だったので、 今回も返事は期待してなかったが、なんと翌朝メールで返事がもらえた。 それによると、

なんだとか。

そう言えば、AD が LT を買った、という記事を最近見た気がするが、 こっちへの影響を全く連想できなかったよ。 「それは大変だったろうな」とは思うけど、「全く動かない (多分意図的にインストール不能にしてあるのだと思う) アプリをサイトに置いたままにしてるのはどうよ」 という苦情の返事を書いておいた。

「(告知できなくて) 申し訳ない」と言っているのに、 怒りをぶつけるとは、なんだかクレーマーになった気分だが…… それはともあれ、こちらは「どうしたもんじゃろのう」状態。 LTspice という名前のせいで、 AD さんからは蔑ろにされるんだろなぁ……。ADspice って名前を変えてもいいから、なんとか Spice for Mac のサポートを続けてくれないかなぁ、 Analog Devices さん!


2017-04-15 (Sat): Raspberry Pi 再訪

最近またぞろ Raspberry Pi を触っている。(何と、われも工房の受託がらみ……)

RasPi の OS インストールやその上でのプログラミングにはかなり慣れていた筈なのだが、 間が開くと、対象がどんどん新しくなる上に、 自分の記憶が加速度的に曖昧になる事が相俟って、結構右往左往させられる事も多い。 なので、インストールメモの形で操作マニュアルを書いておく。

前提と目標は

OS イメージのダウンロード・インストール

ブート・設定

上のおまじないのおかげで、Display や Keyboard を直接継ぐ事なく、Ethernet 越しにアクセスできるようになっている。

環境整備

新設したアカウントを使って、さらに環境整備:

まとめ


133/1,050,031 Valid CSS! Valid HTML 5.0
Taka Fukuda
Last modified: 2017-05-10 (Wed) 05:14:29 JST