やるきなし

2015/08/27 18:11 / Wanderlust SMTP Auth Fail

何かの拍子に Wanderlust でメールが送れなくなった. *Message* には

Invalid response: AUTH PLAIN <文字列>

とあって,送信している情報を受信情報と勘違いしているらしい. SMTP なので,Wanderlust というか FLIM でコケているわけだが, ということで該当箇所は smtp.el の中.

いろいろ試していると,たまに送れる場合もあって, どうやらサーバのレスポンスが若干悪いか, その付近の同期処理(そもそも実装されてる?)に問題があるらしい (それ以上は調べられず).

追記(2015/8/28)

これ,どうやら AUTH PLAIN を送る前にコケているような気がしてきた. サーバー側の問題なような気がするが, icedove 等を使うと送信できるので良くわからない.

Process SMTP connection broken by remote peer
EHLO smtp.example.org
250-mail1.example.org
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
421 4.7.0 mail1.example.org Error: too many errors
AUTH PLAIN <文字列>

追記(2015/8/28)

たまに送れるのは,smtp 側で load balancer が動いているらしく, smtp.example.org から mail1.example.org に送られる場合は OK で mail2.example.org の場合は NG という,なんとも感じ悪い状況.

追記(2015/8/28)

この手の STARTTLS を使った SMTP を手動で送るやり方を見つけたのでメモ.

% gnutls-cli --crlf --x509cafile /etc/ssl/certs/ca-certificates.crt --port 587 --starttls-proto=smtp smtp.example.org
Processed 180 CA certificate(s).
Resolving 'smtp.example.org'...
Connecting to 'XXX.XX.X.XXX:587'...
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
略
- Certificate[1] info:
略
- Status: The certificate is trusted.
- Description: (TLS1.2)-(RSA)-(AES-128-GCM)
- Session ID: 略
- Version: TLS1.2
- Key Exchange: RSA
- Cipher: AES-128-GCM
- MAC: AEAD
- Compression: NULL
- Options: safe renegotiation,
- Handshake was completed

- Simple Client Mode:

EHLO smtp.example.org
250-mail1.example.org
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN 略
235 2.7.0 Authentication successful
MAIL FROM:<myn@example.org>
250 2.1.0 Ok
RCPT TO:<myn@example.org>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
To: myn@example.org
From: myn@example.org
Subject: test

test

--myn

.
250 2.0.0 Ok: queued as 略
quit
221 2.0.0 Bye
- Peer has closed the GnuTLS connection

追記(2015/8/28)

ちなみに AUTH PLAIN の後の文字列は以下のようにユーザ名とパスワードから作る.

echo -n '\0username\0password' | base64
AHVzZXJuYW1lAHBhc3N3b3Jk

デコードするには base64 -d に pipe で送ればいい.

2015/08/20 09:48 / screen.xterm-256color

gnome-terminal 上で screen を使っているのだが,TERM が sid では screen.xterm-256color になる.jessie だと TERM は screen (たぶん).

sid には /usr/share/terminfo/s/screen.xterm-256color が存在するが, jessie には存在せず,ssh 等で jessie の計算機に入った際に困る. shell で C-p とか C-b すると表示が崩れる. C-r で incremental search しようとすると表示が酷く崩れる.

ということで,思い出しながら terminfo をいじることにする.

infocmpの出力は例えば以下.

sid% infocmp
#	Reconstructed via infocmp from file: /usr/share/terminfo/s/screen.xterm-256color
screen.xterm-256color|GNU Screen with xterm using 256 colors,
	am, bw, km, mc5i, mir, msgr, npc, xenl,
	colors#256, cols#80, it#8, lines#24, pairs#32767,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS,
	is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~, kEND=\E[1;2F,
	kHOM=\E[1;2H, kLFT=\E[1;2D, kRIT=\E[1;2C, kb2=\EOE,
	kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
	kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kent=\EOM, kf1=\EOP,
	kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
	kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
	kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
	kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
	kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
	kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
	kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
	kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
	kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS,
	kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
	kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
	kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
	kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
	kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
	kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
	kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
	kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
	kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, op=\E[39;49m,
	rc=\E8, rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmacs=\E(B,
	rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>,
	rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
	rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;m,
	sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h,
	smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m,
	smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
	u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd,

これをファイルか何かに出力して tic で compile すると ~/.terminfo/s/screen.xterm-256color に compile 済み terminfo が保存され, これは /usr/share/terminfo/ よりも優先的に読まれる.

ということで,sid にて以下で ~/.terminfo/s/screen.xterm-256color を生成 (手元の環境だと jessie でも ~ は同じ NFS なのでこれでOK).

sid% infocmp screen.xterm-256color | tic -

もしくは全ユーザ向けに対応する場合は, /usr/share/terminfo/s/screen.xterm-256color に置いてしまうか, 以下で compile する.

sid% infocmp screen.xterm-256color > screen.xterm-256color.ti
jessie% sudo TERMINFO=/usr/share/terminfo tic screen.xterm-256color.ti

ちなみに screen.xterm-256color のおおもとの定義は ncurses source package の ncurses-6.0+20150810/misc/terminfo.src にあって,以下のような感じ.

screen.xterm-256color|GNU Screen with xterm using 256 colors,
        use=xterm+256setaf, use=screen.xterm-new,

2015/08/11 17:09 / Wanderlust iso-2022-jp 半角カタカナ問題

半角カタカナは ISO-2022-JP (7bit) に含まれないので,半角カタカナを含むメールを

Content-Type: text/plain;charset=iso-2022-jp

で送られても困るという話.最近の大抵の環境では文字化けを起こさないが, 手元の Wanderlust では化けてしまう.

http://qiita.com/kkimura/items/4cc94dff1c4df24fbdc8によると CP50220 (JISに対するMicrosoftによる拡張を含んだCP)だと思い込めばいいらしい.

cp5022x.el (cp50220, cp50221, cp50222, cp51932 が定義されている) を適当なところに置いて,

(require 'cp5022x)
(add-to-list 'mime-charset-coding-system-alist '(iso-2022-jp . cp50220))

を ~/.wl に記述しておけば文字化けが解消される. 手元の環境では他の設定無しで,返信の際は自動的に UTF-8 になってくれる.

ちなみに今回遭遇した半角カタカナを iso-2022-jp で送るメールソフトは以下.

User-Agent: SquirrelMail/1.4.21

2015/08/08 16:24 / libstdc++6: Breaks: libboost-date-time1.55.0

Debian GNU/Linux sid で依存関係が混乱していて upgrade できない. どうやら libstdc++6 Breaks (破壊) libboost-date-time1.55.0 になっていて, libboost-date-time1.55.0 に依存するものに関して削除を提案される. 手元では blender, libreoffice. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794774によると, iceweasel,gnome-shell, gnome-core, gdm も,とのこと.

そして,今回 libstdc++6 は 5.1.1-14 → 5.2.1-14 なのだが, 5.2.1-14 に依存する upgradable package が upgrade できない. GCC 5 が Default になる,というのとも関連しているらしい.

追記(2015/8/11)

手元の aptitude では blenderinkscape がネックになっていて, libstdc++6 と新しい libstdc++6 に依存するものが upgrade できない.

libreoffice の libboost-date-time1.55.0 依存は 解消済. blender (2.74+dfsg0-4+b1) は upgrade の気配なし(boost 1.55 に依存のまま). inkscape は,

に依存しており,これらが GCC 5 版の と conflict しており upgrade できない.

追記(2015/8/19)

inkscapeに関しては 0.91-5+b1 (+b1 というのは binary non-maintainer upload)で解決した模様.

追記(2015/8/19)

blender は消すことにした.

2015/07/27 18:18 / Java Plugin (32bit, 64bit)

Web会議等でJavaがまだ必要な場合があって,JavaのPluginで混乱する. ポイントは以下.