メールの配送が止まってると思ったら
何気に自宅サーバにてメールが流れていないことが判明。 メールキューをみたら、nagiosなどのメールが溜まっている。
設定を確認していたら、DNSが動いていない。でもnslookupは動くぞ…。 よくよく確認すると、/etc/resolv.conf が空っぽ。 以前にも同様のトラブルがあったけど、NetworkManager がresolv.confを 編集しているのが原因。
以前の場合には、"aptitude remove network-manager" で消したけど、 最近は、依存しているパッケージが多く、消すに消せない。
そこで、改めて NetworkManager を調べると、"dns=none"という 設定があるみたい。
(( /etc/NetworkManager/NetworkManager.conf )) [main] + dns=none plugins=ifupdown,keyfile [ifupdown] managed=false
(追記)resolv.confの書き換えチェック
別トラブルでサーバの再起動がかかったら、Proxyサーバの動きが変。 原因を確認したら、今度は resolvconfパッケージが、これまたresolv.confを触っていて、 サーバの内向けDNSを、ルータDNSに勝手に書き換えている。 ということで、"aptitude remove resolvconf"してから、改めて /etc/resolv.conf を手作業で編集。 こいつは、サーバ機なんだから、resolv.conf 勝手に触るなよ….
めったにないとは思うけど、無駄に悩みたくないので、nagiosで監視させよう。
(( /etc/nagios-plugins/config/local.cfg )) define command{ command_name check_dig_match command_line /usr/lib/nagios/plugins/check_dig -H '$HOSTADDRESS$' -l '$ARG1$' -a '$ARG2$' } (( /etc/nagios3/conf.d/localhost.cfg )) define service{ use generic-service host_name localhost service_description DNS check_command check_dig_match!<自宅内ドメイン>!<自宅内サーバIPアドレス> }
でもなぁ、こんなパッケージの設定ミス対策のチェックをあちこち書き込んだら、 設定を変更するときに、2重管理してるのと一緒だしなぁ…意味ないかな。
amavisの設定も
先日、SPAMフィルタのpostgrey(ホスト名でフィルタ)の設定を 見直したが、まだメールが配送できなくなり 今度は、コンテンツフィルタのamavisの設定を見直した。
(( /etc/amavis/conf.d/50-user )) @local_domains_acl = ( ".$mydomain" , # 自宅外ドメイン ".xxxxx.net" , "xxxxx.net" , ) ; (( amavis 再起動 )) /etc/init.d/amavsi restart
postgreyのトラブルでメールが止まる
自宅で立ち上げているメールサーバで、 spamなどでrejectされるメール流量が減っていると思ったら、 普通のメールさえ流れていないことが判明。 エラーメッセージを見ると postgrey が原因っぽい。
かといって、"telnet localhost 10023"とかでも、postgreyは普通に動いている様子。 色々と調べてみたが、perl のバージョンアップの影響かも。
自宅blogの記事で、数年前にpostgreyを入れた時には、起動オプションが"–inet=10023"だと、 IPv6を使おうとすることで失敗していたことが解り、"–inet=127.0.0.1:10023" と設定していた。しかし、改めて最近のpostgrey設定記事を 探すと、前者の設定が多い。 そこで、改めて"–inet=10023"に変更したら、動き出す…
(( /etc/default/postgrey )) POSTGREY_OPTS="--inet=10023"
BuffaloルータのsyslogをDebianサーバで記録
以前から、ルータWZR-1166DHP2の状況のモニタのために、syslogの設定をしようとしたけど、 ファシリティなどの値が分らず失敗していたので、改めて設定したのでメモを残す。
記録側のDebianサーバのsyslogの設定
Debianサーバのrsyslogを受信状態にするために、 udp の 514 ポートを受信状態に設定する。
(( /etc/rsyslog.conf )) $ModLoad imudp $UDPServerRun 514
Buffaloの家庭用ルータであれば、syslog の出力ファシリティは、 ここによれば、Local1 となっているので、以下の設定を追加する。
(( /etc/rsyslog.d/local1.conf )) local1.* /var/log/local1.log
これだけでは、ファイル local1.log が肥大化するので、 logrotate の設定を行う。
(( /etc/logrotate.d/rsyslog )) : /var/log/debug /var/log/messages + /var/log/local1.log { rotate 4 weekly :
最後に、設定を反映させる。
(( 設定を反映 )) $ sudo /etc/init.d/rsyslog restart
Buffaloルータ側のsyslogの設定
管理-ログ-syslog設定にて、syslogサーバの欄にサーバIPアドレスを設定する。

(注意) LOGでのルータアドレスの逆引きとか不要かと思い、/etc/default/rsyslog に、”-x”とかの オプションをつけて再起動とかしたけど、設定が反映されない。 “ps ax | grep rsyslog”などを実行しても、”-n”のオプションしかついていない。 よくよく考えると、systemd が入っているので、/etc/systemd/system/syslog.service にて、 “ExecStart=/usr/sbin/rsyslogd -n”と記載されている。 ここを変更すればとは思うけど、「個人的設定の都合」でこの辺のファイルを書き換えるのは、 Debian流じゃないように思えないので、書き換えを躊躇している。
# systemd で全容が把握できていないだけなんだけど…
dovecotのSSL接続ができなくなった
Debian で dovecot の更新があったが、 /etc/dovecot/conf.d/10-ssl.conf パッケージメンテナー版に 更新したら、 imaps=993 での接続ができなくなった。 imap=143 での接続はできるので、設定ファイルを見直すが接続できず。 以下のようなエラーLOGが残っている。
(( /var/log/mail.log )) Dec 20 19:07:31 perrine dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=192.168.xx.xx, lip=192.168.xx.x, TLS handshaking: SSL_accept() failed: error:140A1175:SSL routines:SSL_BYTES_TO_CIPHER_LIST: inappropriate fallback, session=<xxxxxxxxxxxxxxxx>
色々試したが、SSL鍵の設定がまずいみたい。 メンテナー版のdovecotの鍵は、以下のような設定であったが、
(( /etc/dovecot/conf.d/10-ssl.conf )) ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem
鍵の再設定の方法もよく判らなかったので、apache の SSL鍵を 共有するように、以下のように書き換えた。 (当然、自宅サーバなので、オレオレ鍵)
(( /etc/dovecot/conf.d/10-ssl.conf )) ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
DELL Chromebook 11にDebianプログラム開発環境
学校でのプログラミング演習で、安価なChromebookを使うことができないかと、 色々実験してみた。 まずは、通常のインターネット利用やレポート作成であれば、Chromebookの Google Documentsでワープロ、表計算、プレゼンテーション資料の作成は可能。 ただし、既存のMicrosoft Office環境との互換性が問題になるかもしれない。
プログラミングに利用するといっても、Chromebookは ブラウザ操作以外のことを できないようにすることで、安価で安全な環境を提供しているため、通常であれば何もできない。 かといって、ChromebookはLinuxで動いているため、Linuxディストリビューションとは 親和性がある。croutonというchroot環境で別のLinuxを動かすようにしたものを使えば、 プログラミング環境を構築できる。
プログラミング環境構築までの手順
- DELL Chromebook 11のリカバリイメージ作成
まずは、OS環境を色々といじるため、いつでも状態を復旧できるようにリカバリイメージを作成。 - DELL Chromebook 11でデベロッパーモード
通常では、ブラウザ以外を起動させないモードになっているので、デベロッパーモードを導入。 - DELL Chromebook 11にcrouton / Debian を入れる
crouton を使って Debian を入れる。他の方の資料では、Ubuntu が多いけど、 自分が管理しているサーバは Debian only なので、最新の Jessie にてインストール。 - crouton / Debianにプログラム開発環境
最後に、一般的なプログラミング環境として、C++,Java,Arduino,Processingをそろえる。
ひとまずの感想
32000円ほどで、インターネット環境、レポート作成の環境が使え、 crouton導入で、ローカルで Linux 環境が使用でき、 基本的なプログラミング環境が使えるという意味では、 学生の共通購入端末として悪くないのではないだろうか。 ただし、crouton+Debianなどの導入までの手順を簡単化するのが重要。
crouton / Debianにプログラム開発環境
Arduino組み込み開発環境
Debian(jessie)であれば、Arduinoの環境は登録されているので、 下記のように、インストールすればいい。adduser は、USBシリアルの 書き込みのために、dialout グループにユーザを登録する。
$ sudo aptitude install arduino adduser $ sudo adduser YOURUSERID dialout
Javaの開発環境とProcessing
Javaの開発環境は、openjdk をインストールするだけ。 Processingは、Javaの環境とライブラリを入れておく。 processing 本体で、processing.org から processing-x.x.x-linux64.tgz をダウンロードし、 /opt に展開し、起動ができるようにシンボリックリンクを貼る。
$ sudo aptitude install openjdk-7-jdk libprocessing-core-java $ wget http://download.processing.org/processing-2.2.1-linux64.tgz $ sudo tar zxvf processing-2.2.1-linux64.tgz -C /opt $ sudo ln -s /opt/processing/processing /usr/local/bin/processing
DELL Chromebook 11 に gcc,g++, emacs24,uim,anthy, chromium,thunderbird, dropbox, java, arduino, processing とひとまずインストールしてきて、ディスク使用量は、/ で 38% ほど。 操作をしていて、特に遅いという感覚はない。 初心者からのプログラミング学習で使いそうなものであれば、この程度かな。
DELL Chromebook 11にcrouton/Debianを入れる
ChromebookにLinuxの開発環境を入れるには、利便性の点では、crouton が便利。 インストールするには、最初にcroutonのページ から、インストール用のファイルをダウンロード。
Ctrl+Alt+tでcroshを起動し、ここで shell と入力すると、 開発モードの uid=chronos の環境が起動する。
crouton は、この中に chroot 環境としてインストールされる。 このため、crouton 側で chromebook の環境に対して悪影響が 及ぶことはない。crouton には、いくつかの debian ベースの ディストリビューションを入れることができる。
$ cd ~/Downloads $ sudo sh crouton -r list 使用可能なDebianの種類が表示される。 Debian の wheezy や jessie Ubuntu の precise や trusty など
今回は、個人的に使い慣れた Debian で、最新の jessie をインストールすることにする。
$ sudo sh crouton -r jessie -t xfce 最後に -e を付けると、chroot 環境構築時に ファイル名などが暗号化されるみたい。 途中で、debian の環境のためのユーザ名とパスワードを入力する。
chronos環境には、できあがった Linux の環境を起動するために、"enter-root"とか"startxfce4"といった コマンドが "/usr/local/bin" にインストールされている。
ひとまずは、日本語環境用のフォント,エディタ(emacs),日本語入力環境,chromeブラウザを インストール。
$ sudo enter-chroot ---ここからchroot環境--- $ sudo apt-get install aptitude locales g++ fonts-ipafont-gothic fonts-ipafont-mincho fonts-vlgothic emacs24 anthy anthy-el uim-anthy uim nautilus-dropbox chromium chromium-l10n dnsutils $ sudo dpkg-reconfigure locales ja_JP.UTF-8 をチェックし、 システムのデフォルトlocaleに ja_JP.UTF-8 を設定。 $ startxfce4
xfce4が立ち上がるので、設定・キーボードで、日本語キーボードの設定をすれば、 Debian環境できあがり。
通常の使い方
上記の設定が終われば、後は Debian の使い方ができる。環境の切換えは、以下の通り。
Ctrl+Alt+←(F1) Chromebook環境 Ctrl+Alt+→(F2) chronos環境 Ctrl+Alt+Reload(F3) DebianのX11環境(一旦chronosに切替が必要)
(( Chromebook環境で Ctrl+Alt+t でchronos環境を起動し )) $ sudo startxfce4 ---ここからchroot環境--- debian環境のパスワード
最初起動すると、CtrlキーとSearch(CAPS)ボタンの配置が逆で気持ちが悪いので、 以下の設定を書き込めばよい。
(( $HOME/.Xmodmap )) clear control clear mod4 keycode 37 = Super_L NoSymbol Super_L keycode 105 = Control_R NoSymbol Control_R keycode 133 = Control_L NoSymbol Control_L add control = Control_L add control = Control_R add mod4 = Super_L
ただし、Chromebook環境とDebianのX11環境で "Ctrl"と"Search"キーを切り替えているが、 モード切替の"Ctrl"は、本来の"ctrl"でないと認識しなかったり、切り替えた後の"search"だったり するため、モードを切り替えるための "Ctrl+Alt"+"←/F1,→/F2,Reload/F3"は、 色々と試しながら切り替える。
gcalcli v3.1のインストール
2014/11月に入って、PerlのGoogle Calendar APIで取得していた予定が、 "403 Forbidden"で取得できなくなった。同様の記事が同じタイミングで 報告されており、どうも Calendar API が ver 2.x だとダメになった様子。 色々探していたら、python で書かれた gcalcli の v3.1 であれば、 取得できているみたいなので、インストール。
gitを使ってgcalcli最新版をインストール
# git clone https://github.com/insanum/gcalcli.git # cd gcalcli # python setup.py install ((必要となるpythonライブラリ)) # aptitude install python-dateutil python-gflags python-googleapi python-gdata python-parsedatetime python-pyicu
gcalcliでアクセスする際の認証
gcalcliでカレンダーを取得するために認証を行う必要があるが、 ssh経由で作業中だと、テキストブラウザ "w3m" が起動され、 認証ページ遷移や、キー取得遷移がうまくいかないので、 "–noauth_local_webserver"をつけて、手作業で行う。
$ gcalcli list --noauth_local_webserver # googleカレンダーの認証を行うためのURLが # 表示されるので、ブラウザにcopyして表示 # されるkeyをcopyし、キーを改めて入力
gcalcliを使ってみる
自宅では、今日のカレンダーをeabadgeで表示させているけど、 色エスケープシーケンス表示やら、12時間表示やら趣味に合わないな…
$ gcalcli --nocolor --military agenda today 11pm
CGIからgcalcliを呼び出したら、漢字部分が消える…。 環境変数LANGが設定されていないとダメらしい。
外付けHDD故障
自宅サーバが、今朝、落ちていることが判明。 /var/log/messages を漁ると、外付けのUSB-HD0(2TB)へのバックアップ処理後に、 xfs_alloc_fixup_trees… あたりでカーネルで異常なメッセージを大量に吐いている。 HDDの故障の前兆と見るべきだろう。 中身を確認すると…2TB購入時の日記が無いな…。 最も古そうなファイルは、2012年9月。2年で壊れたというのであれば、根性ナシだな。
バックアップ処理の確認
書き込み時に落ちると思われるので、改めて、バックアップ処理の中身を確認。 crontab のUSB-HD0保存のバックアップをコメントアウトする。
((backup1)) / ------------ (tar) -> USB-HD0/BackupLiux /var --------- (tar) -> USB-HD0/BackupLinux /home -------- (rsync) -> USB-HD0/Mirror/home /home/Photo -- (rsync) -> USB-HD0/Photo /home/Music -- (rsync) -> USB-HD0/Music /home/*data* - (rsync) -> USB-HD0/Mirror/home
((backup2)) /*bin* ------- (rsync) -> /root2 /var --------- (tar) -> /home2/BackupLinux /home -------- (tar) -> /home2/BackupLinux /home/*data* - (tar) -> /home2/BackupLinux /home/Photo -- (tar) -> /home2/BackupLinux /home/Music -- (tar) -> /home2/BackupLinux USB-HD0/PhotoArchive (tar) -> /home2/BackupLinux USB-HD0/Video (tar) -> /home2/BackupLinux
HDDの発注
原因も判明しているし、交換のHDDを早々に注文。(今年2個めか…)
先日、USB3.0 のボードも入れたし、USB3.0 インタフェースの外付けを発注する。 バックアップ高速化できるかな。