Ubuntu12.04LTSにfmlを入れる

MLは標準のmailmanで運用しようと思ったけど、どうもML用にサブドメインを切らないとうまくない様子。これだと、これまでのfmlとの互換性がいまいち。 仕方ないので、fmlを入れましょうか。 まあPerlスクリプトだし何とかなるだろう。よい子は真似してはいけないと思うけど、参考にする奇特な人もいるだろうからエントリにする。 まず、古いDebian(たぶんetch/4.0)からfmlパッケージ(4.0.3.dfsg-2)を持ってきて入れる。 インストールスクリプトが、なんか警告を吐いている defined(%hash) is deprecatedけど、これは気にしない(後述)。 次に、[debian-users:55112]で武藤さんが作成されているパッチを宛てる。 — libkern.pl.old 2010-12-30 08:12:13.000000000 +0900+++ libkern.pl 2010-12-30 08:12:18.000000000 +0900@@ -616,8 +616,8 @@ ### Header Fields Extraction $s = $Envelope{‘Header’}."\n";- $* = 0; # match one line- if ($s =~ /^From\s+(\S+)/i) {+ # $* = 0; # match one line+ if ($s =~ /^From\s+(\S+)/is) { # XXX NO REACH HERE (1999/10/27 by fukachan) # $Envelope{‘UnixFrom’} = $UnixFrom = $1; $s =~ s/^From\s+.*//i; で、先ほどの警告は、Perl5.12から出るようになったらしく、 if ( defined(%hash) ) { …}みたいなコードがあれば出てしまう。これは単に以下のように書きなおす(definedを消すだけ)。if ( %hash ) { …} /usr/share/fml/makefmlでいきなり遭遇したので、diff -uしたものを貼っておく。 — makefml.orig 2013-02-19 18:05:20.619777999 +0900+++ makefml 2013-02-19 19:50:33.175776879 +0900@@ -6252,12 +6252,12 @@ } if ((($] !~ /5.\d\d\d/) &&- $key ne “_$package” && $key ne “DB” && defined %entry+ $key ne “$package” && $key ne “DB” && %entry ) || (($] =~ /5.\d\d\d/) && $key ne “$package::” && $key ne “DB::” &&- (defined %entry) &&+ (%entry) && ($dumpPackages || $key !~ /::$/) && ($key !~ /^</ || $dumpDBFiles) && !($package eq “dumpvar” && $key eq “stab”)まあ、こういう感じで直していけば良い。 その他、こういう警告も出ている。 Legacy library getopts.pl will be removed from the Perl core distribution in the next major release. Please install the separate libperl4-corelibs-perl package. It is being used at /usr/share/fml/makefml, line 139. 「next major release」までは動くと言っているのだから、Ubuntu12である以上たぶん大丈夫だろう。 というか、一からビルドした方が気楽かもしれない。パッケージシステムの意味がかなりない。さらに、これから地雷を踏みまくるのかもしれない。 後々、追記することになるかもしれません。

2013年2月19日 · 1 分

Ubuntu12.04LTSのqmail

Ubuntu12.04LTSにはqmailパッケージ(universe)が存在するので、旧来のqmail-srcパッケージ(multiverse)ではなく、 qmailを入れてみた。たぶん前者はnet-qmailで、後者はDJBのqmail+patchかな。 Ubuntu8.04LTSのqmail(qmail-srcからbuildしたもの)といくつかの違いがあって、はまっていたのでメモしておく。 Maildirを使う /var/lib/qmail/control/defaultdelivery を以下の通り変更。 ./Maildir/ 再起動の方法 sysvinitでもupstartでもなく /usr/bin/qmailctl というのを使う(かなり悩んだ)。 #  qmailctl restart  そんなの知らないよ、ほんとに。 ログの出力内容と場所 標準では /var/log/qmail に、独特のファイル名 & 独特のタイムスタンプでログを吐く。@4000000050ec01243503ffa4 status: local 0/10 remote 1/20@4000000050ec021b06849e04 delivery 84: success: 111.87.239.132_accepted_message./Remote_host_said:_250_Ok:_queued_as_F0C1216F/@4000000050ec021b0685ab8c status: local 0/10 remote 0/20@4000000050ec021b094ef904 end msg 2100129こういう、一目で時刻が分からない、謎な形式は本当にやめて頂きたい。 あと、mail.logに吐いてもらった方が標準的で良いかと思い /var/lib/qmail/rc を以下の通り修正。 qmail-start "`cat /var/lib/qmail/control/defaultdelivery`" splogger qmail すると、以下の通り、普通に出る。これなら読める。 Feb 18 20:05:01 host qmail: 1361185501.323090 status: local 0/10 remote 1/20Feb 18 20:05:01 host qmail: 1361185501.494435 delivery 2: success: 111.87.239.132_accepted_message./Remote_host_said:_250_Ok:_queued_as_62FA0179/Feb 18 20:05:01 host qmail: 1361185501.494581 status: local 0/10 remote 0/20Feb 18 20:05:01 host qmail: 1361185501.494607 end msg 2097550 (hostはhost名)本当にqmailって変わってるよなあ。この機会にPostfixに乗り換えたい気持ちは大きかったけど、互換性の問題もあって、仕方なく入れたものの、すでに半分嫌になっているというところ。 

2013年2月18日 · 1 分

GmailのPOP3サーバは変です

Gmailは、POP3でメールを取ってくる機能がある。 これを使うと、普通のメーラーでメールを読めて便利。しかも、万一の際のバックアップにもなる。 # 送信(SMTP)も同様で、きちんと設定すればメーラーから送信もできる。 で、以前から気付いてはいたけど、Gmailのモノは普通のPOP3サーバと違っていて、「メールをサーバに残す」ということができない。メールを取得したら(たぶん)消すように作られているみたい。 つまり複数のメーラーで、同じメールを受信しようとしても、できない。 Becky2のプロトコルログを見ると、 1回目の接続 >>> Connecting to “pop.gmail.com” (SSL/TLS) [2012/10/18 22:21:18] <<<+OK Gpop ready for requests from xxx.xxx.xxx.xxx mi2pf44702387pbb.25USER 略@gmail.com+OK send PASSPASS ********+OK Welcome.STAT+OK 90 2916698LIST+OK 90 messages (2916698 bytes)1 3280(略)90 13320.UIDL+OK1 GmailId13a3f0059c8b1ce1(略)90 GmailId13a73f1acf2172c2.RETR 1+OK message follows(略)RETR 90+OK message followsQUIT+OK Farewell.2回目の接続 >>> Connecting to “pop.gmail.com” (SSL/TLS) [2012/10/18 22:22:35] <<<+OK Gpop ready for requests from xxx.xxx.xxx.xxx qu6pf44702630pbc.32USER 略@gmail.com+OK send PASSPASS ********+OK Welcome.STAT+OK 0 0QUIT+OK Farewell. RETRしかしていないのに、次回は見事に消えていますね(ぉぃぉぃ)。 というわけで、GmailのPOP3サーバは変です(この機能、あることだけでも有り難いんだけどね)。

2012年10月18日 · 1 分

Ubuntu12.04LTSのPostgreSQLでEUC_JPのデータベースを作る

まず、Ubuntu12.04LTSにPostgreSQLを導入する。 メタパッケージpostgresqlを入れれば、postgresql-9.1とかが入ってくるので簡単。そのあと、昔と同じ手順で、EUC_JPのデータベースを作ろうとしたら失敗した。こんな感じ。 createdb -T template0 -E EUC_JP dbname createdb: database creation failed: ERROR: encoding EUC_JP does not match locale en_US.UTF-8 DETAIL: The chosen LC_CTYPE setting requires encoding UTF8. 軽くググると、initdbしなおすのだ、とか面倒そうなことが書いてあって、それは面倒だ。さてどうしたものか、とTwitterにつぶやいたところ @PostgreSQL_JP 様からアドバイスを頂けました。ありがたいことです。本当に助かりました。 結論から書くと、以下のようにすれば良い様子。 createdb -T template0 -E EUC_JP –locale=C dbname 昔(PostgreSQL7とか8の前半)と現在では、色々変わっていることも多そうなので、ちゃんと勉強し直した方がよいかもしれません。 「徹底入門」も第3版になって9.0対応になっているみたい(たしか初版は持っている)。

2012年10月5日 · 1 分

WinSCP5.1で日本語を表示する方法

(2012/11/7、加筆) WinSCP5.1.1が出てますね。インストーラから日本語が選べます。 もうこのページへのアクセスも激減することでしょう。 (2012/10/12、加筆修正しました。) WinSCP5.1では、前バージョン4.3.9と違い、インストール時に日本語が選べません。 現在は翻訳が終わったようで、言語パック(?)をインストールすれば日本語が表示できます。 その方法を書いておきます。起動直後の画面(WinSCP Login)の「Languages」ボタンを押す。出てきたリストから「Get More…」を選ぶ。「WinSCP Translations」というページに飛ぶ。ここで「Japanese」をクリックしてダウンロードする。ダウンロードしたzipファイル(jp.zip)を展開し、出てきたファイル(WinSCP.jp)を、WinSCPのインストール先(Windows 7 64bitなら、C:\Program Files (x86)\WinSCP)にコピーする。もう一度「Languages」ボタンを押すと、「Japanese」が選べるので、これを選択する。なんか画面描画が乱れるけど、WinSCPを起動し直したら大丈夫。今後のバージョンではインストール時にJapaneseが選べるようになるかもしれませんね。 WinSCPの開発や、翻訳などの作業をされている皆様に感謝。

2011年7月24日 · 1 分

さくらのVPSを借りてみた

さくらのVPSを借りてみた。いちばん安いプラン、980円/月のやつ。 軽く使ってみたので感想を。 電源やコンソールがWebから管理できるのは、超便利CPUもI/Oもネットワークも速い。専用サーバのCeleron 2GHzより体感で快適かも正式契約前は帯域制限とOP25Bがかかっているので注意はじめは適当なホスト名がふられている逆引き名も簡単に変えられるけど、まずは正引きができないとダメ逆引き名を変えてからOSをインストールすると、ホスト名などちゃんと設定される。これには感心したやろうと思えば現在使っている専用サーバ(これは1万/月くらいかかっている)を丸ごとのっけられそう。 これで月980円か。すげえ。 関西電力の従量電灯A(普通の家庭)の2段目料金で計算すると、おおむね57Wを24時間30日使うと1000円くらいになる。つまり、普通のPCをつけっぱなしにするよりもお金がかからない、という感じになる。 もう少々様子を見て、問題なさそうなら本気で専用サーバを解約してVPSにしようかな。コストが違いすぎる。

2011年7月9日 · 1 分

iDiskバックアップがいけてない件

ジャストシステムのインターネットディスクのコースを変更して、iDiskバックアップを容量無制限にしてみた。 以前から知ってはいたけど、コースを上げると315円/月から840円/月となる。これはちょっと高いなあと躊躇していたけど、今回思い切って申し込んでみた。 普段、データは別のHDDにバックアップしているけれど、これだと災害に対してはあまり意味が無い。遠隔地にバックアップしておけば安心だよね、ということで。 ところが、使い始めると色々といけてない。 拡張子の制限が多い詳しくはジャストシステムの該当ページをみて頂けばわかるが、簡単に言うと、「拡張子によってバックアップされないファイルがある」のだ。exeとか、デジカメで撮った動画とか、ISOイメージとかが該当する。そういうものはzipにでもするしかない。 これで「容量無制限」か、ひどいなあ。 転送速度が超遅いバックアップツールの転送速度がどうやら1Mbps程度に制限されている。自宅は安いADSLで上り1Mしかないので、実家のFTTH環境も使って試してみたけど、転送速度に差がない。これは悲惨としか言いようがない。 1Mbpsだと、理論値でも400MB/時間。24時間かけても10GBもバックアップできない。ここまで遅いとなかなか厳しいものがある。今走らせているバックアップは、2-3週間くらいかかりそう。 バックアップしたファイルを戻す速度は、そう遅くないらしい(未確認)。 というわけで、このサービスを利用しようという方は、これらの制限にお気をつけあれ。

2010年12月13日 · 1 分

「ITエンジニア 生き残りの条件」について

今月のSoftware Designの特集である「ITエンジニア 生き残りの条件」を読んでの感想。 タイトルの割に内容は凡庸だな、と思いつつも、従事者(一応ね)としてはやっぱり意見しておきたい。 記事でも指摘している通り、ITゼネコンの重層構造は確かに崩壊しているのだろう。僕の周りでもそういう実感はある。 一方、記事中で、ITゼネコン(SIer)の凋落と、ネット関連企業を並べているのには違和感を感じた。後者は今まさに激しい勝負の真っ最中であって、勝者しか生き残らないような戦いをしている。そこに優秀なエンジニアが必要なのはもちろんだろうけど、少々次元の違う話だろう。 僕は、これまで、この産業でこれだけの人数を養えていたことが異常だったのではないかと思う。 ソフトウェア開発というのは高度に知的な作業だから(だよね?)、個人の能力によって生産性は激しく異なる。これは関係者なら誰でも同意するだろう。なので、今は「全体としてちゃんとした能力をもつ会社」が選別されていく過程にあるのだろうと理解している。 あと、記事中ではオフショアについても言及されていたけれど、僕はオフショア開発にはあまり肯定的ではない。 ソフトウェア開発の期間はビジネス上の要請でどんどん短くなっている。そして、それは実現可能になっている。僕は環境や要素技術などの進歩によって可能になっていると言いたいが、単に現場が無理をしているだけということもあるかもしれない。 そういう状況の中で「外国に出す」というオーバーヘッドは許容できないケースの方が多いだろう。なので、オフショア開発がどんどん増える、ということにはならないと思っている。 もちろん、大規模なシステム開発においてはこの限りではないだろう。 ただ、大規模なシステムもこれからは減っていくだろうと思っている。それは計算機の能力向上、銀行や自治体の統合、この国の人口の減少、など色々な理由があるから。 結果として、顧客企業の発注コストの低下は、単純にIT産業従事者全体の給与原資の低下につながるだけだろう。 産業の規模を縮小するか、給与減少を甘んじて受け入れるか。今、この産業が転換点にあることは間違いない。

2010年12月3日 · 1 分

PHP5で日本語のメールを送る

PHP4からPHP5へ移行していて、send_mail()ではまったので、メモしておく。 まず、これまでのコードはこんな感じ。 send_mail(“宛先”, “件名”, $body, $name, $address); 宛先はメールアドレス件名は普通に日本語(スクリプト自体はEUCなのでそれ)$bodyはEUCのはず$nameはEUCで、氏名$address は、メールアドレス第4、5引数は、こう書いておくとFromヘッダを適当に作ってくれていた。 今後は、以下みたいのをスクリプトの先頭付近に書く。 mb_language(“Japanese”);mb_internal_encoding(“EUC-JP”); php.iniに書けるらしいけど、個別に書く方が無難だろう。 僕はスクリプトをEUC-JPで書いていて、内部でも文字列をEUC-JPで扱っているのでこう書いたけど、今時書き始めるならUTF-8のがいいかも。 次に、メールの本文をISO-2022-JPに変換しないといけない様子。 $body = mb_convert_encoding($body, “ISO-2022-JP”); そして、メールの送り方はこんな感じで。 mb_send_mail(“宛先”, “件名”, $body); 件名はよしなに扱ってくれているので、そのままで。 第4引数にオプションのヘッダ(Fromなど)を渡せるけど、ちゃんとした形で渡さないといけない様子。 今回のスクリプトは、そこまでの必要性は無かったので、ここは捨てちゃった。 # 間違いがあれば教えて下さい > 識者 

2010年11月10日 · 1 分

FDDからHDDの内容を消去する方法

HDDの内容を潰したいけど、FDDしか無い人に向けて。 まずはdban(Dark’s Boot and Nuke)をダウンロード。ダウンロードするのは、dban-1.0.7_i386.exe 最近のバージョンはCD-ROM用のISOしか無いみたい(当たり前か)。1.0.7というのがFDDでも使える最後のバージョンの様子。 Windowsなら、ダウンロードしたexeをそのまま叩けばFDDの作成ができるようだ。ただしそれは試していない。 Linuxだと、以下のようにすればFDDが作成できる。 $ unzip dban-1.0.7_i386.exe$ dd if=dban-1.0.7_i386.ima of=/dev/fd0 bs=1024$ sync (デバイスとかは適当に読み替えて) こうして作ったFDから起動して、Enterを押してしばらく待てば操作画面になる。消去方法と対象のパーティションを選択すれば、消去が始まる。 ちょっと面倒なことに、一度の操作がおわると、ログを保存して終了モード(電源切ってくれ)になってしまう。普通はそれで良いと思うけど、いくつかのパーティションを潰したい人は何回か起動しなおすのが手間かも。 デフォルトの消去方法はDoD-shortなので、まあこれくらいでいいんじゃないかな。 操作方法は、@ITの「ハードディスクの内容を安全に消去 - DBAN」が分かりやすい。 Linuxベースでちゃんと動くので、そこそこの速さで消去ができる。これはなかなか便利なツールだと思う。 最近のバージョンのISOなんか焼いて手元に置いておけば、HDD削除ツールとしてはなかなか良いものじゃあないかな。 最後に気がついたけど、PC/AT互換機のことしか考慮していないので、ご容赦を。

2010年10月4日 · 1 分