sendmailですべてのメールを中継サーバーのSubmission portに送る

BIGLOBEがOutbound Port 25
Blockingをはじめてくれたおかげで、野良サーバーのsendmailがメールの配送ができなくなってしまった。これを回避するためにSubmission
Port(587)にメールを送る様に設定する必要があるが、困ったことにSubmission
Portは一般にSMTP
AUTHで認証される上に、BIGLOBEのSMTPサーバーはFromアドレスがBIGLOBEユーザーでないと中継を拒否しやがる。
前者はsendmail.cfをSMTP AUTH…

BIGLOBEがOutbound Port 25 Blockingをはじめてくれたおかげで、野良サーバーのsendmailがメールの配送ができなくなってしまった。これを回避するためにSubmission Port(587)にメールを送る様に設定する必要があるが、困ったことにSubmission Portは一般にSMTP AUTHで認証される上に、BIGLOBEのSMTPサーバーはFromアドレスがBIGLOBEユーザーでないと中継を拒否しやがる。

前者はsendmail.cfをSMTP AUTHを利用するように設定すれば回避できる。後者は、差出人書き換えはしたくないので、外部でSMTP AUTHで認証すればFromアドレスを問わずに中継してくれるプロバイダーを探したところ、asahi-netが使えることがわかったので、asahi-netを契約した。

で、sendmail.cfの改造。

sendmail.mcに以下の記述を追加する。

define(`SMART_HOST’, `esmtp:[mail.asahi-net.or.jp]’)
define(`RELAY_MAILER_ARGS’, `TCP $h 587′)
define(`ESMTP_MAILER_ARGS’, `TCP $h 587′)

FEATURE(`authinfo’)

SMART_HOSTの設定で、すべてのメールをasahi-netのメールサーバーに転送する様に設定する。そのままではPort 25に接続しようとしてBIGLOBEのフィルタに引っかかってしまうので、次の二行でSubmission Portに接続するようにする。多分、下の一行で十分だと思うが、esmtpでなくsmtpでリレーしないといけない場合に備えて両方書いておく。こう書いてしまうと、外部には587でしか接続しなくなってしまうと思われる。ということは、mailtertableで特定のアドレスだけ転送先を変えるとその先にも587で接続するしかなくなるので、全体のオプションでなく、接続先ごとに接続ポートを書ける様にしてほしいと思うが、まあ、どうせBIGLOBEからは587でしか出れないのであきらめよう。SMTPを25で、ESMTPを587で接続するようにして、BIGLOBE向け配送だけSMTPでBIGLOBEのサーバーに送ってもいいが、ちゃんと動くか確かめるのも面倒なので、全部asahi-netに頼ることにする。

最後の行がSMTP AUTHの認証を利用する設定。この設定を有効にすると、/etc/mail/authmap.dbにある認証情報のハッシュを元に接続先とSMTP AUTHで認証をしてくれる。

さて、このauthinfoを設定する。

まず、touch /etc/mail/authinfoして空ファイルを作成してから、chmod 600 /etc/mail/authinfoしてroot以外読み書き不可にする。セキュリティ上、先にこれをやってから編集すること。

このファイルに認証情報を書く。

AuthInfo:mail.asahi-net.or.jp “U:username” “P:password” “M:CRAM-MD5”

の様に、サーバーのFQDN、username、passwordを平文で記述しておく。最後のCRAM-MD5は暗証化方法だが、これは

telnet mail.asahi-net.or.jp 587

して、EHLO bam-system.ddo.jpとするとどの様な暗証化方法が可能か表示される。それを見るとDIGEST-MD5とCRAM-MD5が使えるみたいなので、ここではCRAM-MD5に設定しておく。

最後に、面倒なので自動化するために、/etc/mail/Makefileにauthinfoのハッシュ化もするように変更を加える。

SENDMAIL_MAP_SRC+= mailertable domaintable bitdomain uucpdomain
genericstable virtusertable access authinfo

最後のauthinfoを書き加えておくと、このファイルに変更があればmakemapでハッシュ化してauthinfo.dbを作成してくれる。

後は、/etc/mailに移動して、make all;make install;make restartで新しい設定でsendmailを有効化する。

うまくいったかどうか、外部からメールを投げてみて、/var/log/maillogで確認する。

FreeBSDのportsでsendmail入れ替えする時

FreeBSDのportsからsendmailを入れると、基本的には/etc/mail/mailer.confのsendmailのパスを/usr/local/sbin/sendmailにしてくれるので、何も変更の必要がないと思っていたら、少しだけ手動で変更する必要があることに気がついた。
/etc/mail/Makefile .if exists(/usr/share/sendmail/cf) SENDMAIL_CF_DIR?=
/usr/share/sendmail/cf SENDMAIL?…

FreeBSDのportsからsendmailを入れると、基本的には/etc/mail/mailer.confのsendmailのパスを/usr/local/sbin/sendmailにしてくれるので、何も変更の必要がないと思っていたら、少しだけ手動で変更する必要があることに気がついた。

/etc/mail/Makefile

.if exists(/usr/share/sendmail/cf)
SENDMAIL_CF_DIR?= /usr/share/sendmail/cf

SENDMAIL?= /usr/sbin/sendmail
MAKEMAP?= /usr/sbin/makemap

Makefile内のsendmail/cfのテンプレートのパスとsendmailおよびmakemapのパスだけは変更されていないので、portsから入れたsendmailのパスに変更する必要がある。

前者は/usr/local/share/sendmail/cfに、後者は/usr/local/sbin/sendmail,makemapに変更する。

後者はともかく、前者は変えておかないともしかするとm4でcfを作るときに最新のcfテンプレートじゃないと新機能が反映しない可能性がある。

ついでに、portsで入れるsendmailのcf周りのドキュメントのパスは以下の通り。

/usr/local/share/sendmail/cf/

SUSEで上書きされたMBRのGRUBを修復

SUSEとWinなマルチブートのX20でWinを入れ直す羽目になって内蔵HDDのMBRが上書きされてしまった時の修復方法。
まずは、SUSEのインストールディスク1でブートする。インストーラーに入らずにRescueイメージでブートし、コマンドプロンプトを出す。
Linuxの/bootが入っているパーティションをマウントする。X20は/dev/hda5に/bootが入っている。
#正確には/dev/hda2が拡張領域で、その中の論理パーティションの一つ目に入っているので/dev/hda5になる。…

SUSEとWinなマルチブートのX20でWinを入れ直す羽目になって内蔵HDDのMBRが上書きされてしまった時の修復方法。

まずは、SUSEのインストールディスク1でブートする。インストーラーに入らずにRescueイメージでブートし、コマンドプロンプトを出す。

Linuxの/bootが入っているパーティションをマウントする。X20は/dev/hda5に/bootが入っている。

#正確には/dev/hda2が拡張領域で、その中の論理パーティションの一つ目に入っているので/dev/hda5になる。

具体的には、mount /dev/hda5 /bootで/bootにマウントしてやる。

最後にgrub-installを実行する。引数なしで起動すると/boot/menu.lstを参照して、/dev/hdaすなわち内蔵ディスクのMBRにGRUBを再インストールしてくれる。

コメント出来ない問題

COREBlogを最新(1.2.5)にアップデートしたら、コメントをつけようとするとエラーを吐き出す様になってしまったよ。
バージョンをダウングレードしてみないとね。

COREBlogを最新(1.2.5)にアップデートしたら、コメントをつけようとするとエラーを吐き出す様になってしまったよ。

バージョンをダウングレードしてみないとね。

最近のZopeインストール

最新のportsでZopeをFreeBSDにインストールする機会があったので覚書。
www/zopeをインストールするだけで基本的には完了。
この時点で、/usr/ports/www/zopeにおりてmake
instanceで最初のinstance作成。
で、ja-zope-ejSplitterをportsで導入すれば、pycodeも入れてくれる。以前はpythonの2.3と2.4の間の依存関係で手動で入れなければいけなかったが、今は問題が解消されているっぽい。
で、ここでzopeを起動すれ…

最新のportsでZopeをFreeBSDにインストールする機会があったので覚書。

www/zopeをインストールするだけで基本的には完了。

この時点で、/usr/ports/www/zopeにおりてmake instanceで最初のinstance作成。

で、ja-zope-ejSplitterをportsで導入すれば、pycodeも入れてくれる。以前はpythonの2.3と2.4の間の依存関係で手動で入れなければいけなかったが、今は問題が解消されているっぽい。

で、ここでzopeを起動すれば、最初からejSplitter導入済みでzopeサイトを立ち上げる事が出来る。

後の処理は以前と同じ。

Debianで無線LAN

Debian 3.1
Sargeでメルコの無線LANカードWLI-CB-G54Lを使用出来るようにするための覚書。
まず、Debianをkernel
2.6でインストールしておく。2.4系列だとバイナリパッケージのndiswrapperが存在しない。
2.6をまともに動くように設定したら、ndiswrapper,wireless-tools,wpasupplicantを導入する。
次に、メルコからWLI-CB-G54L用のドライバー(現時点では6.61)を取ってきて展開する。grepでWLI-C…

Debian 3.1 Sargeでメルコの無線LANカードWLI-CB-G54Lを使用出来るようにするための覚書。

まず、Debianをkernel 2.6でインストールしておく。2.4系列だとバイナリパッケージのndiswrapperが存在しない。

2.6をまともに動くように設定したら、ndiswrapper,wireless-tools,wpasupplicantを導入する。

次に、メルコからWLI-CB-G54L用のドライバー(現時点では6.61)を取ってきて展開する。grepでWLI-CB-G54Lが記入された.infを探すとcbg54/net2pg54.infらしい。

で、そのディレクトリに移動して、ndiswrapper -i net2pg54.infを実行すると、infとsysが/etc/ndiswrapper/net2pg54にコピーされ、カード用のconfが作成される。ところがどっこい、このままだと、カードをさすとbcmwl5.sys以外のsysも読み込もうとして、カーネルスタックが不足してドライバ読み込みに失敗してしまう。そこで、bcmwl5.sys以外のsysファイルを削除しておく。

で、modprobe ndiswrapperでmoduleをロードした後にカードを刺すとwlan0のインターフェースが有効になる。

WEPで使用するには—

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/767ndiswrapper.html

iwconfig essid [ESSID]
iwconfig key restricted s:[WEP-KEY]

でESSIDとWEP-KEYを設定した後に

dhclient wlan0

でDHCPでIPをとれば通信可能になる。

WPAで使用するには—

http://umb.at.webry.info/200411/article_6.html

まず、WPAのパスフレーズをファイルに記録する。

wpa_passphrase [ESSID] “[WPA-PSKパスフレーズ]” > /etc/wpa_supplicant.conf

このファイルをごにょごにょいじって、以下の様なフォームに設定する。

ctrl_interface=/var/run/wpa_supplicant
network={
ssid=[ESSID]
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=[生成した暗号化パスフレーズ]
}

で、modprobe ndiswrapperでモジュールを読み込んだ後に、

wpa_supplicant -Dndiswrapper -iwlan0 -c/etc/wpa_supplicant.conf -Bw

でバックグラウンドでwpa_supplicantを走らせる。

dhclient wlan0

でDHCPでIPを取らせればオッケー。

X20マルチブート化

手始めにマルチブート化を試みる。
使いたいOSはFreeBSDとLinux。あとサブにWindowsも念のために入れておく。
まずは12GBしかない内蔵HDDを手持ちの30GBのものに交換する。といっても、背面のねじを一つ外すとHDDがするりと出てくるので、アルミのマウンターを交換して元通り入れるだけ。注意したいのは9.5mmのものしか使えないということぐらいか。っとその前に12GBなドライブの方に動作確認のために入っていたWindows2000を使って、BIOSとIBM独自のコントローラープロ…

手始めにマルチブート化を試みる。

使いたいOSはFreeBSDとLinux。あとサブにWindowsも念のために入れておく。

まずは12GBしかない内蔵HDDを手持ちの30GBのものに交換する。といっても、背面のねじを一つ外すとHDDがするりと出てくるので、アルミのマウンターを交換して元通り入れるだけ。注意したいのは9.5mmのものしか使えないということぐらいか。っとその前に12GBなドライブの方に動作確認のために入っていたWindows2000を使って、BIOSとIBM独自のコントローラープログラムのバージョンアップをする。IBMはeFlash版を使うとWindowsからフラッシュのアップデートが出来るのでFDDはいらない。

さてさて、ウルトラベースも付いていないので、インストールは外付けのUSB接続CD-ROMドライブで行う。電源投入直後ならF1でBIOSに入れるので、StartupをCD-ROMにしてあげればそれだけでCD-ROMから起動する。ホットスタート直後だと入れないので注意。

まず、WindwosXPのインストールCDで起動。パーティションを全削除した後に、先頭に10GBの基本領域を作成して、NTFSにフォーマットしてインストール。WindowsXPのインストールが終わったら続けてSP2をインストールしておく。SP2インストール後に、IBMからソフトウェア導入支援プログラムを落としてくる。IBMはこのソフト一つで全てのアップデートを自動で入れてくれるので好き。X20は対象外ということになってるが、ちゃんと動く。:-)

導入支援プログラムで最初にLenovoのRescue & Recovery Programってのを入れるか?と聞いてくるのでよくわからないが入れる。いつか役に立つだろう。で、続けてThinkPad用の追加プログラムを自動でインストール。2つほど依存関係が不明なので手動で入れろと言われる。手動で入れようにも展開されたフォルダにナビゲートしてくれないので、IBMのページでパッケージのファイル名を確認した上で、自分でそのファイル名に一致するフォルダに移動して手動セットアップ。これが終わると、デバイスマネージャーでの不明なデバイス表示も解消する。

その後、WindowsUpdateをひたすら繰り返した後に、念のためAvast AntiVirusを入れてWindowsのセットアップは完了。

最初にWindowsを入れたのは、実はHDDのパーティションを切るため。管理ツール内のディスク管理ツールで、未使用領域に8GBの拡張領域を2番目に、8GBの基本領域を3番目に、残りをFAT32の基本領域として確保する。最近のLILOやBootEasyは先頭8GB以内にカーネルをおかないといけない制限がないので気にしない。

パーティションを切ったら次にFreeBSDを入れる。選んだのはリリース直後のFreeBSD-6.0。何も考えずにmini-install CDから起動して、ネットワークインストール。BootEasyはFreeBSDの起動確認のためにMBRに一応入れておく。どうせすぐにLILOで上書きされるけど。FreeBSDは基本領域にしかインストール出来ないので、インストールする領域は3番目の基本領域。スライスエディタでこのスライスのパーティションタイプをFreeBSDの165に変更。さらにパーティションエディタでルートとswapに分ける。ここで、4番目のFAT32でフォーマットした基本領域も/dosにマウントするようにしておく。もちろんこのパーティションはフォーマットしない。後は、成り行き任せでフルインストール。再起動して、ちゃんと起動することを確認。

最後にVine Linux 3.2をインストール。なぜこれを最後にしたかというと、VineのLILOはグラフィカルな画面でカーソルで起動パーティションを選んで起動できるので、一番かっこいい。だから、最後にこれでMBRを上書きしたいから。で、注意するのは、起動時に普通に起動せず、boot:のプロンプトにlinux usb-storageと入力してUSB-CD-ROMを使用可能にしておく。これを指定するとanacondaというグラフィカルなインストーラーが起動するのでインストールが非常に楽。で、diskdruidで2番目の拡張領域内にswap領域とroot領域を確保。LinuxはFreeBSDの様に領域内に仮想のパーティションを作るのではなく、あくまでそれぞれを領域として確保しないといけないので、拡張領域内にパーティションを切る。で、フルインストール。途中LILOの設定で、FreeBSDを無視されるのと、何もインストールしていないFAT32な領域を起動領域にされるが、後で修正するので無視。

で、再起動するときれいなLILOのブート選択画面が出るので、Linuxを選んでリターンでVineが起動する。

Vineのメニュー内にLILOを設定するツールがあるので、dosを起動する設定の起動パーティションをFreeBSDの領域に変更して、ラベルをFreeBSDにしてあげる。ついでにデフォルト起動領域をWindowsに変えて、選択待機時間を60秒にしておく。これで再起動すると、見事に3つのOSのマルチブート環境が手に入る。後日GRUB等に変えるかもしれないけどね。

X20との格闘記録序章

旅行用のモバイルノートが欲しくなって物色していた。
条件は、極力軽くするために1スピンドル。で、PC-UNIXをメインにサブにWindowsを使いたいので、ゴテゴテしたメーカー製特殊装備はむしろ無い方がいい。んでもって、めったに使わないサブマシンなので限界まで安値を狙いたい。
PC-UNIXで問題なく使えるという条件を付けるとなると、シンプルな構成のThinkPadが最大の候補にあがる。で、中古で1スピンドルの軽量ThinkPadとなるとs30だが、こいつはUSBポートにガタがきやすいのと、人気…

旅行用のモバイルノートが欲しくなって物色していた。

条件は、極力軽くするために1スピンドル。で、PC-UNIXをメインにサブにWindowsを使いたいので、ゴテゴテしたメーカー製特殊装備はむしろ無い方がいい。んでもって、めったに使わないサブマシンなので限界まで安値を狙いたい。

PC-UNIXで問題なく使えるという条件を付けるとなると、シンプルな構成のThinkPadが最大の候補にあがる。で、中古で1スピンドルの軽量ThinkPadとなるとs30だが、こいつはUSBポートにガタがきやすいのと、人気があるので中古でも6~7万の値段がするので却下。となると狙い目はX20系列。X22あたりの中古の出物が多いので3~4万で手に入りそうではあるが、外装があまりにもボロいものが多い。

と思っていたら、偶然、驚くほど外装がきれいなX20を発見。外装のどこにも傷が見当たらない。しかもうれしいことに、どのノートでも見苦しくなるIntel Insideのシールが跡形も無く剥がされている。ここに強く惹かれたね。

スペック的には余分なものを極力廃止してるところもいい。さらに純正アダプターと純正バッテリーがついていて、しかもバッテリーの劣化もなし。

てなわけで、即決。ここよりX20との格闘の日々が始まる。ただし、エントリー作成は後日なので日記ではない。:-P

FreeBSD ports Broken

久しぶりに時間がとれたので、えいやっとFreeBSDなサーバーのportsを一気にupgradeしたらトラブル大発生。
一つはXFree86関連で、一連のPortsのうち、XFree86-Serverだけがpatch不良でmakeが通らない。
x11-server/XFree86-4-Server
4.5.0,2が、おそらくXFree86のソースパッケージが同じファイル名のままで更新されてしまったので、パッチが通らない。しかも、ftp.jp.freebsd.orgのdistfilesに入ってる…

久しぶりに時間がとれたので、えいやっとFreeBSDなサーバーのportsを一気にupgradeしたらトラブル大発生。

一つはXFree86関連で、一連のPortsのうち、XFree86-Serverだけがpatch不良でmakeが通らない。

x11-server/XFree86-4-Server 4.5.0,2が、おそらくXFree86のソースパッケージが同じファイル名のままで更新されてしまったので、パッチが通らない。しかも、ftp.jp.freebsd.orgのdistfilesに入ってるソースパッケージも更新されてしまっている。結局、一連のPortsのうちでServerだけが入らないので、この状態だと怖くてXFree86は動かせない。サーバーで良かったよ。クライアントマシンだったら致命的だな。

もう一つはSamba3。FreeBSD-4系列ではmakeできなくなっちゃってる。

SystemのKerberosで供給されるlibcryptoとOpenSSLで供給されるlibcryptoが整合性がとれないので、Active Directory SupportがONだとmakeできないよ、ってメッセージが出るんだけど、WITHOUT_ADS=onとかつけてもちゃんとスルーしてくれない。っていうか、初期設定だとoffだろうが。

この辺、グーグっても全然情報もないので、portsのupdate待ちかなあ。

英語版Palmのためのdelegate文字コード変換proxy

英語版Tungsten
T5をJaPonで日本語化してみたのだが、付属のWebブラウザがShiftJISしか認識しやがらないので、delegateを使って文字コード変換サーバーを立ち上げてみる。
重要なのは、ダイジェスト認証によって第三者の不正利用を防ぐこと。
1.delegateのインストール
delegateは汚いプログラムらしく、FreeBSDのportsはdistfilesももっていないので、本家のhttp://www.delegate.org/からportsのバージョンにあったものを持…

英語版Tungsten T5をJaPonで日本語化してみたのだが、付属のWebブラウザがShiftJISしか認識しやがらないので、delegateを使って文字コード変換サーバーを立ち上げてみる。

重要なのは、ダイジェスト認証によって第三者の不正利用を防ぐこと。

1.delegateのインストール

delegateは汚いプログラムらしく、FreeBSDのportsはdistfilesももっていないので、本家のhttp://www.delegate.org/からportsのバージョンにあったものを持ってくる。FreeBSDのportsはbz2を要求してたので、gunzip後にbzip2してbz2なアーカイブに変換した。

portinstall -M FORCE_BUILD=YES delegate

で一発オッケー。

2.delegate立ち上げshスクリプトの変更

/usr/local/etc/rc.d/delegate.shを用意する。
—-
#!/bin/sh

umask 027
if [ -x /usr/local/sbin/delegated ]; then

echo -n ‘ delegated’

/usr/local/sbin/delegated -P8800 -Txt
ADMIN=postmaster@bam-system.ddo.jp
CHARCODE=SJIS
CACHEDIR=/var/spool/delegate-nobody/cache
EXPIRE=1d
AUTH=proxy:pauth AUTHORIZER=-dgauth CRYPT=pass:proxyuser
RELIABLE=”-a/*”
SERVER=http
PROXY=localhost:8880
> /dev/null 2>&1

/usr/local/sbin/delegated -P8880 -Txt
ADMIN=postmaster@bam-system.ddo.jp
CHARCODE=JIS
CACHE=no
RELIABLE=”localhost”
SERVER=http
> /dev/null 2>&1

fi
—-
/var/spool/delegate-nobody/cacheをnobody:nobodyで掘っておかないと怒られるので注意。

CRYPTエントリーのproxyuserはdigest化のためのキーワードなので自由に選ぶ。

3.ユーザーの登録

登録は
delegated -Fauth -a username:password -dgauth CRYPT=pass:proxyuser
削除は
delegated -Fauth -d username -dgauth CRYPT=pass:proxyuser

4.実行

再起動すればdelegatedが起動する。ファイヤーウォールで8800を通すのを忘れないこと。