More from: linux

CF-SZ5が届いた

ヤフオクでPanasonicのモバイルノートPC「CF-SZ5」を落札した。
この機種は液晶サイズが12.1インチのモバイルPCなのに、ディスプレイの解像度がWUXGA(1920×1200)と広いのが特徴。
今この記事を書いているThinkPad X1 CarbonやThinkPad X280のフルHD(1920×1080)よりも縦に120ドットも広いことになる。
ブラウジングやエクセルでの作業時に縦が長いとスクロールの頻度が減るので使いやすい(自宅のメイン機のディスプレイも縦1200ドット)。
落札した機体にWindowsは入っておらず、メモリも4GB(増設不可)なのでWindows10/11を新規にインストールする気にはなれず、軽めのLinuxを入れて遊ぼうかと思って落札した。
今日になって届いたので早速付属してきたACアダプタ(これが付いていたのも落札した理由の一つ)を電源に繋いでみるとバッテリーの充電インジケーターが点灯。
安心して電源SWを右に押すと・・・電源が入らないorz
ジャンク扱いで出品されていた物で保証は全く無いというのを承知で落札したんだけどBIOSまでは確認済みとなっていたので使えると思ったんだけどなぁ・・・
とがっかりしていながらも何度かSWをON側にスライドしているとなんとか電源は入りBIOSの設定画面に入ることが出来て一安心。
さてさて、手元にあるNNLinuxかPuppyLinuxのインストール用MicroSDHCを使ってインストールしようかな。

←クリックしてくれると嬉しいです。

”ftp”が無い・・・

仕事場の古いサーバーの一部が動かなくなり用意されていた新しいサーバーに機能を移したのが先月のこと。
OS(Linux)のディストリビューションが大幅に変更され、それまで使っていたftpコマンドが使えなくなっていた。
当初はそれでも運用していたのだけど、ユーザーから「他所から定期的に受信していたファイルが来なくなった」との連絡を受けた。
そう言えば壊れたサーバーの一つが特定のftpサーバーからcrontabでファイルをgetしていたのだった。
その自動受信用のスクリプトが失われたので一から作り直す必要があった。
そんなに難しいスクリプトでは無いので、ftpサーバーのログイン情報を貰って先ずはftpコマンドでログイン・・・と思ったらftpコマンドが無いorz。
セキュリティの関係でftpクライアントがインストールされておらず、使えるのはsftpのみ(汗)。
これでも自動化は出来るだろうと思っていたが、なかなかうまくいかない。
理由はログインの自動化がどうしても出来なかったため。
sshpass
とかを使ってもうまくログインできずファイルのgetが出来ない。
結局のところsftpでの運用は諦めてlftpをインストールして運用することにした。

#yum install lftp

でインストールし、簡単なスクリプトを書いて試験をしたところ無事に目的の動作をさせることが出来た。
lftpでログインからファイル転送・ログアウトまでを自動で行うには下記のように書けば出来た。

#lftp << EOF >open -u ”ユーザー名”,”パスワード” ftpサーバー名
>”実際に行ないたい動作を示すコマンド”例:cdやget/put等
>bye
>EOF

もしくは上のopen以降byeまでをファイルに書き、
#lftp -f ”ファイル名”
でも可能。

bash下で実行させるには実行スクリプトとして
#!/bin/bash
/usr/bin/lftp << EOF open -u ”ユーザー名”,”パスワード” ftpサーバー名 ”実際に行ないたい動作を示すコマンド”例:cdやget等 bye EOF もしくは #!/bin/bash /usr/bin/lftp -f ”ファイル名” としてcrontabに登録すれば指定した時刻もしくは時間間隔での自動実行が可能となる。 ただし!どちらもサーバーへのログイン情報をプレインテキストで書くので、ファイルのアクセス権をしっかり設定しないとセキュリティ的に問題が出てくるので注意! 出来ればスクリプトの所有者をrootにしてファイルパーミッションを700にしておくのが良いかと。 さらにスクリプト名の先頭を.(ドット)にして隠しファイルにするという手もあるな。

←クリックしてくれると嬉しいです。

apacheでシンボリックリンクが見えない場合の対処

仕事場のサーバーの一部が動かなくなったorz。
古い仮想化基盤のサーバーがHDDの不調のためかまともに動作しなくなってしまい、その上で動かしていた複数台のサーバーがどうにも動かなくなってしまった。
仕方が無いので新しい仮想化基盤に用意してあった同機能のサーバーに機能を移してサービスを再開したが、細かいトラブルがいくつか発生。
その中の一つにhttpdアクセスが出来ないというのがあった。
元々、ごく一部のユーザー向けにいくつかのディレクトリをブラウザで参照可能にするためにhttpdサーバー(apache)を動作させていたんだけど、ユーザーの指摘でそのことに気付くという体たらく(汗)。
最初に気付いたユーザー向けのサービスはhttd.confを弄ってDocmentRootを変更するだけで参照可能になったが、別のユーザーから指摘されたディレクトリにアクセスすると403エラー(Forbidden)で参照できない。
ファイルやディレクトリのパーミッションを見ても644(ディレクトリは755)で参照可能なはずなんだけど、何故か403になる。
問題のディレクトリはシンボリックリンクなので、リンク先のディレクトリも確認したがパーミッションの設定に問題は無い。
そこで調べてみると、apacheはデフォルトでシンボリックリンクの参照が可能なのは所有者ユーザーのみで他のユーザーがアクセスすると403になるらしい。
これを回避するにはhttpd.confで
Options Indexes SymLinksIfOwnerMatch
となっているのを
Options Indexes FollowSymLinks
に変更すると良いとのことだったので、問題のディレクトリのその部分を修正してhttpdをリスタートすると無事に参照可能になった。
ところが、問題はこれだけではなく、ディレクトリ名やファイル名に日本語(2byteコード)が使われており、そのままでは文字化けして読めない。
これは旧サーバーではEUCだったのが新サーバーではutf-8が標準のためデフォルトの設定ではヘッダーが、
Content-Type: text/html; charset=utf-8
となりブラウザ側はEUCの文字コードをutf-8として解釈しようとしたため。
これを直すにはhttpd.confの
IndexOptions charset=utf-8

IndexOptions charset=euc_JP
とすることで無事に日本語の文字が表示されるようになった。

←クリックしてくれると嬉しいです。

なんとかなった・・・かな?

Gmail宛にメールが送れなくなっていた件はサーバーを弄ってDKIM対応にしたところなんとか解決した・・・と思われる。
設定作業自体は難しいものではないんだけど、なにせ初めてだったので設定ファイルの弄り方が良く判らず、いろんなサイトを参考にしながら作業した。
途中で参考にしたサイトの設定ファイルの内容が正しく無かったり、他人がやってくれた部分に修正ミスがあったりで手間取りはしたが、なんとかGmail側に弾かれずにメールが届くようになったと思われる。
少なくとも自分の持っているGmailのアドレス宛に送ったメールのヘッダーを見る限りSPF認証もDKIMも”PASS”となっているので大丈夫かな。
一番困っていたユーザーさんも無事にメールを送ることが出来た(maillogでもstatusが”sent”になった)ので、これで安心して明日は休めそうだ(汗)。

←クリックしてくれると嬉しいです。

ThinkPad X40にLinuxを入れてみた

先日注文した1.8インチHDDが届いているので、動作確認を含めてThinkPad X40(2371-A6J、以降X40と表記)にLinuxをインストールしてみた。
先ずは軽量ディストリビューションということでPuppy Linuxを入れてみようとhttp://openlab.jp/puppylinux/download/puppy-4.3.1JP2012/からpup_431JP2012.isoをダウンロード。
起動用のUSBメモリはUSBカードリーダーに4GBのmicroSDHCカードを入れて使った。
unetbootin-windows-702.exeもダウンロードしてこれを使ってmicroSDHCカードに先のイメージファイルを書き込んだ後にX40のUSBポートに挿して電源を入れてF12を押して起動デバイスとして指定したところ無事にライブ版が起動した。
デスクトップも表示されたのでHDDにインストールをしようとしたが、インストール先にHDDが出て来ない(汗)。
仕方が無いので諦めてNNLinuxのBeta10を入れようとしたらこちらはCPUがPAEに非対応ということで止まってしまうので、起動時のオプション表示時にtabキーを押して起動オプションの最後に”forcepae”を追加して起動した。
そのままにしておくとデスクトップが表示されたのでHDDにインストールしたが、こちらは無線LAN(内蔵が無いのでPCMCIAカードタイプのもの)インターフェースのドライバが無いのか無線LANが使えない(汗)。
USBタイプのものに替えてみると認識はするがセキュリティキーを何度入れてもアクセスポイントに接続できないorz。
そこで再度Puppy Linuxで起動し直したところインストール先にHDDを選ぶことが出来るようになっていたのでインストールした。
インストール終了後に無線LAN(PCMCIAカードタイプ)の設定も出来て無事にネットワークに接続できた。
WEBブラウザで当ブログの表示も出来るようになったけど、httpsに対応していないとのメッセージが多数出て使い難い(汗)。
ブラウザを新しくしたくてもパッケージマネージャが古いためか最新バージョンが見つからず、リポジトリにある古いバージョンもサーバーにディレクトリが無いということでダウンロード出来ない。
この辺りはおいおい調べてみて解決できればX40が復活ということになりそうだな。
60GBのHDDも動作音こそ大きいけど無事に使えて良かったよ。

←クリックしてくれると嬉しいです。

HDDが届いた

先だって楽天市場で見つけた1.8インチHDDが昨日届いた。
早速ThinkPad X40に取り付けて見たところ無事に認識され、シッピング音も聞こえるのでちゃんと動作しそうで一安心。
前の20GBのHDDの中身をそのまま移してWindowsXPで使う気にもなれないので、軽量のLinuxでも入れようかと思ってNNLinuxのBETA10を入れようとしたが4GBのSDHCカードをSDカードスロットに入れても起動できず、USB接続のカードリーダーに入れてUSBポートから起動しなくてならなかった。
それでもカーネル起動時にエラーが出てインストール出来なかったorz。
カーネルオプションを指定しなければならないようなので、別のディストリビューションを探して入れようかな(Vineの古いのなら軽そう)。

←クリックしてくれると嬉しいです。

サーバーが壊れた?

遠隔地の現場からlinuxサーバーに上がる筈のファイルが上がってこないとの連絡が来た。
ファイルをアップロードする機器側を見るとファイルの転送に失敗している。
クライアントPCでそのフォルダにファイルやフォルダを作ろうとすると権限がないと言われて作れなくなっている。
一昨日までは出来ていたとのことなのでサーバーにトラブルが発生している模様。
もしかしたらディスクが溢れたのかと思ってdfコマンドで確認するもまだ余裕があるので、容量の問題では無さそう。
それならi-node数絡みかとも思ったが、それほど多くのファイルがあるというわけでも無かった。
調べている内に問題のフォルダのあるパーティションが読み込み専用でマウントされている。
何故そうなったのかの原因を探るより使えるようにするのが先決なので、読み書き可能にするためにremountしようとしたが、どうやっても読み込み専用でしかmounto出来ないorz。
一度リブートしてmountコマンドで見ると(rw)となっているんだけど、/proc/mountsの内容は(ro)となっている。
仕方が無いのでumountしてfsckを走らせようとしたがファイルシステムが使用中ということでumountも出来ない。
それならば/etc/fstabを書き換えてブート時に自動でマウントしないようにしてリブートし、fsckを走らせてからfstabを元に戻して手動でmountしようとしたらコマンド入力に対する応答が来なくなってしまったorz。
pingには応答するものの、sshに対する応答が無くなったのでサーバーが止まってしまったらしいorz。
とにかくファイルをアップロードできるようにするのが最優先なので、現場からアクセスできる他のサーバーに場所を作って機器側に設定を追加してファイルをアップロードできるようにして取り敢えずは復旧した形にはなった(汗)。
サーバー本体はじっくりと調べないとなぁ・・・
#それとも古いサーバーだからデータだけサルベージして他のサーバーに持って行こうかな?

←クリックしてくれると嬉しいです。

原因判明

昨日の記事に書いたpostfixでの配送が完了せず/var/spool/mailの下に配信されてしまった原因が判明した。
あらためてログを見直すとpop3の箇所に
”failed: No space left on device”
の文字列がorz。
つまり配信先ユーザーのhomeディレクトリに空きが無くて配信できずに止まってしまったわけだ。
その後に別の作業の結果ディスクに空きが出来たのでそれ以降のメールは問題無く配信されていたということらしい。
恒常的にメールの配信が漏れるわけでは無いということが判明したのは良かったが、ディスクスペースが足りないのはどうやって回避しようかな?(汗)

←クリックしてくれると嬉しいです。

メールの配送漏れ?

ユーザーから昨日届くはずのメールが届いていないとの連絡があった。
なんでも特定の時間帯のメールが少なくて、ちょうどその時間帯に送られたメールがあるけどPCで受信できないとのこと。
”そんな筈は・・・”と思ってサーバーのログを見ると届いていない筈のメール(送信元のアドレス等で判断)は配信されたことになっている。
/var/spool/mail下にあるスプールを見てもちゃんと入っている(後で気付いたがこの時点で勘違いしていた)。
そこで自分のPCで同じアカウントを設定して受信させてみると受信できない(ユーザー側は一定期間サーバーに残す設定にしてあるので私のところでも受信できる筈)。
スプールにあるのに受信できない原因を探している途中で気付いたが、このサーバーはpostfixでmaildir形式で構築してあり、先のスプールファイルには配信されずユーザー毎のディレクトリ(~/Maildir下)に配信される筈だった(汗)。
とにかく受信できないメールをなんとか受信出来るようにするのが先決なので色々調べてformailコマンドで配信することにして実行したところ、今度は
: mail forwarding loop for hoge@hogehoge.dom
というエラーメールがrootに送られてくるだけで配送されない。
ループになるような原因としてはaliases以外に考えられなかったので/etc/alisesファイルを何度も修正し、最後には転送設定を削除までしたが結果は変化しないorz。
となると転送設定の問題では無いだろうということでエラーメッセージでググるとヒントが見つかった。
それは送られてきたメールヘッダーの
Delivered-To:
に受信者と同じメールアドレスの記述があるとMTA(postfix)がメールループだと判断してしまうということらしい。
なぜDelivered-To:に同じアドレスが入っているかを調べる時間が勿体ないので、とにかくスプールファイルを直接(もちろんバックアップを取ったうえで)編集し、Delivered-To:に書かれているアドレスを若干変更して保存。
そうした後にformailコマンド
# formail -s sendmail -v -t -oiee < ./hoge を実行したところ無事にmboxに配信された。 あとは特定の時間帯にだけこの現象が起きた原因を探らなければ(汗)。

←クリックしてくれると嬉しいです。

postfixのリレー設定(メモ)

別部署で運用管理しているメールサーバーについての問い合わせがあったのでメモ。

そのメールサーバーを使ってプログラムでメールを送信すると一部のアドレスに届かないとのことで管理者から相談を受けた。
#自分で管理しているんだから自分で解決するように言いたかったけどね(汗)。
送信時のログを見ると線だって運用を停止したsmtpサーバーに接続しようとしてコネクションタイムアウトを起こしている(ここまでは管理者が自分で辿りついた)。
最初は名前解決に問題があるのかと思って、nslookupでset type = mxでmxレコードのIPアドレスを引いてみたら正しいIPアドレスが引けたので、DNS絡みの問題では無いことが判明。
そうなるとMTAとして使っているpostfixの設定の問題と思われ、もしかしたらリレーサーバーの設定かも?ということになった。
/etc/postfix/transportファイルを見ると、特定のドメインに対してのみ固定のsmtpサーバーに接続するように設定されていて、それがまさに運用を停止したサーバーだった。
なので、その部分をコメントアウトして保存してから
#postmap hash:/etc/postfix/transport
でデータベースを更新したらきちんと送信されるようになった。

忘れたら困るのでここにメモしておこう。

←クリックしてくれると嬉しいです。