消えたメール

Yahoo!メールに送ったメールが消えた。

客の依頼で、Yahoo!メールに送ったメールが迷惑メールフォルダに入るようになっているので何とかしてくれと言われたので、調査の為にYahoo!にアカウントを作ってテストしたのだ。

サーバーのログで、Yahoo!のMTAが250の応答を返したところまでは確認できているが、そこから先がどうなったのか分からない。

レンタルサーバーのMTAから送ったのだが、色々調べると、そのIPアドレスから送ったメールは、ヘッダに大量送信者のマークが付けられていて、送ると必ず迷惑メールフォルダに分類されるが、先に送ったメールは、全く届かずに消えてしまったのだ。

考えられるのは、大量メール送信者としてマークしているMTAから、To: やSubuject:が空のヤツは問答無用に削除するみたいなロジックで動いている事が予想される。

消えたメールを送った時は、telnet で smtp 叩いて送ったので、To: と Subject: が空だった。

で、Yahoo!メールカスタマーサポートに問い合わせてみると、
メールの設定はちゃんとしてるのか?とかユーザーを馬鹿にするマイクロソフト臭がプンプンする定形文を返してきやがった。

こっちはログ添付してんだから、Yahoo!のMTAのログ見たらすぐ分かる話だろうに、そんな簡単な事もやらずに「どうせお前が馬鹿な設定やって、メールが迷惑メールフォルダに入ってんのに気づいてねーんだろ?」と言いたげな定形文を返して来る。

まあ、確かに実際にメールが消えるのを見るまでは、「Yahoo!メールでメールが届かない」なんて騒いでいるのは、ユーザーが迷惑メールフォルダに入ってるのに気づかないというパターンだろうと思っていたし、問い合わせのほとんどがそういう場合が多いだろう。

しかし、ログが添付されているってのは、そこから消えたメールを追跡できるのだから、通常の定形文の対応ではマズいという状況判断をせんといかんね。

まあ、最近、状況判断、状況分析能力が著しく低い人間を良く見るので、別に驚きもせんが 🙂

まあ、Yahoo!メールは、勝手にメールを捨てる事もあるから、メールが届かない事もあるよってのを覚悟して使うにはいいかもね。わしは絶対使わんけどな 🙂

Ubuntu 11.10

11.04のアップデートマネージャからサクっとアップグレード。

環境的には余り変化が無い。

Skypeがタスクバーに入らなくなるとか、conky のcoretempのパラメータを書き換えないと動かないとか、日本語フォントが見にくいとかあるけど、今までとほぼ変わりなく使えている。

kernel が 3.0 になったので、dkms 関係をキッチリしとかないといけない。

noizumi@purplecat:~$ dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 2.6.38-8, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

cdc-acm はFOMAの携帯電話を繋ぐドライバで、このあたりのネタをdkmsで設定して、カーネルがアップデートされても自動的にドライバを再構築するようにしてあるのだが、kernel 3.0 でもドライバが勝手に入ってるな。

しかし、元ソースがkernel 2.6.38-8から取ってきたcdc-acmなのと、diff 取ってみたら2.6.38と3.0.0の cdc-acm.c は変更されているので、3.0.0のcdc-acmにする。

kernel 3.0に入ったカーネルドライバを削除
# dkms remove -m cdc-acm -v 2.6.38-8 -k 3.0.0-12-generic

——– Uninstall Beginning ——–
Module:  cdc-acm
Version: 2.6.38-8
Kernel:  3.0.0-12-generic (x86_64)
————————————-

Status: Before uninstall, this module version was ACTIVE on this kernel.

cdc-acm.ko:
– Uninstallation
– Deleting from: /lib/modules/3.0.0-12-generic/updates/dkms/
– Original module
– No original module was found for this module on this kernel.
– Use the dkms install command to reinstall any previous module version.

depmod………..

DKMS: uninstall Completed.

前の環境でlinux-sourceパッケージをインストールしてあったので、アップグレードしたら、 /usr/src/linux-source-3.0.0.tar.bz2 が既にあった。

$ sudo su –
# cd /usr/src
# sudo tar xvjf linux-source-3.0.0.tar.bz2

で、もりっと展開。

応用開発さんのドライバを取ってくる
# wget “http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fcdc-acm%2F33631%2Fcdc-acm-v026.zip” -O cdc-acm-v026.zip
# unzip cdc-acm-v026.zip -d cdc-acm-3.0.0-12
Archive:  cdc-acm-v026.zip
inflating: cdc-acm-3.0.0-12/cdc-acm.h
inflating: cdc-acm-3.0.0-12/cdc-acm.c
inflating: cdc-acm-3.0.0-12/Makefile
inflating: cdc-acm-3.0.0-12/readme.txt

さっき展開したソースから、cdc-acm.c cdc-acm.h をコピー
# cp linux-source-3.0.0/drivers/usb/class/cdc-acm.* cdc-acm-3.0.0-12

cdc-acm.c.patch
cdc-acm.h.patch

このファイルをそれぞれ適用
# cd cdc-acm-3.0.0-12
# patch <cdc-acm.c.patch.txt
patching file cdc-acm.c
Hunk #1 succeeded at 66 with fuzz 1 (offset -35 lines).
Hunk #2 succeeded at 876 (offset -93 lines).
Hunk #3 succeeded at 886 (offset -93 lines).
Hunk #4 succeeded at 933 (offset -93 lines).
Hunk #5 succeeded at 999 (offset -89 lines).
Hunk #6 succeeded at 1277 with fuzz 2 (offset -77 lines).
Hunk #7 succeeded at 1632 (offset -76 lines).
# patch <cdc-acm.h.patch.txt
patching file cdc-acm.h
Hunk #2 succeeded at 147 (offset -11 lines).

Makefile の先頭行をコメントアウト
#KERNEL_VERSION  := uname -r

dkms.conf を用意してやる
PACKAGE_NAME=”cdc-acm”
PACKAGE_VERSION=”3.0.0-12″
CLEAN=”make clean”
MAKE[0]=”cd ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build; make KERNEL_VERSION=${kernelver}”
BUILT_MODULE_NAME[0]=”cdc-acm”
BUILT_MODULE_LOCATION[0]=””
DEST_MODULE_LOCATION[0]=”/kernel/drivers/usb/class”

DKMSに追加
# dkms add -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Creating symlink /var/lib/dkms/cdc-acm/3.0.0-12/source ->
/usr/src/cdc-acm-3.0.0-12

DKMS: add Completed.

buildしてみる

# dkms build -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Kernel preparation unnecessary for this kernel.  Skipping…

Building module:
cleaning build area….
cd /var/lib/dkms/cdc-acm/3.0.0-12/build; make KERNEL_VERSION=3.0.0-12-generic….
cleaning build area….

DKMS: build Completed.

install してみる
# dkms install -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

cdc-acm:
Running module version sanity check.
– Original module
– Installation
– Installing to /lib/modules/3.0.0-12-generic/updates/dkms/

depmod….

DKMS: install Completed.

# dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 3.0.0-12, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

2.6.38のカーネル使う時は2.6.38用、3.0.0のカーネル使う時は3.0.0用のcdc-acm.koが使われるので運用はこれで良いが、よく考えたら、カーネルアップデートが掛かったら、両方共 cdc-acm.ko だからマズいなあ…

3.0.0 カーネルはわしの使用用途では特に問題は出てないし、2.6.38カーネル消すか。