経緯
わが社のシステムはNagiosという監視ツールですべて状態を常に確認している。
何か異常が発生したら、すぐさまメールサーバにメール送信して、以上を通知するのだ。
サーバはすべて冗長化している。
完璧だ!
バシーン!
ぎゃあー(メンバー一同、泡を吹いて床に伏せる)
目的
いや、L3スイッチも冗長組んでるんだけどね?
何でか知らないけどフェイルオーバーしなかっただけで(大問題)
でも、今回みたいな問題が発生したときにアラートの通知ができなくなると大問題だよね、ということで、リレー先のメールサーバだけではなく、リレー先自体も冗長してしまおう、というのが今回の目的です。
環境
まずはシステムの構成環境をおさらいです。
特にPostfixはバージョンによって使えるパラメータが違ったりするので、要チェック。
Nagiosサーバ
OS:CentOS6.7
Postfix:postfix-2.6.6-6
Nagios:nagios-3.5.1-1
メールサーバ
OS:CentOS6.7
Postfix:postfix-2.6.6-8
「え、まだCentOS6使ってるの?サポート2020年に切れるよ?大丈夫?」
大丈夫じゃないです(震え声)
リレーサーバの冗長化
さて本題です。早速リレーサーバの冗長化の設定をしていきましょう。
ちなみに、なんでL3スイッチを挟んでメールサーバを用意しているのかというと、目的別ネットワークの構築だとか、セキュリティうんぬんとか、外部ネットワーク接続先をしぼるとか
正直よくわからん
のですが、社内の決まりなので仕方ありません。
Nagiosから直接メール飛ばせばいいじゃん(コナミ)
NagiosサーバのPostfix設定おさらい
現在の設定のおさらいです。
とはいえ、Postfixの設定自体、リレーサーバを設定するだけならそんなに難しくありません。
/etc/postfix/main.cf にリレーサーバ先の設定をすればいいだけです。
$ cat /etc/postfix/main.cf | grep relayhost
relayhost = [192.168.100.100]
ちなみに、プライマリメールサーバのIPアドレスは[192.168.100.100]、
セカンダリメールサーバのIPアドレスは[192.168.101.100]としています。
んで、上記のrelayhostの部分でリレーサーバを指定しています。
これでメールをリレーサーバに転送してくれているわけですね。簡単。
んじゃ、relayhostにもういっこIPアドレス足してあげればいいだけじゃーん
とかいって relayhost = [192.168.100.100], [192.168.101.100] と書くと
Postfixがエラーを吐きながら落ちるので注意。
監視通知が止まって私もゲロる(敗北カウント1)
セカンダリリレーサーバの設定
まずはセカンダリリレーサーバの設定をしていきます。
セカンダリを指定する設定は”fallback_relay”というパラメータを使います。
$ cat /etc/postfix/main.cf
<前略>
relayhost = [192.168.100.100]
<後略>
ここに1行追加してあげましょう。
# vi /etc/postfix/main.cf
<前略>
relayhost = [192.168.100.100]
fallback_relay = [192.168.101.100] #<- 追加
<後略>
超簡単!!
Postfixの再起動
ここまで終わったら設定を読み込みましょう。
reloadでも良いかもですが、私はrestart派
# service postfix restart
成功!
テスト
sendmailでメールを送ってみる。
sendmail [送り先メールアドレス]
FROM:[Nagiosサーバのメールアドレス]
TO:[送り先メールアドレス]
Subject:Test
testmail
送信先にメールが届けばOKです。
セカンダリのメールサーバにすべることを確認するためにプライマリのメールサーバを停止させようと思ったのですが、そのメールサーバを使っているほかのシステムを巻き添えにするほどの度胸はなかったので、代わりにプライマリサーバに適当なPostfixが動いていないサーバを指定してテストしてみました。
というわけでプライマリのIPアドレスを192.168.100.200に設定。
もちろんメールサーバではないので、25番ポートは開いていません。
# tail -f /var/log/maillog
Apr 16 17:07:11 ******** postfix/smtp[13511]: connect to 192.168.100.200[192.168.100.200]:25: Connection refused
Apr 16 17:07:11 ******** postfix/smtp[13511]: 15******40: to=[送信先] relay=192.168.101.100[192.168.101.100]:25, delay=7.6, delays=7.5/0/0/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 23******CD)
ちゃんと滑ってそうですね!
これでセカンダリ機能してなかったらまたアラート通知が止まって私の息の根も止まるところでした。
あとがき
今回リレーサーバの冗長化設定をやってみましたが、メールサーバ自体はありものを使ったので構築という工程を全くもって実施しておりません。
今度はメールサーバの構築からやってみたいですね。
おまけ
セカンダリメールサーバのログ
Apr 16 10:28:38 [セカンダリメールサーバ] postfix/smtp[81990]: 1A******98: to=[送信先] relay=none, delay=0, delays=0/0/0/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=********.******.local type=A: Host not found)
おや・・・?^q^
参考サイト
Postfixの中古本でも買って勉強します・・・
コメント