ここからは再構築時の覚書。
今のサーバーはBIGLOBEのOP25Bによってメールサーバーとしては機能しないので、ASAHI-NETのSubmission PortにSMTP AUTHで認証して中継させていることは前に書いた。
この設定はCyrus SASLがないと動かないので、portsからsendmail+SASLなものをインストールしてあげる必要がある。
Libraryさえ参照できればいいので、saslauthdとかを上げてやる必要はない。
Records around Server Maintainance
ここからは再構築時の覚書。
今のサーバーはBIGLOBEのOP25Bによってメールサーバーとしては機能しないので、ASAHI-NETのSubmission
PortにSMTP AUTHで認証して中継させていることは前に書いた。
この設定はCyrus
SASLがないと動かないので、portsからsendmail+SASLなものをインストールしてあげる必要がある。
Libraryさえ参照できればいいので、saslauthdとかを上げてやる必要はない。
ここからは再構築時の覚書。
今のサーバーはBIGLOBEのOP25Bによってメールサーバーとしては機能しないので、ASAHI-NETのSubmission PortにSMTP AUTHで認証して中継させていることは前に書いた。
この設定はCyrus SASLがないと動かないので、portsからsendmail+SASLなものをインストールしてあげる必要がある。
Libraryさえ参照できればいいので、saslauthdとかを上げてやる必要はない。
サーバーのハードディスクがいよいよ怪しくなってきたので、データをバックアップしてHDDを交換。このついでに、継ぎはぎもいよいよ苦しくなってきたFreeBSDを6.2にバージョンアップして、無駄なサービス類をやめてサーバーをすっきりさせることに。
まずは、FreeBSD-6.2のインストール。この時、いつもならDistributionをALLにしてしまうところだが、6.2リリース後にX.orgが7.2にバージョンアップして、UPGRADEが困難を極めるので、DistributionでX.org
…
サーバーのハードディスクがいよいよ怪しくなってきたので、データをバックアップしてHDDを交換。このついでに、継ぎはぎもいよいよ苦しくなってきたFreeBSDを6.2にバージョンアップして、無駄なサービス類をやめてサーバーをすっきりさせることに。
まずは、FreeBSD-6.2のインストール。この時、いつもならDistributionをALLにしてしまうところだが、6.2リリース後にX.orgが7.2にバージョンアップして、UPGRADEが困難を極めるので、DistributionでX.org 6.9を入れないようにCustomでX関係だけを外して選択する。
インストール後、いつもならkernelを作り直すところだが、今回は管理を楽にするためにあえてGENERICのままで使うことにする。
なぜかというと、freebsd-updateとportsnapを使いたいから。6.2からこれらが正式にシステムに組み込まれてるので、binary patchとports updateの管理が非常に楽になっている。freebsd-updateの条件としてGENERICカーネルを使っていることなので、kernelは独自につくらない。
で、まずはfreebsd-updateでセキュリティパッチを適用する。
freebsd-update fetch
freebsd-update install
次回からも適当にこれを実施すればいい。次にportsnapでports treeを更新する。
portsnap fetch
portsnap extract
portsnapは最初だけ完全なports treeを展開して上書きする必要があるので、これを行う。ports treeが更新されたら、さっさとports-mgmt/portupgradeを導入しておく。
次回からは、差分だけを取ってくるので、早い。INDEXも一緒に更新されるので、portsdb -Uもいらない。
portsnap fetch
portsnap update
portsdb -u
これで最新のportsでpkgdbが維持される。cvsupなんかとは雲泥の違いだね。
後は、しこしこサービスをインストール。
ThinkPad
X20のXircomの内蔵EthenetカードがPXE-E05なるエラーを起動時に吐く様になってきたと思ったら、ついに認識されなくなった。
ということで、秋葉原に行って物色しておいたXircom LAN/Modem
Combo MiniPCI CardをQC
Passで¥1980で購入。XircomはIntelに買収されて、XircomのWinModemなチップとIntelのEtherExpress
PRO/100+のチップが乗っているはずなので、ThinkPad X20に搭載…
ThinkPad X20のXircomの内蔵EthenetカードがPXE-E05なるエラーを起動時に吐く様になってきたと思ったら、ついに認識されなくなった。
ということで、秋葉原に行って物色しておいたXircom LAN/Modem Combo MiniPCI CardをQC Passで¥1980で購入。XircomはIntelに買収されて、XircomのWinModemなチップとIntelのEtherExpress PRO/100+のチップが乗っているはずなので、ThinkPad X20に搭載されているものと本質的に同じはず。ほんとは3Comのコンボを入れたかったんだけど、こいつは国内で入手はまず不可能、輸入すると高くつくのであきらめる。
ThinkPad X20の保守マニュアルを旧IBM(現Lenovo)のThinkPadサポートページをより入手して交換。BIOSで見ると無事に認識してるし、WindowsからModemもLANも使用できた。PXE-E05のエラーも出なくなったので、起動時に時間がかかることもなくなった。
で、BIOSでNetwork Bootの項目を見ると、Intel Boot Agentのファームウェアが古いバージョンのものだったので、ファームウェアを更新することに。
まずは、最新のBoot Agent(12.1)をintel.comのサポートページからとってくる。このPROBOOT.EXEを実行して内容を解凍する。で、DOS起動可能なFDを用意して、そこにIBAUTIL.EXEをコピーしておいて、このFDから起動。
まずは、IBAUTILでNICリストを出してあげると、なぜかFlash ROMが未搭載と表示されるが、ここは慌てずNICをデフォルト設定に戻してやる。
IBAUTIL -DEFCFG
もういちどIBAUTILを実行するとFlash ROMがPXE/RPLになったので、今度はファームウェアをバージョンアップ。
IBAUTIL -UP
手順に従って実行したあと、BIOSでバージョンを確認すると、ちゃんと4.0.12.1にバージョンアップしてたので、これでよしとする。
まあ、PXEなんて使わないんだけど。
いろいろと調べた結果、ミソは二つ 1.
HTTP(80)とHTTPS(443)の両方ともProxyで中継されること 2.
インターネットオプションでプロクシにHTTP1.1を利用にチェックすること
いろいろと調べた結果、ミソは二つ
1. HTTP(80)とHTTPS(443)の両方ともProxyで中継されること
2. インターネットオプションでプロクシにHTTP1.1を利用にチェックすること
ついで。 ひさしぶりにcvsupをしてportsdb
-uUでINDEXとINDEX.dbを更新しようとしたら、一部portsのMakefileが壊れているとやらでINDEXが更新できない。うむむ。
調べてみたら、わざわざ-Uをする必要はないのね。 portsdb -Fu
としてあげるとportsディレクトリの完成済みINDEXをfetchしてきてくれる。localでportsディレクトリをいじってない限り、こっちを使った方がよさそげ。
ついで。
ひさしぶりにcvsupをしてportsdb -uUでINDEXとINDEX.dbを更新しようとしたら、一部portsのMakefileが壊れているとやらでINDEXが更新できない。うむむ。
調べてみたら、わざわざ-Uをする必要はないのね。
portsdb -Fu
としてあげるとportsディレクトリの完成済みINDEXをfetchしてきてくれる。localでportsディレクトリをいじってない限り、こっちを使った方がよさそげ。
ひさしぶりにサーバーのアップデートをやっていたら、またしてもトラブル。
一部のPerl関連のportsがPerl5.8以降を要求しやがる。で、japanese/perl5をアンインストールしてからlang/perl5.8をインストールしてやるが、システムに書かれたPERL_LEVELが5.6のままなので、PERL_LEVELをチェックしてやがるportsはそのままではインストールできない。
で、調べてみると以下のコマンドを使えばportsでいれたPerlを使うようにいろいろ設定を書き換えてくれ…
ひさしぶりにサーバーのアップデートをやっていたら、またしてもトラブル。
一部のPerl関連のportsがPerl5.8以降を要求しやがる。で、japanese/perl5をアンインストールしてからlang/perl5.8をインストールしてやるが、システムに書かれたPERL_LEVELが5.6のままなので、PERL_LEVELをチェックしてやがるportsはそのままではインストールできない。
で、調べてみると以下のコマンドを使えばportsでいれたPerlを使うようにいろいろ設定を書き換えてくれるらしい。
use.perl port
うーむ。
どうやら、10.2からはBroadcom
43xxベースのカードについてはndiswrapper経由でなくカーネルドライバーが導入されたらしい。でも、カードごとのファームウェアは必要みたい。
で、まずはbcm43xx-fwcutterをYaSTでインストール
メルコのAirStationドライバーのcbg54/win2000にあるbcmwl5.sysがWin用のドライバーなので、ここからファームウェアを抽出する。
bcm43xx-fwcutter -w /lib/firmware bcmwl5….
どうやら、10.2からはBroadcom 43xxベースのカードについてはndiswrapper経由でなくカーネルドライバーが導入されたらしい。でも、カードごとのファームウェアは必要みたい。
で、まずはbcm43xx-fwcutterをYaSTでインストール
メルコのAirStationドライバーのcbg54/win2000にあるbcmwl5.sysがWin用のドライバーなので、ここからファームウェアを抽出する。
bcm43xx-fwcutter -w /lib/firmware bcmwl5.sys
で、後はカードをさしてあげるだけで自動認識〜。すげ〜。これでkismacとかも使えるかも。
SUSE 10.2でtpbを使う。 とりあえず、nvram
moduleは最初からロードされる設定でインストールされるので、/usr/share/doc/packages/tpb/README.SUSEの指示どおりにここにある00-nvram.rulesを/etc/udev/rules.d/にコピーして再起動。
これで使えるはず? とりあえず~/.tpbrcを作成してみれ。see
man tpb.
SUSE 10.2でtpbを使う。
とりあえず、nvram moduleは最初からロードされる設定でインストールされるので、/usr/share/doc/packages/tpb/README.SUSEの指示どおりにここにある00-nvram.rulesを/etc/udev/rules.d/にコピーして再起動。
これで使えるはず?
とりあえず~/.tpbrcを作成してみれ。see man tpb.
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を入れると、基本的には/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/