FreeBSD12.0Rとzfsでsticky bitが無効である件

某所のファイルサーバを更新するため、FreeBSD12.0-RELEASEとzfsを使ってsambaを動かす下準備をしていたのだけれど、

「メンバーの誰もが書き込めて、メンバーの誰もが読み出せて、しかしフォルダやファイルの削除だけは作成者本人しか出来ない領域」

を作ろうとしてもなかなか上手く行かない。

ああそうだ、こういう場合はディレクトリにsticky bitを立てるんだったなと思ってchmod 1777 sharedとかやっても、やっぱり他人にもファイルを削除できてしまう。

最初はsamba側の設定がおかしい(force user=誰々とかね)のかと思っていたけど、そうでもない。散々試行錯誤していたところ、zfsのACLの問題じゃないかと思い至った。

https://lists.freebsd.org/pipermail/freebsd-stable/2014-July/079340.html

キタ――(゚∀゚)――!! まさにこれですよ!

…なるほどね。従来のchmodじゃあダメなのね。(でも/tmp/はsticky bitが上手く動いてる気もするんだけどまあ気にしない)

という訳で、samba共有フォルダに対して↑のようにaclを設定してあげたら希望通りの動作になったような気がしています。(後方互換的にsticky bitが動作するようにしといて欲しいけどまあその辺りは色々と事情があるんでしょう)

以上、個人的( ..)φメモメモ

FreeBSD zpoolストレージのあれこれtips(作業メモ)

zfsのストレージプールを作っている。

dmesgの結果は次の通り。

da0 at umass-sim0 bus 0 scbus5 target 0 lun 0
da0: <ST8000DM 005-2EH112 1520> Fixed Direct Access SPC-4 SCSI device
da0: Serial Number 152D00539000
da0: 400.000MB/s transfers
da0: 7630885MB (15628053168 512 byte sectors)
da0: quirks=0xa<NO_6_BYTE,4K>
da1 at umass-sim0 bus 0 scbus5 target 0 lun 1
da2 at umass-sim0 bus 0 scbus5 target 0 lun 2
da1: <WDC WD80 PUZX-64NEAY0 1520> Fixed Direct Access SPC-4 SCSI device
da1: Serial Number 152D00539000
da1: 400.000MB/s transfers
da1: 7630885MB (15628053168 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
da2: <WDC WD80 PUZX-64NEAY0 1520> Fixed Direct Access SPC-4 SCSI device
da2: Serial Number 152D00539000
da2: 400.000MB/s transfers
da2: 7630885MB (15628053168 512 byte sectors)
da2: quirks=0x2<NO_6_BYTE>
da3 at umass-sim0 bus 0 scbus5 target 0 lun 3
da3: <WDC WD80 EFZX-68UW8N0 1520> Fixed Direct Access SPC-4 SCSI device
da3: Serial Number 152D00539000
da3: 400.000MB/s transfers
da3: 7630885MB (15628053168 512 byte sectors)
da3: quirks=0x2<NO_6_BYTE>
da4 at umass-sim0 bus 0 scbus5 target 0 lun 4
da4: <WDC WD80 EFZX-68UW8N0 1520> Fixed Direct Access SPC-4 SCSI device
da4: Serial Number 152D00539000
da4: 400.000MB/s transfers
da4: 7630885MB (15628053168 512 byte sectors)
da4: quirks=0x2<NO_6_BYTE>
da5 at umass-sim0 bus 0 scbus5 target 0 lun 5
da5: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da5: Serial Number 152D00539000
da5: 400.000MB/s transfers
da5: 7630885MB (15628053168 512 byte sectors)
da5: quirks=0x2<NO_6_BYTE>
random: unblocking device.
da6 at umass-sim0 bus 0 scbus5 target 0 lun 6
da6: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da6: Serial Number 152D00539000
da6: 400.000MB/s transfers
da6: 7630885MB (15628053168 512 byte sectors)
da6: quirks=0x2<NO_6_BYTE>
Trying to mount root from zfs:zroot/ROOT/default []…
da7 at umass-sim0 bus 0 scbus5 target 0 lun 7
da7: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da7: Serial Number 152D00539000
da7: 400.000MB/s transfers
da7: 7630885MB (15628053168 512 byte sectors)
da7: quirks=0x2<NO_6_BYTE>
da8 at umass-sim0 bus 0 scbus5 target 0 lun 8
da8: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da8: Serial Number 152D00539000
da8: 400.000MB/s transfers
da8: 7630885MB (15628053168 512 byte sectors)
da8: quirks=0x2<NO_6_BYTE>

つまり、

da0:8TB(ST8000DM)

da1:8TB(WD80PUZX)

da2:8TB(WD80PUZX)

da3:8TB(WD80EFZX)

da4:8TB(WD80EFZX)

da5:8TB(ST8000AS)

da6:8TB(ST8000AS)

da7:8TB(ST8000AS)

da8:8TB(ST8000AS)

となっている。続いてzpoolのステータス

# zpool status
pool: zbackup
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using ‘zpool online’.
see: http://illumos.org/msg/ZFS-8000-2Q
scan: resilvered 0 in 0h0m with 0 errors on Mon Apr 23 06:29:16 2018
config:

NAME STATE READ WRITE CKSUM
zbackup DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
da8 ONLINE 0 0 0
5017281946433150361 UNAVAIL 0 0 0 was /dev/da4
da0 ONLINE 0 0 0
da5 ONLINE 0 0 0

errors: No known data errors

pool: zdata
state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
still be used, but some features are unavailable.
action: Enable all features using ‘zpool upgrade’. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zdata ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
da6 ONLINE 0 0 0

errors: No known data errors

pool: zroot
state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
still be used, but some features are unavailable.
action: Enable all features using ‘zpool upgrade’. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
ada0p4 ONLINE 0 0 0

errors: No known data errors

da1・da2・da3・da4・da6でRAIDZ3。これはトリプルパリティで最大3台までのHDDが同時に死んでもデータは保全されるってやつ。8TBのHDDを5台使って容量16TB。

…うーん。安全性(ryだけどちょっと無駄が多すぎる希ガス

da0・da4・da5・da8はRAIDZ1で24TBのストレージ。しかしエラーが発生してる…。

zpoolコマンドで復旧してみるってのもひとつの経験としてアリだけど、年末大出血(って何)ってことで東芝の14TBのHDDを3台購入してきましたわけで。

以上の状態を踏まえてですね、

さて、どうするか。

まず、raidz3は少々やり過ぎな気もしないでもないけど、しかし海門のHDDには過去痛い目に遭ってるから、なるべく冗長度は大きくしたい。

ちなみに現在の使用量は、df -gすると

zdata 14327 8465 5861 59% /usr/home/jail/ほげほげ

って訳でまぁ概算9TB弱ぐらい使ってる。

って事は、14TBのHDDで新たにRAIDZ3を組んで14TBのストレーj

いや、3台じゃRAIDZ3組めないでしょ

しまった。

…しかし、raidzの特徴として、現在のストレージプールを構成しているハードディスクの容量が増えれば、勝手にプールの容量も増えるという、かつてnewfsとかシコシコやっていた頃に比べると考えれない利便性があるとのこと。

じゃあ、次の方針でやってみよう。

  1. 現在raidz3を構成している、da1・da2・da3・da4・da6のうち3台を14TBに交換。そしてまたそのうち金があったら14TBを2枚買い足す( ノД`)シクシク…
  2. その外した3台の8TBのHDDのうちどれかをda4の代わりに差し替える。

あーでも、現在使っているストレージタワー(裸族の云々)はフルスロットル埋まっているから、手順としては次のようにせざるを得ないね。

  1. da4を物理的に切り離し、代わりに14TBの生HDDを突っ込む。
  2. zdataからどれか1台を離脱させる。
  3. 離脱したHDDをzbackupに入れる。
  4. zdataに14TBのHDDを参加させる。

後はビルドが完了次第、zdataのうちどれか2台の8TBを離脱させ、そこに14TBのHDDを入れてやれば良いということ。ばっちぐー(古


1.障害が発生しているda4を切り離す作業

#zpool offline zbackup da4

とかやってみると、zpool statusした結果は、

pool: zbackup
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: resilvered 0 in 0h0m with 0 errors on Mon Apr 23 06:29:16 2018
config:

NAME STATE READ WRITE CKSUM
zbackup DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
da8 ONLINE 0 0 0
5017281946433150361 OFFLINE 0 0 0 was /dev/da4
da0 ONLINE 0 0 0
da5 ONLINE 0 0 0

お、ちゃんとオフラインになった。

2.zdataからどれか1台を離脱させる作業

これ実稼働中のファイルシステムに行うのがメチャクチャ怖い…。もちろんraidz3だからHDDを離脱させても問題ないのは分かってるけど、心臓に悪いね。

(ST8000ASとST8000DMってどっちが信頼性高いんだろう。ASはアーカイブ用でDMの方が性能は高いのかな。でも昔クラッシュしてえらい目に遭ったのはDMだったよな。うーん…と5chで情報収集して悩む事ン十分)

 

・・・ん?

なんでda4が両方のストレージプールにあったの?(?_?)←今気づいた

と思って良く見たら。

da0・da5・da8でraidz0で構成しているのがzbackup

da1・da2・da3・da4・da6でraidz3を構成しているのがzdata

何だか良く分からなくなってきたから、da4を落とそう。えいやっ

# zpool offline zdata da4

でzpool statusをすると

# zpool status
pool: zbackup
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: resilvered 0 in 0h0m with 0 errors on Mon Apr 23 06:29:16 2018
config:

NAME STATE READ WRITE CKSUM
zbackup DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
da8 ONLINE 0 0 0
5017281946433150361 OFFLINE 0 0 0 was /dev/da4
da0 ONLINE 0 0 0
da5 ONLINE 0 0 0

errors: No known data errors

pool: zdata
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
7675701080755519488 OFFLINE 0 0 0 was /dev/da4
da6 ONLINE 0 0 0

errors: No known data errors

…大丈夫なんだろうか。

とりま、ここでda4を物理的に外して、代わりに14TBの1枚目を投入してみる。

またこれがアナログ的に手法で、

#cat /dev/da4 > /dev/null

とかやってアクセスランプがパカパカするHDDを見つけるという方法。

よし。

#shutdown -p now

してHDDを取り出…

あれ?da7はどこに行ったの?

 

そう。実は古いgmirrorな使い方をしていた/dev/da7が遊んでいることに今気づいたのですよ。

ってー訳で、da4とda7を取り外して14TBを突っ込む。dmesgしてみると、

da0 at umass-sim0 bus 0 scbus5 target 0 lun 0
da0: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da0: Serial Number 152D00539000
da0: 400.000MB/s transfers
da0: 7630885MB (15628053168 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>
da1 at umass-sim0 bus 0 scbus5 target 0 lun 1
da1: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da1: Serial Number 152D00539000
da2 at umass-sim0 bus 0 scbus5 target 0 lun 2
da1: 400.000MB/s transfers
da1: 7630885MB (15628053168 512 byte sectors)
da1: quirks=0x2<NO_6_BYTE>
da2: <TOSHIBA MN07ACA14T 1520> Fixed Direct Access SPC-4 SCSI device
da2: Serial Number 152D00539000
da2: 400.000MB/s transfers
da2: 13351936MB (27344764928 512 byte sectors)
da2: quirks=0x2<NO_6_BYTE>
da3 at umass-sim0 bus 0 scbus5 target 0 lun 3
da3: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da3: Serial Number 152D00539000
da3: 400.000MB/s transfers
da3: 7630885MB (15628053168 512 byte sectors)
da3: quirks=0x2<NO_6_BYTE>
da4 at umass-sim0 bus 0 scbus5 target 0 lun 4
da4: <ST8000AS 0002-1NA17Z 1520> Fixed Direct Access SPC-4 SCSI device
da4: Serial Number 152D00539000
da4: 400.000MB/s transfers
da4: 7630885MB (15628053168 512 byte sectors)
da4: quirks=0x2<NO_6_BYTE>
random: unblocking device.
da5 at umass-sim0 bus 0 scbus5 target 0 lun 5
da5: <ST8000DM 005-2EH112 1520> Fixed Direct Access SPC-4 SCSI device
da5: Serial Number 152D00539000
da5: 400.000MB/s transfers
da5: 7630885MB (15628053168 512 byte sectors)
da5: quirks=0xa<NO_6_BYTE,4K>
Trying to mount root from zfs:zroot/ROOT/default []…
da6 at umass-sim0 bus 0 scbus5 target 0 lun 6
da6: <WDC WD80 PUZX-64NEAY0 1520> Fixed Direct Access SPC-4 SCSI device
da6: Serial Number 152D00539000
da6: 400.000MB/s transfers
da6: 7630885MB (15628053168 512 byte sectors)
da6: quirks=0x2<NO_6_BYTE>
da7 at umass-sim0 bus 0 scbus5 target 0 lun 7
da7: <WDC WD80 PUZX-64NEAY0 1520> Fixed Direct Access SPC-4 SCSI device
da7: Serial Number 152D00539000
da7: 400.000MB/s transfers
da7: 7630885MB (15628053168 512 byte sectors)
da7: quirks=0x2<NO_6_BYTE>
da8 at umass-sim0 bus 0 scbus5 target 0 lun 8
da8: <WDC WD80 EFZX-68UW8N0 1520> Fixed Direct Access SPC-4 SCSI device
da8: Serial Number 152D00539000
da8: 400.000MB/s transfers
da8: 7630885MB (15628053168 512 byte sectors)
da8: quirks=0x2<NO_6_BYTE>
da9 at umass-sim0 bus 0 scbus5 target 0 lun 9
da9: <TOSHIBA MN07ACA14T 1520> Fixed Direct Access SPC-4 SCSI device
da9: Serial Number 152D00539000
da9: 400.000MB/s transfers
da9: 13351936MB (27344764928 512 byte sectors)
da9: quirks=0x2<NO_6_BYTE>

ん?da2とda9でマウントされてる。まあいいや

# zpool status
pool: zbackup
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: resilvered 0 in 0h0m with 0 errors on Mon Apr 23 06:29:16 2018
config:

NAME STATE READ WRITE CKSUM
zbackup DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
da3 ONLINE 0 0 0
5017281946433150361 OFFLINE 0 0 0 was /dev/da4
da5 ONLINE 0 0 0
da0 ONLINE 0 0 0

errors: No known data errors

pool: zdata
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using ‘zpool online’ or replace the device with
‘zpool replace’.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da8 ONLINE 0 0 0
7675701080755519488 OFFLINE 0 0 0 was /dev/da4
da1 ONLINE 0 0 0

errors: No known data errors

pool: zroot
state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
still be used, but some features are unavailable.
action: Enable all features using ‘zpool upgrade’. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
ada0p4 ONLINE 0 0 0

errors: No known data errors

よしよし。じゃー突っ込むよー

あれ?こんなコマンドを使うのかな?

# zpool replace zdata da4 da2

そしたら表示が

pool: zdata
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Dec 30 22:24:04 2018
32.3M scanned out of 19.5T at 2.49M/s, (scan is slow, no estimated time)
6.22M resilvered, 0.00% done
config:

NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da8 ONLINE 0 0 0
replacing-3 DEGRADED 0 0 0
7675701080755519488 OFFLINE 0 0 0 was /dev/da4
da2 ONLINE 0 0 0
da1 ONLINE 0 0 0

errors: No known data errors

こんな風になった。多分これでリビルド(?)してるんだろう。(とHDDのアクセスランプを見に行く)

raidz3だったら同時に2台目も入れ替えても大丈夫だろうけど、若い頃だったら多分突っ走ってやってただろうけど大人になった今はそういう危ない事はやらない。

で、後はda4をzbackupに復帰させてみる。

# zpool online zbackup da4

# zpool status
pool: zbackup
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Dec 30 22:36:02 2018
870M scanned out of 12.5T at 39.5M/s, 92h25m to go
197M resilvered, 0.01% done
config:

NAME STATE READ WRITE CKSUM
zbackup ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
da5 ONLINE 0 0 0
da0 ONLINE 0 0 0

errors: No known data errors

pool: zdata
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Dec 30 22:24:04 2018
57.1G scanned out of 19.5T at 79.0M/s, 71h33m to go
11.4G resilvered, 0.29% done
config:

NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da8 ONLINE 0 0 0
replacing-3 DEGRADED 0 0 0
7675701080755519488 OFFLINE 0 0 0 was /dev/da4
da2 ONLINE 0 0 0
da1 ONLINE 0 0 0

errors: No known data errors

pool: zroot
state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
still be used, but some features are unavailable.
action: Enable all features using ‘zpool upgrade’. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
ada0p4 ONLINE 0 0 0

errors: No known data errors

両方合わせて70時間ぐらい待ってれば良いっぽい。

という訳で今年の作業終了~。ふー


2019/1/3追記。

ビルドが終わったようなので、14TBのHDD2台目を行ってみる。

# zpool replace zdata da1 da9

# zpool status zdata
pool: zdata
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Thu Jan 3 05:56:07 2019
66.1M scanned out of 19.5T at 2.00M/s, (scan is slow, no estimated time)
12.6M resilvered, 0.00% done
config:

NAME STATE READ WRITE CKSUM
zdata ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da8 ONLINE 0 0 0
da2 ONLINE 0 0 0
replacing-4 ONLINE 0 0 0
da1 ONLINE 0 0 0
da9 ONLINE 0 0 0

errors: No known data errors

よーし、これでまたリビルド待ち。

サーバ更新準備

最近このブログ(WordPress)なども稼働させているため過負荷気味のサーバですが、OSもいつの間にかObsoleteになって久しいし、ここいらでOSも含めて更新しようと思い立ったのでその記録。

まず、FreeBSD11.0Rをインストール。

1TBのSSDを持ってきてzfsにしてみた。zfsは扱ったことが無いので、これから慣れていかんとなぁ。

freebsd-update fetch

freebsd-update install

でパッチ当て。

/usr/src/以下でmake worldをかまし、make install INSTALLDIR=ごにょごにょとやってjailを構築。

その辺までは良いとして、いよいよjail環境の構築。

従来のように、/etc/rc.confにjailなんちゃらを書き込むのはもうobsoleteだよ!と怒られる。じゃあどうすれば良いかというと、/etc/jail.confに書く。

/etc/jail.confの書式は以前とは違うので注意。man jail.conf する。こんな感じ。

# cat /etc/jail.conf
exec.start = “/bin/sh /etc/rc”;
exec.stop = “/bin/sh /etc/rc.shutdown”;
exec.clean;
mount.devfs;
path = “/home/jail/$name”;
host.hostname = $name;

# each jail
khz {
ip4.addr = 10.100.100.71,192.168.0.71,10.100.100.72,192.168.0.72,10.100.100.73,192.168.0.73,10.100.100.75,192.168.0.75 ;
allow.chflags;
allow.raw_sockets;
}
kemasv {
ip4.addr =10.100.100.10,192.168.0.10 ;
allow.chflags;
allow.raw_sockets;
}

 

今までは、apacheにしろsambaにしろ、基本的には全てソースからコンパイルしていたけれども、依存関係だの何だのでなかなか入らない。

portsを使ってみたところ、まあまあ動くんだけど、やっぱり動かないものもある。

って訳でpkgに戻ってきましたよ、っと

pkg update

pkg install samba44

おおお、ちゃんとsambaが入る(笑)。

起動スクリプトとか設定ファイルの在処がアレだったりするけど、まあ長い旅をしてここに戻ってきたということで良いんじゃないでしょーか。

パッケージを探すときは

pkg search apache

みたいにやればいい。

続く。かも。

FreeBSDでqmail+imapサーバ構築

FreeBSDサーバでimapを使えるようにしたメモ。

imapデーモンとしてソースからコンパイルしてcourier-imapをソースからインストールしようとしてもどうしても上手くいかず、Makefileや各種ライブラリなどを調整してもダメだったので放置していました。

ところが、ある日調べてみると、昨今のimapデーモンはdovecotってのが流行りだとか。それを見てdovecotを入れて上手く行ってるのでそのメモ。

https://www.dovecot.org/

ソースを取得してコンパイル。普通にconfigure、make、make installで行くはず。

smtp-authは、qmail-smtpd-authパッチを当てるけど、このとき64bitパッチを当てていると上手く行かないので、

  1. 64bitパッチ等を当ててまずは普通にqmailのインストール
  2. 別途新たに展開したソースにsmtpauthパッチを当ててコンパイルし、qmail-smtpdのバイナリだけを取り出して別途保存

でqmail本体もsmtpauthも上手く行くはずです。

dovecotの設定ファイルは、

  • /usr/local/etc/dovecot/dovecot.conf
  • /usr/local/etc/dovecot/conf.d/10-auth.conf
  • /usr/local/etc/dovecot/conf.d/10-mail.conf
  • /usr/local/etc/dovecot/conf.d/10-master.conf
  • /usr/local/etc/dovecot/conf.d/auth-checkpassword.conf.ext

あたり。とりあえずcheckpassword経由の認証にしてあります。(多分これで十分)

動かなかったら、ログを見ながら調整してください。確か権限か何かを調整した覚えがあります(うろ覚え)が、少々の試行錯誤で動くようにはなるはずです。

imapデーモンを入れてからというもの、メールの読み書きがもんのすごく便利になり、もうpop3には戻れませんて。はい。

Akismet登録

このたび、wordpress上のブログをそれなりに使っていく事にしたので、アンチスパムのプラグインであるAkismetを正式に登録して使うことにしました。
まず、https://akismet.com/にアクセスし、

  • SAY GOODBYE TO COMMENT SPAMを選択
  • BASICとPLUSがあるので、Get Basicを選択
  • メアド・ID・パスワードを入力して登録

してログインします(うろ覚え)。

APIキーを取得する画面では、金額を自分でスライドさせて変更できます。無料でも登録できてAPIキーがもらえますので、まずは無料で試してみるのもアリでしょう。APIキーを取得してwordpressの管理画面に登録すると、かなーり良い感じにSPAM除けができます。ここまで来たら、自分が払ってもいいかな~と思う額を払っておくと良いでしょう。(私はAkismet Plus Yearlyの年額7375円にしました)

uptime

今管理しているサーバは、年に1度の設備点検時に電源を落としたり、ストレージのHDDを更新したりするため1年以上連続稼働する事は少ない(ほとんど無い)んだけど、ずっと前に保守契約が打ち切られたまま放置している某所のサーバがあるのを思い出してログインしてみた。

>uptime
1:49AM up 715 days, 15:14, 1 user, load averages: 1.00, 1.00, 1.00

おおお!まだ動いてる(笑)。

なんかこのまま放っとけばuptimeが1000日超えそうだわ。

>uname -a
FreeBSD (略) 8.3-RELEASE FreeBSD 8.3-RELEASE #0: Fri Oct 26 23:28:24 JST 2012 root@(略):/usr/home/src/sys/i386/compile/USB i386

そっかー、8.3か(遠い目)

自分のグローバルIPアドレスを知る方法

モバイル環境やNAT内からのアクセスなどで、自分が今インターネットにアクセスしているグローバルIPアドレスを知りたいことがあります。そんな時のためにスクリプトを作ってみました。(というか、5年以上前からこっそり動かしているんだけど)

http://ipaddress.khz-net.co.jp/

アクセスすると、HTMLなど一切無しでIPアドレスだけを吐き出します。従って、PHPなんかのスクリプトからアクセスしてIPアドレスを取得するとき、タグ除去などの面倒な作業が一切不要で便利かと思います。…というか、仕事上そういう必要性があったから自分用に作っただけなんだけどね。

使いたい方はご自由にどうぞ。もちろん、結果や正常動作については一切無保証です。過剰にアクセス負荷を掛けたりしないでね。

smb.confのアクセス制限落とし穴

色々な権限を持っている複数のユーザーが存在している状況下で、ユーザグループごとにアクセス制限を掛けているsamba共有フォルダの設定方法。

複数のユーザが同一の権限でアクセスできる共有フォルダ(force user/force group)のアクセス権限を、valid users=で設定するとうまく行かない。

その場合は、invalid usersを用いて排除するユーザを記述する。システムのグループで分けて、invalid users = +グループ名で設定すると楽。

gmirrorしているHDDに新HDDを追加・HDDの削除

  • 新しく買ってきた真っ新なHDDをミラーリングプールに追加

 # gmirror status

Name    Status  Components

mirror/8tbhdd0p1  COMPLETE

ad8p1 (ACTIVE)
ad11p1 (ACTIVE)

#  gpart create -s GPT ad12
ad12 created
# gpart add -t freebsd-ufs ad12
ad12p1 added
# gmirror insert 8tbhdd0p1 ad12p1
# gmirror status

Name    Status  Components

mirror/8tbhdd0p1  DEGRADED  ad8p1 (ACTIVE)
ad11p1 (ACTIVE)
ad12p1 (SYNCHRONIZING, 0%)

  • 今までのミラーリングプールから1台離脱

# gmirror remove 8tbhdd0p1 ad8p1
# gmirror status
Name    Status  Components
mirror/8tbhdd0p1  DEGRADED  ad11p1 (ACTIVE)
ad12p1 (SYNCHRONIZING, 0%)

  • 離脱させたHDDで別のミラーリングプールを作成

# gmirror label -v -b round-robin 8tbhdd1p1 ad8p1
Metadata value stored on ad8p1.
Done.
# gmirror status
Name    Status  Components
mirror/8tbhdd0p1  DEGRADED  ad11p1 (ACTIVE)
ad12p1 (SYNCHRONIZING, 0%)
mirror/8tbhdd1p1  COMPLETE  ad8p1 (ACTIVE)

wordpress更新エラーの件

「ダウンロードに失敗しました。 要求されたリクエストを完了できる HTTP トランスポートがありません。

というエラーでWordpress本体がアップデートできない件の対応。

原因は、curl

https://curl.haxx.se/

が入っていなかったこと。従って、curlのライブラリをインストールした上で、新しいバージョンが出ていたApacheと併せてPHPを更新。

Apacheのconfigureは、

./configure –enable-so –enable-authn-dbd –enable-ssl –enable-rewrite

PHPのconfigureは、

‘./configure’  ‘–with-pgsql’ ‘–with-apxs2=/usr/local/apache2/bin/apxs’ ‘–with-gd’ ‘–enable-exif’ ‘–with-jpeg-dir=/usr/local/’ ‘–with-png-dir=/usr/local/’ ‘–with-zlib-dir=/usr/local/’ ‘–enable-mbstring’ ‘–with-mysql’ ‘–with-curl’