More from: linux

一応対策は講じてみた

先日のdovecotの自殺騒動。
毎週日曜の早朝にntpdが時刻を調整するとdovecotが自殺してしまうので、dovecotの生存確認をして、もし落ちていたら起動するスクリプトを書いた。
後はlogを見て落ちる時刻を調べ、その数分後にスクリプトを動かすようにcrontabを設定。
念のため時間を空けて2回スクリプトを動作させるようにしたので、これで大丈夫だとは思うんだけどなぁ。
スクリプトの動作自体は確認したけど、動作させるタイミングが問題だな(汗)。

人気ブログランキングへ←クリックしてくれると嬉しいです。

dovecotの自殺・・・

先週に引き続き昨日もpop3デーモン(dovecot)が死んでいた。
maillogには
”Time just moved backwards by xx seconds. This might cause a lot of problems, so I’ll just kill myself now.”
というのが残っていて、時刻が巻き戻ったために自殺したとのこと。
たしかにntpdで時刻合わせをやっているけど、こんなことで一々死なれていては実運用上困ってしまう。
時刻が巻き戻るとトラブルの元になるのは解からないでも無いけどさぁ・・・
解決策としてはntpdで時刻を一気に合わせるのではなく、徐々に合わせるようにするか、時刻が巻き戻った後で生死を確認してdovecotを再起動するスクリプトを組むかのどちらか。
時刻が巻き戻るのは今のところ日曜日の早朝で、アクセスしてくる人が殆どいない時間帯だから、この時間帯に再起動のスクリプトを動かせば良さそうだな。

それにしても昨年までは時刻が大きく(20-30秒も)巻き戻ることは無かったんだけど、年明けから急に巻き戻るようになったのは何故だろう???

人気ブログランキングへ←クリックしてくれると嬉しいです。

パーミッションを忘れてた(汗)

Mailサーバーの設定をしていて、あるサーバーから別のサーバーに転送設定が必要になった。
単純に対象アカウントの.forwardファイルに転送先を設定すれば良いので、その記述をしてテストメールを送ってみた。
ところが何故か転送されなくて少々悩んだが、たしかこのファイルはパーミッションの設定が適切でないと有効にならないことを思い出した。
パーミッションを見てみると-rw-r–r–(644)になっていたので、これを-rw——-(600)に変更。
再度テストメールを送ると無事に転送された。
たまにやると忘れているので備忘録として残しておこう(汗)。

人気ブログランキングへ←クリックしてくれると嬉しいです。

ディスクフル?

ユーザーから「FAXがPCに入らず、紙で出てくる」という連絡が来た。
原因を調べるとFAXがデータを送るファイルサーバのディスクが満杯になっていたorz。
このディスク(というかパーティション)は500GBほど用意しておいたんだけど、FAXデータだけでなく他のパーティションに置いているユーザーディレクトリの共用のゴミ箱(.recycle)も置いてある。
このゴミ箱の中が整理されておらず、中には2年以上前に削除されたデータが残っていたりした。
このsamba用のゴミ箱を用意したのは私なんだけど、当初はディスクにかなり余裕があったので気にしていなかった(汗)。
取り敢えず古いファイルを30GBほど消して空き容量を確保したけど、このままではまた同じことが起きるのでゴミ箱の中の古いファイルを消すスクリプトを書いてcrontabに仕込んだ。
find ”ゴミ箱のあるディレクトリ” -mtime +730 -exec rm -v {} \;
深夜に動作するようにしたので、明日になったら空きが増えている筈なので確認しないとな。

人気ブログランキングへ←クリックしてくれると嬉しいです。

”/”デバイスを大きく出来ないかなぁ?

職場の古いサーバーのディスク容量を増やしたい・・・
しかもルートデバイスにあるディレクトリの容量を増やしたい。
他のデバイスだったら新規デバイスを作成してマウントし、そこにファイルをまるまるコピーしてからマウントし直せばなんとかなるけど、ルートデバイスではそうは行かないんだろうなぁ、、、
さて、どうやって拡張しようか。。。

人気ブログランキングへ←クリックしてくれると嬉しいです。

sendmailが止まってた?

仕事場に着いたら
「メールの送信が出来ない」
との連絡があった。
調べてみると職場内のメール配送を行っているサーバーが他のホストからの接続を拒否していたらしい(サーバー内の配送は出来ていた)。
良く解らないけど、こんな時は配送システム(ウチの場合はsendmail)を再起動。
すると直後からPCからの送信要求が来て無事に配信されたので動作確認が出来た。
他のサーバーも
#sendmail -bp
で確認すると夜の間にキューが溜まっていたので
#sendmail -q
で強制的に配送させて一応対応終了。
今回、配送をさぼっていたサーバーはたまにこのようなことがあるので、crontabかなにかで年に一回くらい強制的にsendmailの再起動をさせたほうが良いかも?

人気ブログランキングへ←クリックしてくれると嬉しいです。

複数ファイル内の特定文字列の一括変換

Linuxで稼働させているサーバに置いてある特定のファイル群の内容を一部書き換える必要が生じた。
書き換える内容は特定の文字列を別の文字列に変換するだけなんだけど、なにせ書き換えが必要なファイルが数百個もある。
手作業で編集するには多すぎるので、なんか自動で出来ないかな?と思い調べてみると同じことを考える人はいるもので、ヒントどころか回答そのものがすぐに見つかった。
手順は一行のコマンド(実際にはパイプで接続した二つのコマンド)で非常に単純。
$grep -l ‘置換対象の文字列’ 置換対象のファイル群 | xargs sed -i.bak -e ‘s/置換対象の文字列/置換後の文字列/g’
要は書き換えが必要なファイルをgrepで探し出し、それをパイプでsedに渡すんだけど、その際にファイル名をパラメータで渡すためにxargsコマンドを使用している。
実際にやってみるとあっというまに数百個のファイルの編集が完了、いやぁ助かったなぁ(汗)。

人気ブログランキングへ←クリックしてくれると嬉しいです。

cronファイルの場所

linuxサーバのユーザーの移行に伴って、各ユーザーのcrontabの内容を確認する必要があった。
一人や二人ならそのユーザーでログインするか、スーパーユーザーでcrontab ユーザー名 -eで確認するんだけど、数十人分なのでちょっと面倒。
なので各ユーザーのcrontabの内容がどこにあるかをググって見たらすぐに見つかった。
/var/spoo/cron
というディレクトリにユーザー名のファイルがあって、その中身がcrontab -eで編集しているファイルそのもの。
所有権を見ると600だけど、スーパーユーザーならcatコマンドで中身を見ることは可能。
あー、これで楽になったなぁ。

人気ブログランキングへ←クリックしてくれると嬉しいです。

サーバ間のメール転送が上手くいかない・・・

メールサーバの移行に伴い、新旧サーバ間でのメールの転送が必要になった。
具体的には新サーバの特定ユーザー宛のメールを旧サーバに転送することになる。
そこで該当ユーザーの”.forward”ファイルに転送先の旧サーバのアドレスを書いたのだけど、
「sendmail deferred connection refused by XXX」(XXXは送信先、要は旧サーバ名)
のエラーとなり送信出来ない。
それもその筈、旧サーバは当初外部からのsmtp接続を受け付ける必要が無かったので、”sendmail.cf”の
「O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA」
という項目がデフォルトのままだったために、外部からのsmtp接続を拒否していた。
ここにもう一行
「O DaemonPortOptions=Port=smtp,Addr=aaa.bbb.ccc.ddd, Name=MTA」(aaa.bbb.ccc.dddは自サーバの実際のIPアドレス)
という行を追加し、sendmailを再起動することで回避出来た。
ところがその後も新サーバ側からメールを送ると、
”553 5.3.5 system config error”
とか
”553 5.3.5 xxx.yyy.zzz. config error: mail loops back to me (MX problem?)”
というエラーが出てやはり送信出来ない(汗)。
これらのエラーは”/etc/mail/local-host-names”ファイルに関係する全てのサーバ名(ホスト名、ホスト名+ドメイン名)を追加で記述しsendmailを再起動することで解消出来た。
また
”Relaying denied”
も出ていたので、これは”/etc/mail/access”ファイルにリレーを受け付けるホスト(要は新サーバ)のIPアドレス+”RELAY”を記述し、makeし直すことで解決した。

上記の設定変更でようやく新サーバから旧サーバへのメールの転送が可能になったので、ようやく落ち着いたよ(汗)。

人気ブログランキングへ←クリックしてくれると嬉しいです。

telnetで接続できなくなった(汗)

職場のメール受信用サーバが最近調子が悪いので新たに構築したサーバに移行中。
ところが移行作業二日目の朝になるとPCからtelnetでサーバに接続しようとすると、
「getaddrinfo: localhost Name or service not known Connection closed by foreign host.」
というエラーメッセージが出て接続できなくなってしまった。
早速このエラーメッセージでググって見ると、どうも/etc/hostsファイルの記述(だけでは無いらしいが)に問題があるようだ。
そこを修正すればOKらしいんだけど、作業をするにはコンソールからログインしなければならない。
サーバを設置してある部屋に行って/etc/hostsファイルを見ると、/etc/sysconfig/networkファイルに書いてあるホスト名と異なっていた(汗)。
さっそく/etc/hostsファイル内のホスト名を書き直すとtelnetでの接続が復活した。
うーん、前日の作業で修正を間違っていたのかなぁ???

人気ブログランキングへ←クリックしてくれると嬉しいです。