投稿

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

標準で設定して欲しいのに

時刻合わせをどうするか…。 先日、nettime.batでクライアントとサーバの時刻同期を強制的に行わせることにしたのだけれど…。 肝心のサーバは、どうするかという問題があるわけです。 今回は、proxyの下にWindows Serverを設置しているので、直接外に行かせたくない気もして、ntpで時刻合わせをしているproxyと同期することにします。 さて、Linuxならntpでサーバ指定すればOKなんだけど、Windowsはどうするの? と…。昔なら さくら時計 でというのもありですし、自分のマシンならそれもいいでしょう。 できれば、標準のコマンドで合わせて欲しいわけです。 メニューを漁っても、それらしき項目は無いわけで…。 探してみると「 Windows Server 2008 で時刻同期を設定する (NTP) 」なんて記事がちゃんとありました。 手順は簡単 コマンドプロンプトを開く w32tm /query /configuration で状況確認 w32tm /config /manualpeerlist:(ntpサーバのIP) /syncfromflags:manual で設定 w32tm /config /update で設定を反映 再度確認 とこれだけです。今回、proxyは192.168.0.1で立てましたので、これを指定して終了。 ところでntpだけど そうえいば、昔ntp.confを設定するときには、福岡大学と同期という情報が流れて、それが元でfukuoka-u.ac.jpのntpがパンクするなんて事件がありましたなぁ。 その結果、他のところを使おうということで、 ntp.jst.mfeed.ad.jp ntp.ring.gr.jp なんかを利用するのが一般的だったんだけど、最近はNTP POOL PROJECTなんてのができているんですね〜。 ちなみに、ubuntuにntpを入れて、ntp.confを確認すると、  server 0.ubuntu.pool.ntp.org server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org

Windows Server 手こずった #3

イメージ
バックアップドライブの設定 今回は、NASを利用していたので、そのまま使おうかとも考えたのだけれども、細かな制御がしにくいことやログを取る上で、ユーザ名など詳細に記録したいという事で、NASのデータをWindowsServer上に移動し、FileServerとして稼働することにした。 こんどはNASをバックアップにしようと思ったのだけれど、バッファローのLinkStationは直接USBで接続して利用できない…らしい。といって、Network上に置いていたら意味がない。 サーバに新たにNICを挿して、ローカルなネットワークを構築しても良いのだけど、手間の割にメリットが無いので、外付けのHDDを購入してバックアップ用に割り当てることにした。 現場近くのケーズデンキに行くと、USB3.0対応の2TBのものが、1万円ちょっとででているので、速攻で購入。 戻って接続。 OK認識は大丈夫。HDD上に置かれているフォーマッタやパーティション切り直しツールなんかは、一切いらないので、削除。変なツールは不要ですし、標準のもので十分だもんね〜。 さて、バックアップソフトには、お気に入りのpdumpfsを利用。LinuxでのFileServerでもお世話になりました。Windows版も出ているので、利用することに。 本当はRuby突っ込んで実行なんてのも良いのだけれど、個人的な趣味に走り過ぎと言われるのはまずいので…。 削除は、手動で実行することに決め、余分なタスクなどは設定しない。 さて、テスト…。 エラーだ。 新しいHDDに書き込みができない。・・・。 そうか、pdumpfsの権限が不足しているのか〜と、試しにeveryoneフルコントロールにしようとして、権限がないと言われる。 ちょっ、俺はadministratorで入ってるんやで!!! なんでや〜。 ええい、ドライブのパスも変更できるし、フォーマともできるのに…。 そっか、クイックフォーマットが悪さしてるんだなきっと。 じゃ、クイックじゃないフォーマットを…NTFSで2TB。ぽちっ! 1%……… 2%……… ってめちゃめちゃ遅いじゃんか。ダメだ、他の作業を先にやることにしようと…。と諦めて前日帰宅。 でもって、朝見るとようやく55%。はぁ、結局フォーマットをかけた翌

現場で書き換え…

ログインスクリプトでエラー 前回、マイクロソフトのサンプルに問題があって、修正が必要と書いたのだけれど、現場でテストしてみると、さらにエラーが発生する。 strGroups = LCase(Join(CurrentUser.MemberOf)) 今度は、この記述だ・・・。 どうやら、ユーザのデータを引いた時のOUやグループの設定状況でデータ個数が配列で返らない場合に、うまくjoinできていないらしい。 そこで、 'strGroups = LCase(Join(CurrentUser.MemberOf)) if IsArray(CurrentUser.MemberOf) then    strGroups = LCase(join(CurrentUser.MemberOf)) else    strGroups = LCase(CurrentUser.MemberOf) End if てな感じで、配列かどうかで処理を分ける必要があるということが判明。 その場で、書き換えてテストしなければならない程の、逼迫ぶりで…。疲れましたゎ。 でも、これで何とか動作するようになり、OKです。 念の為、全て記述しておこう。 Const MANAGER_GROUP = "cn=manager" Const SUPPORT_GROUP = "cn=support" 'Const STAFF_GROUP   = "cn=staff" Set wshNetwork = CreateObject("WScript.Network") 'homeはプロファイル設定で掴ませることにするのでコメントアウト 'wshNetwork.MapNetworkDrive "i:" , "\\dc01\home$\" & wshNetwork.UserName wshNetwork.MapNetworkDrive "s:" , "\\dc01\staff" Set ADSysInfo = CreateObject("ADSystemInfo")

相変わらずなトラブルに見舞われ…?

システム導入作業ほぼ完了 日曜から3日連続で、8時〜23時程度の作業に追われていましたが、これもほぼ終わろうとしています。さすがに、連続的な作業と、現場の人達の相談(というかクレームw)に疲れてきましたが、何とか終りが見えてきたので、今日は早めに帰宅、おかげで少し時間が取れました。昨日までは帰ってシャワーを浴びたら即ベッドで死んだように寝ていましたから、今日は心に余裕があります。 ほぼすべてのトラブルも解決の目処が立ちました〜。 新しいOSを使ったせいもあって、様々トラブルというか自分の知識が足りなかった部分も多々あるんだけれど、面白い経験をしたのでメモメモ…。 Windows Serverのライセンス 今回、職員は120名以上で所有PCは40台程度の職場への導入だったので、Windows Server 2008R2(5CAL)に+35CALを用意しました。 以前からWindows Serverは接続デバイス数か接続ユーザー数が選べたはずだったので、当然少ない方のデバイスで40CAL用意したわけです。 日曜に搬入だったので、それまでに設定作業をあらかた終わらせようと頑張っていたわけです。搬入前日に、ほぼイメージも出来上がり、設置してクライアントのPCを接続した時に、エラーになってはまずいということで、ライセンスの登録をしようと最終作業を始めました。 コントロールパネルを開いて、接続デバイス数で…。と思ったら、設定場所が見つからない。確か、あったはずなのに…。 あちらを開き、こちらを開き、Helpを確認し…。見つからない。 まずい、明日になって接続でトラブりたくないし…。 で、結局かなりの時間を費やし、見つけたのはモラルライセンスだったわけです。 「 稼動ライセンスモードについて 」に詳細に書かれていました。2008から変更になっていたようです…。 つまり、設定する項目は無効になっていて、法人のモラルにしたがって購入・利用しろと…。 キツネに化かされたような気がしました〜。頭の上にかけたメガネを探していたような、まぬけな作業を2時間近くしていたことになる訳で…、恥ずかしい!けど記録しておこう!とな。 最近のマイクロソフトは、対応の仕方が少し変わってきたような気がします。無料のOSが台頭してきたのも影響しているのかもしれません

ログオン・スクリプトの作成

イメージ
Active Directoryでのユーザに 構築も終盤になってきて、ユーザの要望に合わせた設定を行なっていく。手こずりネタ第3弾ww。 現在NASのに保存されているデータをファイルサーバ上に移動させて、そこを利用することに。 これまでのままでは、使い勝手が悪いので、ネットワーク上のドライブに個人用の領域を確保する。 方針としては以下のとおり。 private領域(他人からは参照されない) public領域(全職員が共有する。読み書き可能) group領域(特定のグループだけが読み書き可能。) 3つめのGroup領域は、必要に応じて複数存在させる。 これと、役職の関係が出てくるので、よく考える必要がある。 管理職は、全ての領域(1〜3)が読み書き可能。 groupメンバーは、自分のgroupとpublicが読み書き可能。 それ以外の、一般職員はpublicのみ。 そして、全員にprivate領域の読み書き可能権限を与える。 とまあ、表にしたほうが早いかもしれない。 ログオン・スクリプトの作成 net useで処理することが、多かったけど、今回は別の方法を試して見ることに。 マイクロソフトのページ を参考に、書き換えてテストすることに。 先ほどの方針に従って、書き換える。プリンタはとりあえず考慮しない。 Const MANAGER_GROUP = "cn=manager" Const SUPPORT_GROUP = "cn=support" 'Const STAFF_GROUP   = "cn=staff"  Set wshNetwork = CreateObject("WScript.Network") 'wshNetwork.MapNetworkDrive "i:" , "\\dc01\home$\" & wshNetwork.UserName wshNetwork.MapNetworkDrive "s:" , "\\dc01\staff"  Set ADSysInfo = CreateObject(

Windows Server 手こずった #2

イメージ
OUが削除できない ユーザーを追加するのに、テスト用にOU(組織単位)を切って、そこにまとめて追加できるよう何度もテストをしたんだけど、そのテスト用のOUが削除できない…。 もちろん、昔のサーバーにはこんな機能はなかった(はず)ので、少々焦りました。 確かにOU作成するときに、「間違って削除されないようコンテナを保護する」にチェックが入っていたんだけど…。削除させてくれよ〜。 所有権がないのか?とか、オプションで表示できるはず…と探しまわって、ありました。 [表示]-[拡張機能]をクリック→拡張機能の表示を有効にする。 このあと、OUのプロパティを開いてみると、タブが増えていて、「間違って削除されないようコンテナを保護する」のチェックボックスを外すと、念願のOU削除が可能になりました。 休憩しながら、2008Serverの書籍をよく読むと、小さく書かれていました。トホホ…。 まあ、2度と忘れることは無いけど、もう少し体系立ててメニューとかタブとか作って欲しいなぁ。 結局、使い勝手の悪さもNTの頃から変わっていないやんけ〜。 以前のではOUはサックリ削除できたと思うんだけどな…。消す前に確認してくれれば充分だと思うんだけどな…。今回作業してて、あぁ間違えて消しちゃうとこだったよ〜なんと事は1度も起きなかったんだけどな。 いま、検索してみたら「【 解説】「Active Directory」ドメインサービスの7つの強化ポイント 」なる2008が出た当時の記事に、書かれているじゃないですか〜。 きっと、2008を使っている人には常識なのかもしれない…。僕は非常識ということになるんだな…。 まあ、これも一度ハマれば二度と忘れることはなかろう。

Windows Server 2008 R2 に手こずった

イメージ
NT Serverとは随分変わったね このところ作業に追われ、なかなか更新する時間が取れなかった。しかし作業も進んできたので記録をとっておく必要もあるし、結構ハマったから、その内容をまとめておこうと思う。 最初にWindows Serverに触れたのはNT3.51だったから、もうあれから随分時が流れました。次が2000 Serverで2003は少しメンテしたぐらい。 今回は2008ということで、機能的にも随分設定が楽になったところが各所に見られました。が、しかし思い通りに行かない部分も多々あり、それで時間が取られているんだけど…。 今回は、120名ほどユーザーアカウントを作成する必要があるので、とても手作業というわけには行きません。 そこで、バッチを作成してdsaddコマンドを使い一括登録しました。 日々是消費 さんのスクリプトを参考にしました。 adduser.bat @echo on for /f "tokens=1-3 delims=," %%i in (userlist.csv) do ( dsadd user  "CN=%%i,OU=Organization,DC=Company,DC=local"   -samid %%i -pwd %%j -display %%k -hmdir \\dc01\home$\%%i -hmdrv I: -profile \\dc01\profile$\%%i -canchpwd no -acctexpires never   mkdir \\dc01\home$\%%i cacls \\dc01\home$\%%i /G %%i:F /E   mkdir \\dc01\profile$\%%i cacls \\dc01\Profile$\%%i /G %%i:F /E net user %%i %%j net user %%i /ACTIVE:YES ) これに、アカウント名,パスワード,表示名(漢字)のフィールド3つだけのuserlist.csvファイルを作成して、実行させて完了。 と思いきや、 エラーを吐いて、うまく登録できていないユーザがちらほら…。 原因は、パスワードの複雑さが足りないことらしい。 パスワード自動