kazu memo@GD

2004|05|06|
2005|03|04|05|06|07|08|09|10|11|
2006|01|02|05|06|07|08|12|
2007|01|02|07|12|
2008|03|05|07|12|
2009|01|03|05|06|09|10|12|
2010|01|04|06|

2010-06-28

_ grub-pc

lucid と sid の grub-pc で確認したことのメモです。

日本語を表示するのに必要な設定は

loadfont /path/to/unicode.pf2
set gfxmode=1024x768
insmod gfxterm
insmod vbe
terminal_output gfxterm

のような感じで、menuentry の後ろの "" の中などで日本語が使える。unicode.pf2 は /usr/share/grub/unicode.pf2 にあるので、 ISO イメージなどを作るときは /boot/grub あたりにコピーしておく。

コマンドラインで使うときのヘルプメッセージやメニューの上下などの文字列の翻訳を表示するには /boot/grub/locale/ja.mo を用意して以下の設定をする。

set locale_dir=/boot/grub/locale
set lang=ja
insmod gettext

2010-06-25

_ Thunderbird 3.1以降の自動設定対応

https://wiki.mozilla.org/Thunderbird:Autoconfiguration とか https://developer.mozilla.org/en/Thunderbird/Autoconfiguration とかに書いてある Configuration server at ISP の設定をサーバ側にしたという話です。

ユーザとしては http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration のように「名前」と「メールアドレス」を入れるだけで受信用サーバと送信用サーバが自動設定されるようになります。

具体的なサーバ側の設定手順ですが、まず Thunderbird 3.1 を用意して、適当な名前とメールアドレス (てきとう@good-day.co.jpとか) を入力して webサーバに /.well-known/autoconfig/mail/config-v1.1.xml?emailaddress=てきとう%2540good-day.co.jp のようなアクセスがあるのを確認しました。good-day.co.jp は www.good-day.co.jp にリダイレクトしているため、今回は www.good-day.co.jp のログにアクセスがあるのを確認できました。

後はそのパスで見えるように xml ファイルを置くだけです。今回は STARTTLS は無しで、 IMAP4 over SSL, POP3 over SSL, SMTP over SSL の設定を並べてみました。認証に使うユーザ名は gmail ようなメールアドレス全体ではなく「@」の左側部分だけなので「%EMAILADDRESS%」ではなく「%EMAILLOCALPART%」にしました。認証方法は SSL 経由なのと、サーバ側に生パスワードを保存していないという理由でパスワードをそのまま送る「plain」にしています。

<?xml version="1.0" encoding="UTF-8"?>
<clientConfig version="1.1">
  <emailProvider id="good-day.co.jp">
    <domain>good-day.co.jp</domain>
    <displayName>Good-Day Inc.</displayName>
    <displayShortName>Good-Day</displayShortName>

    <incomingServer type="imap">
      <hostname>mx3.good-day.co.jp</hostname>
      <port>993</port>
      <socketType>SSL</socketType>
      <authentication>plain</authentication>
      <username>%EMAILLOCALPART%</username>
    </incomingServer>

    <incomingServer type="pop3">
      <hostname>mx3.good-day.co.jp</hostname>
      <port>995</port>
      <socketType>SSL</socketType>
      <authentication>plain</authentication>
      <username>%EMAILLOCALPART%</username>
    </incomingServer>

    <outgoingServer type="smtp">
      <hostname>mx3.good-day.co.jp</hostname>
      <port>465</port>
      <socketType>SSL</socketType>
      <authentication>plain</authentication>
      <username>%EMAILLOCALPART%</username>

    </outgoingServer>
  </emailProvider>
</clientConfig>

このファイルをおいた後、Thunderbird 3.1 でもう一度試したところ、IMAP にするか POP にするのかの選択肢が出てきました。incomingServer が複数あるとそういう挙動になるようです。


2010-04-15

_ BitTorrent

BitTorrent での ISO イメージの配布にちょっとでも協力しようと思って、 dist.good-day.co.jp で BitTornado を動かしている。

その BitTornado が使っている場所を dist.good-day.co.jp/bt/ で http でもみえるようにしてみた。


2010-04-02

_ redmine のアップデート

redmine を 0.8.7 から 0.9.3 にあげた。

  • config/initializers/fix-q-encode.rb でモンキーパッチをしていたが ActionMailer が新しくなっているので不要になった。
  • vendor/plugins/redmine_importer.0.0.3 は使われてなさそうだったのと、 redmine 0.9 で動くかどうかが不明だったので外した。
  • vendor/plugins/redmine_send_schedules は locale 周りの YAML ファイルの修正が必要だった。
  • lang/ja.yml の general_pdf_encoding の変更はファイルがなくなっていたので、とりあえず何もしなかったが、PDF の文字化けはしなくなっていた。

2010-01-21

_ blog.good-day.net 移動

etch のサーバで動いていた blog.good-day.net を lenny に上げる代わりに、別の lenny のサーバに移動した。

それにともない他にもディレクトリ構成などが代わっているので、何か問題が起きているかもしれません。何か気付いた点があれば連絡してください。

本日のツッコミ(全1件) [ツッコミを入れる]

_ z [ツッコミもちゃんと動いているかどうかテストです。]


2009-12-09

_ [postfix] milter-manager

インストール

まず http://milter-manager.sourceforge.net/reference/ja/install-to-debian.html の手順を参考にして

  • milter-manager
  • clamav-milter
  • milter-greylist

をインストール。

initgroups の修正が入ったものが 11/29 にリリースされることを期待していたけど、リリースされなかったので、パッチをあてたパッケージを作成。patch は git svn で取得しているもの。

  • apt-get source milter-manager
  • cd milter-manager-1.4.1
  • r3442 の差分を patch で適用
  • rm ChangeLog.rej ChangeLog.orig (rejectされたので削除)
  • dch -i x
  • vi debian/changelog
  • sudo apt-get build-dep milter-manager
  • debuild -uc -us -rfakeroot

ビルドして出来た *.deb のうち、インストールされていた 2 個 (libmilter-toolkit と milter-manager) だけをコピーしてインストールした。

設定

milter-manager のプロセス自体は uid も gid も milter-manager で、所属グループとして postfix と greylist に入るという権限分離に設定した。

sudo vi のところは追加や変更した部分のみ。

  • manager.connection_spec,security.effective_group,manager.unix_socket_group に設定が反映されていない。
    • /etc/default/milter-manager での設定だから?
  • milter-test-server での結果が「status: pass」ではなく「status: accept」になる。
$ sudo vi /etc/default/clamav-milter
SOCKET_RWGROUP=milter-manager
$ sudo vi /etc/default/milter-greylist
ENABLED=1
mkdir -p /var/run/milter-greylist
chmod 755 /var/run/milter-greylist
chown greylist:greylist /var/run/milter-greylist
umask 007
$ sudo vi /etc/milter-greylist/greylist.conf
#acl whitelist default
acl greylist default
$ sudo /etc/init.d/clamav-milter restart
Stopping Sendmail milter plugin for ClamAV: clamav-milter.
Starting Sendmail milter plugin for ClamAV: clamav-milter.
$ sudo /etc/init.d/milter-greylist restart
Restarting Greylist Mail Filter Daemon: No milter-greylist found running; none killed.
greylist.
$ sudo /etc/init.d/milter-greylist restart
Restarting Greylist Mail Filter Daemon: greylist.
$ id milter-manager
uid=107(milter-manager) gid=111(milter-manager) 所属グループ=111(milter-manager)
$ sudo adduser milter-manager postfix
Adding user `milter-manager' to group `postfix' ...
ユーザ milter-manager をグループ postfix に追加
終了。
$ sudo adduser milter-manager greylist
Adding user `milter-manager' to group `greylist' ...
ユーザ milter-manager をグループ greylist に追加
終了。
$ sudo vi /etc/default/milter-manager
GROUP=milter-manager
SOCKET_GROUP=postfix
CONNECTION_SPEC=unix:/var/spool/postfix/milter-manager/milter-manager.sock
$ sudo /etc/init.d/milter-manager restart
Restarting flexible milter management daemon: milter-manager.
$ sudo /usr/sbin/milter-manager -u milter-manager --show-config
package.platform = "debian" 
package.options = nil

security.privilege_mode = false
security.effective_user = "milter-manager" 
security.effective_group = "mail" 

manager.connection_spec = "unix:/var/run/milter-manager/milter-manager.sock" 
manager.unix_socket_mode = 0660
manager.unix_socket_group = "mail" 
manager.remove_unix_socket_on_create = true
manager.remove_unix_socket_on_close = true
manager.daemon = false
manager.pid_file = "/var/run/milter-manager/milter-manager.pid" 
manager.maintenance_interval = 100
manager.suspend_time_on_unacceptable = 5
manager.max_connections = 0
manager.max_file_descriptors = 0
manager.custom_configuration_directory = nil

controller.connection_spec = "unix:/var/run/milter-manager/milter-manager-controller.sock" 
controller.unix_socket_mode = 0660
controller.unix_socket_group = nil
controller.remove_unix_socket_on_create = true
controller.remove_unix_socket_on_close = true

define_applicable_condition("Sendmail Compatible") do |condition|
  condition.description = "Make a milter depends on Sendmail workable with Postfix" 
end

define_applicable_condition("Remote Network") do |condition|
  condition.description = "Apply milter only if connected from remote network" 
end

define_applicable_condition("S25R") do |condition|
  condition.description = "Selective SMTP Rejection" 
end

define_applicable_condition("Authenticated") do |condition|
  condition.description = "Apply a milter only when sender is authorized" 
end

define_applicable_condition("Unauthenticated") do |condition|
  condition.description = "Apply a milter only when sender is not authorized" 
end

define_milter("milter-greylist") do |milter|
  milter.connection_spec = "unix:/var/run/milter-greylist/milter-greylist.sock" 
  milter.description = "another spam-defense service" 
  milter.enabled = true
  milter.fallback_status = "accept" 
  milter.evaluation_mode = false
  milter.applicable_conditions = ["Sendmail Compatible", "Remote Network", "S25R", "Unauthenticated"]
  milter.command = "/etc/init.d/milter-greylist" 
  milter.command_options = "start" 
  milter.user_name = nil
  milter.connection_timeout = 300.0
  milter.writing_timeout = 10.0
  milter.reading_timeout = 10.0
  milter.end_of_message_timeout = 300.0
end

define_milter("clamav-milter") do |milter|
  milter.connection_spec = "unix:/var/run/clamav/clamav-milter.ctl" 
  milter.description = "Clam AntiVirus milter interface" 
  milter.enabled = true
  milter.fallback_status = "accept" 
  milter.evaluation_mode = false
  milter.applicable_conditions = []
  milter.command = "/etc/init.d/clamav-milter" 
  milter.command_options = "start" 
  milter.user_name = nil
  milter.connection_timeout = 300.0
  milter.writing_timeout = 10.0
  milter.reading_timeout = 10.0
  milter.end_of_message_timeout = 300.0
end
$ sudo -u postfix milter-test-server -s unix:/var/spool/postfix/milter-manager/milter-manager.sock
status: accept
elapsed-time: 0.048 seconds
$ 

postfix と接続

$ sudo vi /etc/postfix/main.cf
# milter-manager
milter_protocol = 6
milter_default_action = accept
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/milter-manager/milter-manager.sock
$ sudo /etc/init.d/postfix reload
Reloading Postfix configuration...done.
$

動作確認

外部から送信テストして、

X-Virus-Scanned: clamav-milter 0.95.3 at (略).jp
X-Virus-Status: Clean

というヘッダがついていること確認。


2009-10-28

_ OpenType の 'post' テーブルの isFixedPitch

ORCAフォントの変更点として、post の isFixedPitch を 0 に変えたという点がある。

この理由として GNOME端末でカーソルが半角文字の上でも全角幅になる、 freetype2-demos パッケージに入っている ftdiff の表示で半角文字が全角幅になるなど、日医標準レセプトソフト関連以外でも問題が確認できていて、 OpenType の仕様をじっくり眺めてあやしそうなところを探したら isFixedPitch を見つけたからだった。

ORCA フォントとしては問題が解決したが、複数のアプリケーションでの問題が改善したからといって、即フォント側が悪いというわけにはいかないので、さらに調べていた。

昨日 IRC で文字コード周りにも詳しい成瀬さんと話をしてみたところ、Glyph Name and PostScript Font Table という Apple の URL を教えてもらった。英語版 Wikipedia の OpenType の External links からしかたどっていなかったので、 Apple にもあるというのは知らなかった。Apple の post テーブルについてのページには isFixedPitch についての説明が表の下にもはっきり書いてあったので、これを根拠として IPA に連絡しておいた。


2009-10-14

_ kinput2 の閉じるボタンを消す (未完)

kinput2 で変換候補や off the spot 変換の window の右上の閉じるボタンを押すと kinput2 が終了してしまうという問題が ORCA 方面で知られていて、etch の sun-java6 を使ったアプリケーションでそれをやってしまうとアプリケーションが SEGV で死んでしまうことがある。(再現する環境と操作の組み合わせでは再現率100%)

とりあえず window 装飾丸ごと消してしまうのは devilspie で簡単にできる。変換候補の window まで消してしまうと kinput2 の状態表示と重なってしまって見えなくなってしまうことがあるようなので、off the spot 変換の window だけに限定するなら以下のファイルを ~/.devilspie/kinput2.ds などの名前でおいて devilspie を起動しておけば良い。

; Window Title: 'Kana-Kanji Conversion'; Application Name: 'kinput2'; Class: 'Kinput2';
(if (and
      (is (application_name) "kinput2")
      (is (window_name) "Kana-Kanji Conversion"))
  (begin
    ;(debug)
    (above)
    (undecorate)))

もう少しまともな解決策として kinput2 の閉じるボタンを消せないかと思って、 xprop コマンドで _NET_WM_ALLOWED_ACTIONS から _NET_WM_ACTION_CLOSE を消せないかと思ってがんばってみたが、xprop コマンドの -set で複数 ATOM の設定が出来なくて困ってしまった。

結局 (kinput2 で使われている) X Toolkit のサンプルアプリを元にがんばってみたところ、 http://gist.github.com/210010 のように _NET_WM_ALLOWED_ACTIONS から _NET_WM_ACTION_CLOSE を消せば期待通り閉じるボタンが消えることがわかった。(window manager の閉じるボタンや左上のところをクリックしたときのメニューから閉じるが出来なくなるだけで Alt+F4 では閉じることが出来る)(XtAppMainLoop の前だと _NET_WM_ALLOWED_ACTIONS が設定されてなくて、設定しても何かに上書きされてしまったので、 XtAppAddTimeOut で後からいじっている。)

しかし、 etch の devilspie には spawn_ で始まる別コマンドを起動するコマンドがなかったり、 _NET_WM_ACTION_CLOSE を消すのは単独のプログラムで実験しただけだったりという状態なので、 etch の kinput2 では現状は上のように window 装飾を消すだけで対処するしかないかもしれない。

そもそも kinput2 を改造するという方針にするのなら、閉じるボタンで終了してしまわないようにした方が良さそうに思う。


2009-09-29

_ デバイスの認識がetchnhalfのインストーラとインストール後のetchnhalfのカーネルで違う

Debian -- Debian “etchnhalf” インストール情報のインストーラはlennyの2.6.26のカーネルが入っていて、インストール後のetchnhalfのカーネルは2.6.24なので、インストール中は認識していたNICがインストール後に再起動すると認識しなかった。

http://kmuto.jp/debian/hcl/ で「8086:10bf」とだけ入力して調べてみると、「PCI ID:808610bf ベンダ:Intel Corporation デバイス:82567LF Gigabit Network Connection ドライバ:e1000e カーネル:v2.6.26-」と出て、ちょうどインストーラのカーネルだと認識できるけど、etchnhalfのカーネルだと認識できないデバイスだとわかった。

hclのページの右上に書いてあった情報でetch-backportsのカーネルが2.6.26になっていたので、 http://packages.debian.org/etch-backports/linux-image-2.6-686 からリンクをたどって linux-image-2.6-686_2.6.26+17~bpo40+2_i386.deb と linux-image-2.6.26-bpo.2-686_2.6.26-19~bpo40+1_i386.deb をダウンロードして、USBメモリ経由でコピーして dpkg -i でインストールして再起動したら認識した。


2009-06-15

_ [linux] sfdisk

ORCA-BOX のリカバリ CD では、ハードディスクの自動パーティショニングに sfdisk を使っている。

まず手動で fdisk を使って元になるパーティションを切っておいて、設定した状態を「sfdisk -d /dev/sda > /etc/orca-box/partitions」のように保存しておく。

そして、リカバリなどの時に「sfdisk /dev/sda < /etc/orca-box/partitions」や「sfdisk /dev/sdb < /etc/orca-box/partitions」でパーティションの切り方を再現してから mkswap や mkfs.ext3 などをしている。

「sfdisk -d」の出力には「/dev/sda」という記述が含まれているが、「/dev/sdb」に書き換えたりしなくても「/dev/sdb」にも適用できている。