鯖が吹き飛んでqmailを入れ直しになったので、その時の記録。
使用OSはDebianLinux(lenny)。

今回は外部向けなので、踏み台にされたりしないように注意しながら構築していく。
とは言っても、qmailは基本的にはセキュリティが固めの設定がしてある。
DebianLinuxではapt-getである程度パッチの当たったソースコード(古い情報だけど、当たってるパッチ一覧)になっているが、一つ当たっていないパッチがある。
ユーザ名に記号が使われた時の対応パッチだ。
デフォルトでは何も文句を言わずに対象のメールを受け取ってしまう(さすがにドメインは設定したメールしか受け取らないが)。
そこらへんのパッチも当てつつ、頑張るとしよう。

# apt-get remove exim4-base
# apt-get install qmail-src ucspi-tcp-src
# build-ucspi-tcp

ここまでは特にデフォルトで問題ないと思う。
exim4-baseの削除はDebianLinuxを新規インストールした直後にqmailを入れる場合は、元に入っているMATを消す必要があるので入れてある。
該当しない環境の人は無視してよい。
では、問題のqmailをビルドする。

# build-qmail

途中のパッチを当てるタイミング(Press ENTER to continue…が出てる所)で、別コンソールからパッチを当てる。
当てたいパッチはqmail-smtpd-relay-reject
ただ、このパッチはパッチを当てる順番により、今のDebian側で付けたパッチの後では一箇所パッチが当たらない部分がある。
そこはパッチファイルとソースファイルとにらめっこして修正しよう。
どうせ一箇所だし、パッチ作っておくのメンドイ(酷)
デフォルトでビルドした場合は解凍されたソースが/tmp/qmail/qmail-1.03に展開されている。
wget等でtmpあたりにパッチを落としておいて以下のコマンド。

# cd /tmp/qmail/qmail-1.03
# patch -s -p1 < ../../qmail-smtpd-relay-reject

その場にqmail-smptd.c.rejという名前でエラーで弾き出された部分のファイルが生成されるので、それを参照してqmail-smptd.cを追加修正しておこう。
一行書くだけだ。
で、元のコンソールに戻ってデフォルトで進んでいけばインストール完了。
まだメール鯖としては不完全なので、止めておこう。

# /etc/init.d/qmail stop

qmailの設定ファイルを弄っていく。
場所は/etc/qmailで、デフォルトでは自分自身の鯖のメールしか受け取らないし、転送すらしてくれない(と思う)。
それぞれのファイルを確認・修正・追加をしていこう。
なお、これらのファイルの書式はドメインごと改行で区切っていく。
設定例はhage.hoge.com(hageがホスト名でhoge.comがドメイン名)として、DNSの設定によりhoge.comでもメールを受けれるようになっている物とする。

me:自分自身のドメイン名

hage.hoge.com

locals:ローカルの物として処理するドメイン名

localhost
hage.hoge.com
hoge.com

rcpthosts:転送を許可する宛先のドメイン名

hage.hoge.com
hoge.com

plusdomain:ドメイン部分に+が付いた時に追加するドメイン名

hoge.com

defaultdomain:ドメインが省略された場合に書き込まれるドメイン名

hoge.com

こんな感じだろう。
rcpthostsがこの中では一番重要なファイル。
これを削除してしまうと、その鯖は赤い絨毯が敷かれたスパムの踏み台。
お上品の欠片も無いスパマーが上って、やりたい放題メールを飛ばされてしまうので注意しよう。
受け取るべきメールのドメイン名のみを書こう。

後、ダブルバウンス対策(Fromを偽られた上にエラーになってFromの部分のアドレスに返って来るメール)もしておく。
どうせ読まないので、そのまま破棄する設定にする。

# touch doublebounceto

qmailはrootでメールを受け取る事は出来ないので、どこかのユーザにメールを転送する必要がある。
メール管理者のメールも一緒も転送する。

# mkdir alias
# echo '&メールアドレスまたはユーザ名' > .qmail-root
# echo '&メールアドレスまたはユーザ名' > .qmail-mailer-daemon
# echo '&メールアドレスまたはユーザ名' > .qmail-postmaster

次に起動スクリプトをいじって、Maildir形式に対応する用にする。
/etc/init.d/qmailの「alias_empty=”./Maildir/”」を有効にして、他のalias_emptyは#でコメントアウトする。

各ユーザのホームディレクトリにメールを受け取る領域を作る。
メールを受け取るユーザになって、自分のホームディレクトリで以下のコマンドを発行。

$ maildirmake Maildir
$ echo './Maildir/' > .qmail

これでメールを受け取る環境を作成完了。
ユーザ新規追加時のディレクトリにも適用するのであれば、管理者で以下のコマンドを発行。

# maildirmake /etc/skel/Maildir
# echo './Maildir/' > /etc/skel/.qmail

このままでの設定によりメールは受け取る事が出来るが、外部に送るメールは許可されていないので配送できない。
鯖が設置されているローカルのIPに関してはメール転送を許可する必要がある。
ローカルIPの範囲を192.168.255.0/24として自分自身127.0.0.1を含めて許可する形で、/etc/tcp.smtpを編集する。

127.0.0.1:allow,RELAYCLIENT=""
192.168.255.:allow,RELAYCLIENT=""

これを元に認識できる設定ファイルを生成する。

# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

これでローカルIPである192.168.255.0/24と鯖自身は自由なドメインにメール転送が出来るようになる。ここもスパマーの餌食にならないように注意する設定ですね。

以上で準備完了なので、qmailを起動する。

# /etc/init.d/qmail start

内部や外部からテストメールを送ってみたり、不正中継チェックをしてみたりして動いて安全か確かめましょう。
もしかしたら、起動してもプロセスが落ちるかもしれないのでこの記事も参考にしたら解決するかもしれない。

後はメールクライアントで読む為にpop3関係とかimap関係とか入れると良いだろう。
私はimapでcourier-imapを入れてます。

カテゴリ/タグ:私の記憶領域 /  ,    
コメント (0)

IPを動的に割り当ててくれる、ステキなシステムです。
ついでにネットマスクとかDNSの場所とかも自動で設定してくれたりと、至れり尽くせりなサービスです。
でも、適当に割り振られちゃうとイヤなので、ネットワークアダプタ固有のMACアドレスを使ってIPを固有に割り当てる設定でいきます。

まずはインストール。

apt-get install dhcp3-server

あれー? 今までdhcp3なんて名前付いてたっけか?
インストールするのも久しぶりだから、すっかり変わってたのかしら・・・。
無事に入ったら設定ファイルの/etc/dhcp3/dhcpd.confを書き換える。
例:ドメイン「maocat.net」 IPアドレス「192.168.255.0/255.255.255.0」 ゲートウェイ「192.168.255.1」 ネームサーバIP「192.168.255.10」

option domain-name "maocat.net";
option domain-name-servers 192.168.255.10;

subnet 192.168.255.0 netmask 255.255.255.0 {
 option routers 192.168.255.1;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.255.255;
 default-lease-time 600;
 max-lease-time 7200;

 host ホスト名 {
   hardware ethernet MACアドレス;
   fixed-address 割り当てるIP;
 }

MACアドレス部分の区切りはコロンを使う(xx:xx:xx:xx:xx:xx)。
割り振るIPを増やす場合はhost部分を増やして設定していけば良い。

追記:2011.04.25
Debianがsqueezeになった時にインストールした所、isc-dhcp-serverになってた。
設定ファイルが/etc/dhcp/dhcpd.confに変更されて、起動スクリプトなんかもisc-dhcp-serverに変わっている。
毎回、名前が変わって面倒なヤツだ、ぷんすか><

カテゴリ/タグ:私の記憶領域 /  ,    
コメント (0)

USBで繋いでRemote Joy Lite等を動かす時にTypeBのドライバが必要になってくるのだが、Windows7(Vistaもか? 64bitだけなのかもしれないけど)はドライバにデジタル署名がされて無いとインストールする事すら出来ない。
厳格にやるのはいいんだけど、少しくらい融通が利かないと客は外に流れると思うよ?
インストールする方法としては色々とあるらしい。

1.SetupReadyDriverPlusを使う。
詳しくは分からないけど、ドライバのデジタル署名制限を無効化するツールだそうです。
完全に無効になるので正しい認証も無視すると思われる(予想)

2.自分でデジタル署名をする。
手間はかかるけど、64bitOSの場合は認証されたデジタル署名とされてない署名を区別する事ができます。
署名されていない物は入れる事ができません。

3.Windowsを窓から投げ捨てる。
元から買わないようにした方が被害はないです☆

このサイトでは2番の方法を説明したいと思う。
セキュリティ的にスルーパスよりは選択の余地を残した方が、安定した動きをしてくれるだろう。
一応、説明は懇切丁寧にはやらないので、分からない場合は自分で調べるように。
もちろん、これをやった時にトラブっても私は責任を取る事はできないゾ。

まず、64bit版のTypeBドライバを落としてこよう。
RemoteJoy SDL 2007に入っている。
探してダウンロードしてこよう。

次は署名できる環境にする。
開発環境に入っているわけだが、タダで手に入る物としてはWindowsSDKである。

Microsoft:Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit

1.3GBくらいの巨大ファイルだ。
回線細い人は気長に待とう。
落ちてくるデータはイメージなので、DVDに焼くなりDaemon Toolsを使うなりしてインストールしよう。

インストール後にスタートメニュー内の「Microsoft Windows SDK」にある「CMD シェル」を右クリックして「管理者として実行」をクリックと、プロンプトが立ち上がるはずだ。
プロンプト内でドライバがあるフォルダに移動す(RemoteJoySDL¥LibUSB¥driver_x64にあるはず)。
そこでコマンドを打ち込んでいく。
コマンド中のパスワードと書かれた部分は任意に決めたパスワードを全部同じに入れていく。
(多分、libusb0_x64だけで大丈夫だと思うが、ダメだったらlibusb0も各所を置き換えて作ってください)

makecert -sv libusb0_x64.pvk -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -ss Root -len 1024 -sr localMachine -n CN="libusb0_x64.sys" libusb0_x64.cer
cert2spc libusb0_x64.cer libusb0_x64.spc
pvk2pfx -pvk libusb0_x64.pvk -pi パスワード -spc libusb0_x64.spc -pfx libusb0_x64.pfx -po パスワード
signtool sign /f libusb0_x64.pfx /p パスワード /d "libusb0_x64.sys" /v libusb0_x64.sys

これで署名作成は完了。
プロンプトを閉じる。
次は署名のインストールを行う。
エクスプローラでドライバのフォルダに行き、作成された「libusb0_x64.pfx」をダブルクリックしてウィザードを出す。
途中で訊かれるパスワードは、コマンド中に指定したパスワードを入れる。
証明書ストアの項目で証明書を「すべて次のストアに配置する」を選択して、参照ボタンをクリックし、「物理ストアを表示する」を有効にして、「信頼されたルート証明機関¥レジストリ」を選択し、進んでいけばインストールが完了する。

スタートメニューより「アクセサリ」の中の「コマンドプロンプト」を右クリック「管理者として実行」をして、以下のコマンドを発行。

bcdedit /set TESTSIGNING ON

そして再起動。
このコマンドによって、自分でデジタル署名したドライバでも使う事ができるようになる。
後はドライバ更新等で署名したドライバをインストールすれば良い。
途中で「発行元を検証できない」というウィンドウがでるが、そのままインストールする。
プロパティ等で変なエラーが出ていなければ、使用可能になっているはずである。

この方法は問題として、画面右下にテストモードの文字が出てしまう。
気になるなら「Remove Watermark」というアプリを使ってみると良い。

カテゴリ/タグ:私の記憶領域 /  ,    
Windows7(64bit)でPSPのTypeBドライバを入れてみる はコメントを受け付けていません

この記事が少ないのは公式の英語をちゃんと読んでる人が多いのか、そもそもセキュリティアプリケーションを入れる人はXP世代が多くてPeerGuardian2を入れちゃってるのか・・・。
そもそも、これの認知度の問題なのかも?(笑)

Vistaとか7にはUser Account Control(ユーザーアカウント制御)という物が積んであって、管理者権限を持っているユーザーであっても一応一般ユーザ扱いされて、管理者権限が必要になった時にシステムが「やっても良いのか?」と聞いてくれる悪意のある腐れプログラムを無断で実行させない措置が取られています。
問題はコイツのせいでPeerBlockがスタートアップで自動起動してくれない。
公式にやり方載ってるけど、英語読むの面倒だからスルーパスという方の為にやった事を書いとく。
画面とかやり方はWindows7でやってるので、Vistaは少し違う所があるかもしれない。

何はともあれPeerBlockをインストールする。
私はインストーラーを使わないで、zipで持ってきて「c:¥Program Files¥PeerBlock」に中身を置いた。
その後、スタートメニューよりアクセサリ→システムツールの中にあるタスクスケジューラを起動する。
ウィンドウ右側にある「タスクの作成…」をクリック。
作成ウィンドウが出るので、タブを切り替えていって各項目を埋めていく。

[全般タブ]
1
名前と説明は任意で分かりやすいのをつけておこう。
「ユーザーがログオンしているときのみに実行する」を選択して、「最上位の特権で実行する」をチェック。
構成で該当するOSを選択する(私の環境の場合はWindows 7,Windows Server 2008 R2)。

[トリガータブ]の新規ボタンを押す。
2
タスクの開始は「ログオン時」を選択。
設定は「任意のユーザー」を選択。
で、OKボタン。

[操作タブ]の新規ボタンを押す。
3
操作は「プログラムの開始」で、設定内のプログラム/スクリプトは参照ボタンでPeerBlockを置いた場所の中にある「PeerBlock.exe」(拡張子がついてない人は水色のブロックに盾がついてるアイコンのPeerBlockがソレ。拡張子表示はしといた方が良いぞ)を指定。
後は空白でOKボタン。

[条件タブ]
4
電源の「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外す。
その下のチェックも無効になります。

[設定タブ]
5
「タスクを停止するまでの時間」と「タスクの再実行がスケジュールされていない場合に削除されるまでの時間」のチェックをオフにして、それ以外をオン。
タスクが既に実行中の場合に適用される規則は「新しいインスタンスを開始しない」を選択。

これでOKボタンを押してタスクの登録完了。
再起動してログイン時に立ち上がってくれれば大成功だ。
立ち上がりのアップデートウィンドウの閉じるのが遅いとか、ウィンドウを隠しておきたいとかはPeerBlockのSettingを弄ってなんとかしてください。

早くバージョンアップとかで、この手の問題が楽になってくれるといいんだがなぁ。

追記(2016-02-11)
Windows10でもこの方法で動く事を確認。
スタートメニュー内のタスクスケジューラの位置が移動してWindows管理ツールへ。
全般タブの構成の所はWindows10を指定した。

ゴチャゴチャとハードディスクを何台も繋げていると、Windows7のインストール時にブートセクタがシステムドライブ以外に入り込むという事が起こるっぽい(多分。そういう風に解釈してる)。
マザーボードに繋いであるハードディスクの中で検索順(SATA1とか2とかの順だと思うが)の一番最初に見つかった基本領域に突っ込まれる気がする。
bootというフォルダなのだが、こやつ通常では管理者権限でも削除する事が出来ないという、お邪魔ぷよより邪魔な存在。
まあ、保護されたオペレーティングシステムファイルを表示しない状態だと見る事は出来ないんだけどネ。
後、ちょっとうろ覚え(色々と試行錯誤してた)なので、間違ってたらごめんなさい☆
ネットの情報は取捨選択しようね。
自己責任ヨ。

注:出来るかは知らないけど、今使っているbootフォルダを削除しないように。動かなくなっても私は知らないヨー。

例題としてDドライブに邪魔なbootフォルダがあると仮定する。
このフォルダの所有者はTrustedInstaller。
コイツが威張っている限り削除がまず出来ません。
まずは所有者をAdministratorsに変更してしまいましょう。
スタートメニューよりコマンドプロンプトを「右クリック→管理者として実行」。
以下のコマンドを発行してあげます。

takeown /r /a /f d:¥boot

これでbootフォルダ及びそれ以下のフォルダ・ファイルの所有者がAdministratorsに委譲されたはずだ。

しかし、削除の権限がまだ無いのでフルアクセス出来るように変更する。

icacls d:¥boot¥* /grant Administrators:F /t

これでbootフォルダ以下のファイルは管理者権限があればアクセスできるはず。
後は、ゴミ箱にポイして空にすれば消えるはずです。

追試できないんで覚えてる限りを書いたけど、合ってるのかなぁ(笑)
複数ドライブ持ちでインストールする時は、該当ドライブ以外はコネクタ外しといた方が安全かもね。
バラバラだと構成変える時が面倒そうだし・・・。