投稿

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバは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の反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

ubuntu serverにssh

VPSの設定を開始 さてVPSが動作するのは分かったし、標準以外のOSも利用できるのも確認できたので、本番環境を少しずつ構築することに。 作業内容を忘れると面倒なので、作業しながら記録しておくことにする。 まずは、Ubuntu Server 12.04 LTS 64bit版をインストール。 普通serverは言語を英語で入れるのだけれど、これだけ簡単なら試しに日本語もいけるかもと思いテストしてみる。 もちろん、ubuntuが日本語を選択できなければ不可能だけれども…。選べるようだ。 ディスクも分割して使用する意味は、今のところないので、100GBまとめて利用することにして、インストール設定する。 昨日と同様のペースで進んでいく。 VNCなので(しかもブラウザ上)ちょっと表示がもたつく感じがするものの、特に問題なく終了。 光学メディアのイメージを強制排出して、再起動する。 sshのインストール $ sudo apt-get install openssh-server 実際は、これだけなんだけどね。 この時点で、パスワード認証での接続が可能になるので、確認のため接続してみる。 このままでは、アタックされ放題なので…。きちんと設定しておこう。 そのためにはsshの設定ファイルを編集する必要がある。使い慣れたエディタjedもついでに入れておく。 $ sudo apt-get install jed 準備は整ったので、設置ファイルを書き換える。 まずは、rootでのログインは無効にしておきたい。 $ sudo jed /etc/ssh/sshd_config PermitRootLogin no 保存したら、sshdの再起動。 $ sudo service ssh restart 設定ファイルを書き換えたら、これを忘れないように…。と自分に言い聞かせるw 鍵の生成作業 鍵を使った認証をするために、クライアントマシン上で鍵を生成する。 $ ssh-keygen -t rsa 好きなパスフレーズを入力。再入力も通ればファイルが生成される。 秘密鍵id_rsaと公開鍵id_rsa.pubだ。公開鍵はサーバ上に持っていく。 $ scp .

ドメイン取得&VPS

イメージ
随分前から考えていたが・・・ 最近の値段は驚くほど安くなっているのと、たまたまテスト的に使用したい案件が発生したので、サクッと契約してみた。 どこでも良かったのだが、VPSを借りようと思っていたので、料金の比較的安いプランのある「 お名前.comのVPS 」でいくことにする。年間9,999円という安さ。 ここを選択したのは、価格だけでなく、OSのイメージが選択できることだ。いつも使っているUbuntuが選択肢にあるのはありがたい。 ローカルの作業と同じように使え、こちらでテストすることもできるので気楽に使える。 ついでに、お名前.comでドメインも取得することに。 .infoが維持費込みで考えても、かなり安いのでこれでいくことに。 初年度280円で更新費用が920円。とりあえず使うには充分な価格。 希望のドメインもサックリ取れそうだ。 Whois情報公開代行も無料なので申し込んでおく。 ここまで、およそ10分。カード情報を入れて承認されると、すぐにメールが届く。 契約完了。 続けてVPSにとりかかる。 同様にフォームを進めていくと、電話で認証するとな。 15日間の無料トライアルのためには、必要な手続きだってさ。 メールが届き、リンクを踏む。 登録した番号に電話がかかってくる。画面に表示されるコードを入力。 これでOK。今日は電話の近くで作業していて良かった。 すると、画面表示が完了に。 ここまで計15分。 なんと、お名前.comのユーザ登録に時間がかかっただけで、正味10分もかからない。 これで、レンタルサーバが可能になるとは…。 起動してみる すべてブラウザから操作ができるようになっている。 デフォルトのCentOSを入れて起動するだけなら、2分程度で終了。 今回はUbuntu12.04LTSを使うことにする。64bitか32bitか迷うところだけど…。1回めはテストで入れるだけなので、32bitを選択。 Guideに従って英語バージョンでインストール。 このGuideは結構丁寧に作られている。文章は少ないけれどキャプチャ画面が多用されていて、まぁ分かりやすい方かな。 この作業には多少時間がかかった。それでも全部で約20分。 特にjp.archive.ubuntu.comか

さくらサーバでLynxが…

イメージ
自動化するのにPerlを検討 ある案件で、あるサイトのフォームへ手入力しているものを、自動化するという処理を構築することに。 当初、メールでデータを流しこみ、Perlで解析し、POSTする方法を検討。 ところが、何度もページを遷移したあとで入力フォームにたどり着くのだけれど、SSLなページが、LWPではどうも上手くいかない。 まあWebブラウザを作るのと同じような内容になってしまうので、面倒すぎる。 どうもHiddenでデータ渡しているし、セッションを使っているのでCookieまわりの処理とかがダメっぽい。ひょっとするとReferer等も見ている感じ ふ〜む、そうだ! WWW::Mechanizeを使おうと考えた。データを作るのに手入力はやっていられないので、HTTP::RecorderでProxyさせて、記録することに。 でもSSL通すと記録してくれない…。 はぁ…。 テキストブラウザLynxが使えないレベル ならば、いっその事テキストブラウザを制御する方向で検討。 メールで受けて、解析し、テキストブラウザをスクリプトで動作させる。 スクリプトには解析した内容から、フォームに入力させるようにPerlで生成する。 よし。これならOKそう。 まずは手元のUbuntu上で簡単な動作確認を行う。 Lynxには、マニュアルに載っていないコマンドラインオプションがあって、 $ lynx -cmd_log ファイル名 とすると、操作を記録してくれる。 この記録されたファイルを編集してやれば思い通りに動かせるはず。 実行するには、 $ lynx -cmd_script ファイル名 でOKだ。 実際には、 lynx -cmd_script log.txt -accept_all_cookies URL なんて指示してやる。 どうやら、日本語もちょっとうまく処理してやるとフォームに流し込めることが判明。 SSLもモジュールさえ入っていれば動作するのを確認。 本番環境の調査 お客さんの借りているのが「さくらのレンタルサーバ スタンダード」。契約内容からSSHがOK。Lynxも入っている。PerlもOK。 ここまでは、事前の調査で分かっているので、最

planex GW-USMicro300 をUbuntu12.04で動作させる

イメージ
廃棄用のPCを再生していて Windows Vistaが入っていたノートPC(VersaPro)のメディアはないし、システムが壊れてしまい復旧ができなくなったということで、廃棄を依頼された。 スペックはなかなか良い(Core2Duo 2GHz+2GBメモリ)ので、ディスクが物理的に逝っていなければ何とかなると思い、Ubuntuを入れてみることに。 とりあえず、CDトレイが排出されないので、クリップを使って強制排出。 CDブートができれば、何とかなる…。 とりあえず、CDからの起動はOKだった。 ところが、無線LANは搭載していない。有線LANを接続するがコネクタが壊れているらしくLINKしない。とほほ。 USBも1つは物理的に逝っている。 仕方なく、ネットワーク接続は後ほどすることで、まずはインストール実行。 マシンが速いのとメモリが多いおかげか、予想以上に速く完了。 相変わらずCDは強制排出して、再起動。 無事Ubuntu12.04が起動した。しめしめ…。 念のためDiskをチェックし異常がないのを確認する。 さてネットワークをどうするか…  手元にあるiPhoneを接続し、使えるUSB端子を確認する。 インターネット共有をONにすると、無事ネットワークに接続できるところまで確認。 しかし、テザリングで400MB強のデータを落とす気にはならないので、思案どころ。 そういえば、ずいぶん前に入手したUSB LANアダプタが転がっているはず。 PLANEX の GW-USMicro300 があった。 USB端子に挿してみるが反応なし。 ググってみる。 「GW-USMicro300がZorin OS 6.1 lite(Ubuntu 12.04)で使えるようになった」 なんてのを見つけた。 ピンポイントで有用な情報だ。 /etc/modulesに rt2800usb 次に、/etc/modprobe.d/usmicron.confを新規に作成する。 install rt2800usb /sbin/modprobe --ignore-install rt2800usb; /bin/echo "2019 ab29" > /sys/bus/usb/drivers/r

Crypt::SSLeayが入らない

Perlでの作業中 ちょっとスクリプトからWebページをゲロってこようと思い、LWP::UserAgentなどを使って、取得していた。 ちょっとhttpsあたりも必要に迫られ、getしようとしたらエラーを吐いてくる。 ふむふむ。 ぐぐってみると、Crypt::SSLeayを入れろとな。 ちうことで、 $ sudo perl -MCPAN -e shell で、CPANから入れることに。 cpan[1]> install Crypt::SSLeay 通常は、これでOKなはずなのに…。エラー吐いてくれます。 でもなぁ、CPANから自動で入れているのにmakeで転けられても…。 でも、昔の出来事を思い出してテストして見ることに。 「接続を拒否されました」というメッセージが気になる。 Linuxの初期に良くあったのだけれど、これってLANG=Cでないと動かないんじゃ? ちゅうことで、再度やり直してみる。 英語モードで再度実行! 一旦、抜けてcpanの起動から。 $ LANG=C sudo perl -MCPAN -e shell 表示はもともと英語だし、何も問題ないはず。 同様に、Crypt::SSLeayを入れてみる。 全てのテストに合格して、無事インストール完了!! やはりな!って感じです。 はっ!! インストールが目的ではなかった…。 さて、SSLが使えるようになっているはずなので、テストする。 500 Can't verify SSL peers without knowning which Certificate Authorities to trust orz... SSL証明書と一致しないらしい…。 もうひと踏ん張り。 SSL 証明書のエラー時の対応  どうやら、良く発生するようで…。あちこちに対応策が書かれていた。 [Perl] LWP::UserAgent で SSL 証明書のエラーへの対応 の記述がわかり易かった。 ホスト名の検証をしない CAを明示する いやいや、1はまずいんでは?という思うので、2の方針で。 Mozilla::CAを入れれば良さそう。 さっそく、cpanでMozilla::CAをイン

iTerm2がUpdate

イメージ
Macのコンソール Macでもプログラミングやらシェル操作を多用している。 以前は、ターミナルを使っていたのだけれど、結構早い段階でiTerm2に切り替えて運用している。 特別ターミナルに比べて、いいなぁと思うシーンは多くはないけれど、標準的な機能は全て網羅していて、使い勝手は悪くない。 まあオートコンプリートなんかはよく利用するが、BASHのサーチでもできなくはないので、少し便利?という程度かな。 そうそう、透過表示にしているので、背景のEditorを見ながら操作したりはよくあるかなw 今朝、起動してみるとUndateがあるのでインストールするか?と聞かれ、当然OKを。 しばらくして、Relunchするか?と言われたので、OKで再起動させると…。 エラーを吐いて、起動しない…。 何が起きたんだ? まあ、最悪ターミナルが起動するので、問題がないといえば無いのだが…。これまで愛用しているだけに変わってほしくはない。 久しぶりに 本家のサイト に。 ダウンロードのページにいくと、iTerm2_v1_0_0.zipという。あれ?今までよりダウングレードになってしまう…。 これまでは、iTerm2-1_0_0_20111020.zipを使っていたのだけれど、まあ後でUpdateするからよしとして、入れなおすことに。 解凍してアプリケーションフォルダに突っ込む。置換するか?と聞かれるので、置換!。 起動して、「Check for Update...」を実行すると、当然新しいバージョンがあると言われるので、Installする。 再起動すると、1.0.0.20130622にUpしていた。 う〜む、何が起きていたのか少々不明なとことがあるけれど、結果的にはUpdateが完了したのでOKということにしましょうwww ここまで、書いてふと思ったのは、WindowsでもMacでもコンソールを利用する人って、どれくらいいるのだろう? 以前、専門学校で学生に聞いた時には、30人中1人程度だったのを思い出した。 まあ、その程度でも多いほうかもしれないな〜。

PerlでMIME処理

イメージ
いろいろとCPANで遊んでいて PerlでMIMEの処理をさせようと、モジュールをインストールして試してみる。 今まで、自前処理で行うことが多かったので、勉強がてら検索&TRY。 メール解析には「MIME::Parser」が便利そう。 ということで、入れてみる。 $ sudo perl -MCPAN -e shell cpan[1]> install MIME::Parser たったこれだけで、入るんだから楽なもんだ。 my $parse=MIME::Parser->new(); my $message = $parse->parse(*STDIN); my $head = $message->head();  なんて処理を書いて、マルチパートなデータを食わせて、いろいろとテストしていたら、読み込んだメールデータをパースするたびに、ファイルを生成してくれる…。 txtとhtmlがわさわさと増えているじゃないか…。 つうことで、何かオプションが有るはずと思いつつ、探してみる。 「 MIME::Parser インスタンス設定 output_to_core 」なんて記録を見つけた。 1をセットすると、parseデータをメモリ上に保持する。デフォルトでは解析結果のうちbody部(本文やマルチパートの添付ファイル)は即時ディスクに書き出し。 (perldoc では、巨大ファイルが添付された場合などでちょっとriskyとさ) ということらしいので、セットしてテストしてみる。 $parse->output_to_core(1); $parse->tmp_to_core(1); $parse->tmp_recycling(1); $parse->use_inner_files(1); こんな感じで、書いておけば、オンメモリで作業してくれるらしい。 昔、メモリが少ない時の実装なんだろうな…なんて思いながら、現在の大量にメモリが使える時代に感謝!! で、output_to_core(1)をセットして、テストすると作業ファイル等全く作らなくなった。 まあ、どでかいメールを食わせる予定はないので、メモリで処理してくれた方がありがたい。ファイルがディスクを食いつぶ