2014年11月30日日曜日

FreeBSD 9.1でのMHの設定

FreeBSDでMHをportsからインストールしてメールを出した場合、メールシステムの設定によるかもしれないが、以下のようなエラーが出ることがあります。
<recipient@example.com>: host example.com[www.xxx.yyy.zzz] said: 553
5.1.8 <sender@host.example.net>... Domain of sender address
sender@host.example.net does not exist (in reply to MAIL FROM command)
原因はMHのSMTPクライアントが、SMTPのMAIL FROM:コマンドに"sender@host.example.net" と引数をつけているためのようです。sender@host.example.net のMXやAレコードは外部のホストから引けないので( sender@example.net のMXやAレコードは外部のホストから解決可能)、メールの受信を拒否されていました。

これを解決するには、MHの設定ファイル /usr/local/lib/mh/mtstailor に以下の行を加えます。
localname:      example.net
postfixの場合、/usr/local/etc/postfix/main.cf
masquerade_domains = $mydomain
とすればよいかもしれない。

2014年11月8日土曜日

ZFS bootを利用したFreeBSD 9.2で「Unable to load a kernel!」

先日、利用しているFreeBSD 9.2のサーバーを再起動したところ、
Loading /boot/defaults/loader.conf
Unable to load a kernel!
|
can't load 'kernel'
というメッセージが出て起動できなくなりました。
前兆はあり、利用中にファイルシステム(ZFS)にあるファイルがすこしずつ消えていっていたのです。最初はportupgradeが異常終了するようになり、原因を調べているうちに、ssl関連のファイルがなくなり、sshやsuが利用できなくなりました。
これではどうしようもないので、OSごと強制終了し、 再起動したところ、上記の状態になりました。
FreeBSDのインストールCDからコマンドなどを書き戻せば復旧できそうでしたが、設定ファイルなどを失ってしまう可能性があります。そうなると復旧には時間がかかります。
他に方法がないかと検索エンジンでいろいろと調べていると、以下のことを思いつきました。
  • 現象としてはファイルが消えたただけ
  • ファイルを復旧させれば動作するのではないか
  • ZFSでスナップショットをとっているので、よさそうな時点のスナップショットにroolbackすればよいのでは?
そこで
FreeBSD 9 ZFS the easy way
https://forums.freebsd.org/threads/freebsd-9-zfs-the-easy-way.31557/
にある
Boot back with the installation CD and choose "live CD" and import back your zpool:
zpool import -f -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache zroot
You will now have access to your zfs file system on /mnt
という記述に従い、
  1. FreeBSDのインストールCDからLiveCDで起動
  2. ファイルシステムをインポート
としてファイルシステムを確認します。
そして、rollbackは
ZFS スナップショットにロールバックする
http://docs.oracle.com/cd/E19253-01/819-6260/gbcxk/index.html
にあるように
zfs rollback -r tank/home/ahrens@tuesday
などとしてスナップショットを指定してロールバックします。-rオプションは最新のスナップショットより前のものに戻るときに指定します。
スナップショットの一覧は、
ZFS スナップショットを表示してアクセスする
http://docs.oracle.com/cd/E19253-01/819-6260/gbiqe/index.html
にあるように、
zfs list -t snapshot
とすれば一覧を得ることができます。
上記の手順でなんとか回復することができました。ZFSの障害は、推測ですが、1週間ほど前にファイルシステムを溢れさせたことがあり、これで状態がおかしくなったように思います。そのときは
  1. 一度シャットダウン
  2. 再起動してファイルを削除
  3. 動くようになったので安心
とだけしていたのですが、このときにもう一度、再起動すべきだったのでしょう。