roundcubeアップデート後にログインNG

外出時に自宅サーバのメールを読むために導入したWeb-Mail「RoundCube」をセキュリティアップデート実施後に突然、利用できなくなった。
ブラウザからアクセスしログインを行うとNGとなる。
サーバのログを確認すると以下のエラーメッセージ。

Nov  2 09:34:02 royalblue imapd: LOGIN FAILED, method=CRAM-MD5, ip=[::ffff:192.168.0.202]

どうやらIMAPアクセス時の認証に失敗している模様。
しかしRoundCubeをアップデートしただけで、Config関係は変更していないし・・・
とりあえず、関係しそうな設定を触ってみることに・・・
/usr/local/www/roundcoube/config/config.inc.phpに以下の設定を追加してみた。

$config['imap_auth_type'] = 'PLAIN';

結果は無事、アクセスできるようになった。

しかし、原因は不明?

Serverのハード変更

大停電でHDDがクラッシュしてからメインServerの調子が悪くなったので予備のServerをメインServerに変更。
現行のメインServerは『Dell Optiplex-745』で運用、予備Serverは『Dell Optiplex-755』を割り当てている。
予備系はしばらくメンテナンスしていなかったので、現行ServerのHDDをEasyCopyで丸ごと予備系のHDDへコピー。
1TBのHDDのコピーは14時間も要したが、無事にコピーできた。
NICが現行と予備で異なっていたため、コピー後にNICのシステム名称のみ、/etc/rc.confを修正して再起動し、無事に引っ越しを終えることができた。

現行(Dell Optiplex-745)

予備(Dell Optiplex-755)

 

 

大停電でServerトラブル

9月6日深夜の地震による大停電で、我が家のServerもトラブルに見舞われた。
仮想メールサーバーを割り付けていたHDDのパーテーションの8セクタがクラッシュし、カーネルメッセージが吐き出され、パフォーマンスが低下。
該当パーテーションをfsckしたが回復しないため、予備のHDDに「EasyCopy」で丸ごとコピーしてHDDを交換。
丸ごとコピーでもトラブルの8セクタ分はコピーエラーとなったため、交換したHDDで立ち上げた後にコピーできなかった8セクタを含むバーテーションのファイルをtarでバックアップ。
その後、該当のパーテーションをnewfsでフォーマット。
バックアップから該当パーテーションをリストア。
該当バーテーションの仮想サーバーを再構築。(メールデータやwebサーバーのコンテンツは残したままシステムを上書き)
サーバー再起動で全て復旧。

FreeBSDのjailによる仮想環境であったためできた復旧手順。

apache2.4でbasic認証

Apach2.4でBasic認証を試してみたメモ。

特定のディレクトリをプライベートのみでアクセスさせるためにBasic認証を試してみた。
必要なライブラリは有効にしてある前提で、.htaccessを利用せずに直接httpd.confに設定を記述してBasic認証を有効にする。

<Directory "/usr/local/www/apache24/data">
    Options +FollowSymLinks
    AllowOverride all
#    Require all granted
    AuthType Basic
    AuthName "Please Enter ID and pass"
    AuthUserFile /usr/local/www/apache24/.htpasswd
    Require valid-user
</Directory>

Auth認証するために、.htpasswdを作成する。
httpd.confに指定したディレクトリに.htpasswdを以下のように作成する。

htpasswd -c /usr/local/www/apache24/.htpasswd user-name
New password:
Re-type new password:
Adding password for user user-name

Apacheを再起動してBasic認証されたら成功。

jail仮想でデバイスフルにするために

FreeBSDのjail環境下でストリーミング配信を行う実験のため、jail仮想環境でデバイスをフルに利用するための設定を行ってみたメモ。

/etc/defaults/devfs.rulesを/etcにコピー

# cp /etc/defaults/devfs.rules /etc

jail仮想ホストのデバイスをフルにするためにコピーした/etc/devfs.rulesを編集

[devfsrules_hide_all=1]
add hide

# Basic devices typically necessary.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_basic=2]
add path log unhide
add path null unhide
add path zero unhide
add path crypto unhide
add path random unhide
add path urandom unhide

# Devices typically needed to support logged-in users.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_login=3]
add path 'ptyp*' unhide
add path 'ptyq*' unhide
add path 'ptyr*' unhide
add path 'ptys*' unhide
add path 'ptyP*' unhide
add path 'ptyQ*' unhide
add path 'ptyR*' unhide
add path 'ptyS*' unhide
add path 'ptyl*' unhide
add path 'ptym*' unhide
add path 'ptyn*' unhide
add path 'ptyo*' unhide
add path 'ptyL*' unhide
add path 'ptyM*' unhide
add path 'ptyN*' unhide
add path 'ptyO*' unhide
add path 'ttyp*' unhide
add path 'ttyq*' unhide
add path 'ttyr*' unhide
add path 'ttys*' unhide
add path 'ttyP*' unhide
add path 'ttyQ*' unhide
add path 'ttyR*' unhide
add path 'ttyS*' unhide
add path 'ttyl*' unhide
add path 'ttym*' unhide
add path 'ttyn*' unhide
add path 'ttyo*' unhide
add path 'ttyL*' unhide
add path 'ttyM*' unhide
add path 'ttyN*' unhide
add path 'ttyO*' unhide
add path ptmx unhide
add path pts unhide
add path 'pts/*' unhide
add path fd unhide
add path 'fd/*' unhide
add path stdin unhide
add path stdout unhide
add path stderr unhide

# Devices usually found in a jail.
#
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide
#
[devfsrules_jail=5]            ← 以下を追加
add path mem unhide
add path kmem unhide

/etc/jail.confを調整

#
##############
# 共通の設定 #
##############
allow.raw_sockets = 0;
allow.set_hostname = 0;
allow.sysvipc = 0;
mount.devfs;
mount += "procfs /jail/${name}/proc procfs rw 0 0";
exec.start += "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
##################
# jail個別の設定 #
##################
jail1 {      # デバイスを規制したjail
        host.hostname = "jail1.hoge.com";
        path = "/jail/jail1";
        ip4.addr += "xxx.xxx.xxx.xxx/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "4"; ← 制限したルール適用
}
jail2 {   # デバイスフルのjail
        host.hostname = "jail2.hoge.com";
        path = "/jail/jail2";
        ip4.addr += "xxx.xxx.xxx.yyy/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "5"; ← 制限無のルール適用
}