1つのサーバで2つのドメインのメールをPostfixで運用する機会があったので、今後のためのメモ。

NICは1つしかないので、仮想IPアドレスを別途追加しました。
仮想IPアドレスの追加手順はOSによって若干違うので、ここでは省略。

【IPアドレス(1)】 AAA.BBB.CCC.DD1 / mail.abc.com 向け
【IPアドレス(2)】 AAA.BBB.CCC.DD2 / mail.xyz.jp 向け

この状態でそれぞれのIPアドレスに対してSMTP接続してメールを送信してみましたが、送信元メールサーバのIPアドレスを確認してみると、両方とも「AAA.BBB.CCC.DD1」になってしまいました。
mail.abc.com の運用は特に問題ないのですが、mail.xyz.jp の運用の場合、送信元のIPアドレスが「AAA.BBB.CCC.DD1」となってしまうため、送信先メールサーバにて IPアドレス→ドメイン のDNS逆引きチェックをされると「送信元のIPアドレスと送信元ドメインがちがうぢゃないか!」と怒られ、メール送信リクエストを拒否されて送信できなくなる可能性があります。

さてどうしようか、と調べてみたら、Postfixでマルチインスタンス、つまり複数のPostfixメールサーバを立ち上げ、それぞれにドメインなどを割り当てることで解決できそう。早速試してみました。
※この手順では、Postfixの postmulti モジュールを利用するため、Postfixのバージョンは 2.6以上である必要があります。

  1. <手順> モジュールのパスは適宜設定してください。
    Postfixが起動中の場合は、一旦停止する。

    postfix stop
  2. マルチインスタンス構成を行うための初期化。
    /etc/postfix/main.cf にマルチインスタンス運用に必要な設定が追加されます。

    postmulti -e init
  3. 現在設定済みのものとは別となる、”mail.xyz.jp” 向けの “postfix-xyz” インスタンスを作成。
    /etc/postfix-xyz/ ディレクトリが作成され、この中に設定ファイル “main.cf” と “master.cf” が作成されます。

    postmulti -I postfix-xyz -G mta -e create
  4. 3. で作成したインスタンスを mail.xyz.jp 向けに運用するので、このIPアドレスを割り当てます。
    /etc/postfix-xyz/main.cf の “inet_interfaces”パラメータにこのIPアドレスを記述します。ドメイン関連情報も記載しておきます。
    そのほか mynetworks, mydestinationなどなど各種Postfixパラメータは用途に応じて適宜設定します。

    inet_interfaces = AAA.BBB.CCC.DD2
    myhostname = mail.xyz.jp
    mydomain = xyz.jp
  5. 同じく /etc/postfix-xyz/main.cf において “master_service_disable = inet” の記述を以下のように変更。
    詳しくはわからないですが、 /etc/postfix-xyz/master.cf 記載のサービスタイプで使えないようにするものを指定するパラメータのようです。デフォルトの記述のままだとすべてのTCP/IPリスナーポートが閉じられてしまうため修正が必要です。

    master_service_disable =
  6. 作成した “postfix-xyz” インスタンスを利用できるようにする。
    /etc/postfix-xyz/main.cf が変更されます。

    postmulti -i postfix-xyz -e enable
  7. 準備完了したので、Postfix を起動確認。まずは作成した “postfix-xyz” インスタンスを単独で起動。
    postmulti -i postfix-xyz -p start

    起動確認は次のコマンドで。

    postmulti -a -p status

    いったん起動した “postfix-xyz” インスタンスを終了。

    postmulti -i postfix-xyz -p stop
  8.  2つのインスタンスを同時起動する場合は、通常どおりの起動方法でOK。
    postfix start

    起動確認は7. と同じですが、下記でも確認できます

    postfix status

義父のノートPCの調子が悪いとヘルプが来まして、いろいろ対応してました。
<ノートPC>
・NEC Lavie L LL370RG
・OS: WindowsVista HomePremium SP1 (SP2にアップ済み)
・RAM増設、外部HDD接続はなし、USBマウス、USBプリンタを接続。
まぁ、いたって普通に箱出しで使っておりました。

今回の症状としては、
・起動中に突然ブラックアウトして操作不能、強制電源OFFしかできなくなることがある。
・強制電源OFF後に再度電源Onしても症状が変わらない。
・回復コンソールでも症状が変わらない。
・運良くログインできて操作していても、不定期にブラックアウトして操作不能となる。
といったもの。

税金関連のいろんな記録を普段つけるために使っているということからこれでは不便だろう、ということで、お伺いしてきました。

実際に自分が操作しても同様の症状があっさり確認できました。
CHKDSKしても症状は改善されず、Microsoftの診断ツールFixItもだめ。
その他、NECのサポートサイトのトラブルシューティングを試してもだめ。

幸いにして、必要なファイルはスティックメモリで退避されていたので、この日はいったんクリーンインストールを実施。
実施後は動作が安定したので、これで様子をみてもらうことにして、この日は引き上げ。

————————————–

しかし1週間後、同じ症状が再発してるとの連絡があり、いろいろ確認。

本体が普通より熱い感じがしたので、冷却系のトラブルを疑いました。
本体カバーをバラして冷却ファンや周辺のホコリを掃除するなどしてみたものの症状は変わらず。
内部で静電気がたまっちゃってるかなーというところも疑って、電源抜いて放置を試したものの症状は変わらず。
後付けで入れたセキュリティソフト(ウィルスセキュリティZERO)を無効にしてもダメでした。
相変わらずブラックアウトのタイミングが不定なので、やはりハードウェア故障を疑いました。
もう今の自分で手に負える状態ではありませんでした。

メーカー修理の選択もあったけど、修理の間の代替機はないし、修理代も高くつきそう。
購入してから7年近く経過してたのもあり、買い替えを勧め了解してもらいました。
実質的にWindows8.1の選択肢しかなかったところは若干の不安はありましたが・・・
その日のうちに良さげなノートPCを提案、了承してもらって早速購入。

1日かけてもろもろのセッティングしてNewPCを引き渡し、不調のノートPCは引き取り、売却または廃棄をすることになりました。

————————————–

持ち帰った後、念のため再度クリーンインストールしていたんですけど、初期インストール作業時はいたって順調だったのに、セットアップにともなって何度か再起動をしているうち、また例の症状が現れてきました。
3回ほどクリーンインストールしてましたが、初めの方は問題ないのに、何度か再起動をしているうちに症状が発生しました。
一番ひどい時は、CHKDSKさえも途中で止まってしまう状況でした。

うーむ、もしかしてこれってハード故障じゃないかも・・・

どうも、時間が経つにつれて症状がではじめだんだんひどくなっているような感じかな。
たしかに、最初に自分が対処した際には問題なかったけど時間差で症状が出てきてたし。

・・・あ!!

思い当たるものがあります。

「Windowsサーチ」

もしかして、お前か!

再度クリーンインストールをしたあと、Windowsサーチの機能を無効にしてからは、何回再起動しても、どの程度電源を入れていても症状は出なくなりました!

っうことで、Windowsサーチが元凶でした。

もしVista使っていて同じような症状でお悩みの方、お試しあれ。

あ、Windowsサーチ無効の方法は、下記サイトを参照にしてください。
一度OSのクリーンインストールして、Windowsサーチのインデックスが作られていない、インストール直後に設定することをおすすめします。

【[Vista] 使わない機能を無効に その2】

それにしてもCHKDSKさえもまともに動かなくなるくらいにファイルシステムをぶっ壊す Windowsサーチ、恐るべし。

・・・って、結果的に買い替えしなくてもよかったのか・・・
いや、クリーンインストール状態でも結構処理が重い感じがしたし、新しいPCは結構サクサク動くから良かったことにしよう。

PS. 義父から託されたノートPCは無事正常動作を取り戻し、某買取店にて買取上限額いっぱいで買い取ってもらえました。

昨今いろいろ騒がれている openssl の脆弱性ですが
対応された現在の最新バージョン(0.9.8za)を Solaris10 にインストールしてみました。
インストール方法をメモメモ。(bashで実施)

0) 適当なユーザでログイン。必要に応じてPATH設定。
export PATH=/usr/bin:/usr/sbin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:/usr/sfw/bin:/usr/ccs/bin

1) 適当なディレクトリ作成。ディレクトリを移動。
mkdir /export/home/username/src
cd /export/home/username/src

2) openssl 入手。
wget ftp://ftp.openssl.org/source/openssl-0.9.8za.tar.gz

3) 展開。展開されたディレクトリに移動。
gtar xvfz openssl-0.9.8za.tar.gz
cd openssl-0.9.8za

4) インストール前準備。

./Configure solaris-x86-gcc

./Configure solaris64-x86_64-gcc

5) このまま コンパイルすると INT_MAX マクロ値が見えなくなってエラーになるので Makefile をちょっとだけ編集。
vi Makefile
[63行目] 行末に以下の文字列を追記。
-DINT_MAX=2147483647

6) コンパイル&テスト。
make clean
make
make test

7) root になる。
su

8) インストール。
/usr/ccs/bin/make install

9) インストール後のopenssl バージョンの確認。
/usr/local/ssl/bin/openssl version
⇒ 「OpenSSL 0.9.8za 5 Jun 2014」 が表示される。