CentOS Postfix

CentOS 6.9 cronでメールサーバーの同期とってみた

CentOS

バックアップ目的でpostfixメールデータの同期

メールサーバーがダウンした事態を想像すると非常に恐ろしい。メールの重要性は侮れない。
「たかが電子メール、されど電子メール」昔聞いた、とある大学教授の言葉だが時代が進むにつれ名言だと思うこの頃。

メールサーバーが万が一の時 復旧に時間を掛けられない

rsyncでレプリケーションしてみる

ほとんどのメンバーが使用している電子メール。障害の影響が大きいので別の1台を待機状態にして同期を取りダウンタイムを極力短くする。
運用稼働中のサーバーを A 待機中のサーバーを B とする。
▼まず待機サーバーBにメールアカウントをあらかじめ作成
登録用シェルを作成してアカウントとパスワードの対応ファイルから一括で/homeの下にアカウントを作成
useraddコマンドを使ったシェルスクリプトで一括でアカウントを作成しておく
▼試しにコピー元Aで操作して1アカウントのみ手動同期を試みる

[root@A .ssh]# rsync -avz --delete /home/acount1/ B:/home/acount1/

これをcrontab で実行するとパスワードを聞いてくるので自動実行できない!
公開鍵の作成にてパスワード入力なしに同期を取れる様になる

クライアント側Aの作業(運用メールサーバー データのコピー元)

公開鍵id_rsa.pub を作成する

[root@A .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ←そのままエンター
Enter passphrase (empty for no passphrase): ←パスワード無しにしたいのでそのままエンター
Enter same passphrase again: ←パスワード無しにしたいのでそのままエンター
Your identification has been saved in /root/.ssh/id_rsa. ←秘密キー(ssh接続元で使用)
Your public key has been saved in /root/.ssh/id_rsa.pub. ←公開認証キー。待機サーバーにコピーすれば良い
The key fingerprint is:
xx:xx:...............xx:xx root@A

公開鍵を待機サーバーBにコピーする

[root@A .ssh]# scp /root/.ssh/id_rsa.pub B:/tmp
root@B's password:
id_rsa.pub 100% 397 0.4KB/s 00:00

秘密キーのフォルダと秘密キーファイルのパーミッション変更

[root@A ~]# chmod 700 /root/.ssh
[root@A ~]# chmod 600 /root/.ssh/id_rsa

ホスト側B(SSHされる側 待機メールサーバー)の作業

仮置き場の公開鍵を正式ファイルに追記

[root@B .ssh]# cd /root
[root@B ~]# cd .ssh
[root@B .ssh]# ls -al
合計 12
drwx------ 2 root root 4096 1月 16 15:01 2018 .
dr-xr-x---. 17 root root 4096 6月 18 11:34 2019 ..
-rw-r--r-- 1 root root 1608 6月 18 11:34 2019 known_hosts
[root@B .ssh]# cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
[root@B .ssh]# pwd
/root/.ssh
[root@B .ssh]# ls -la
合計 16
drwx------ 2 root root 4096 6月 18 14:01 2019 .
dr-xr-x---. 17 root root 4096 6月 18 11:34 2019 ..
-rw-r--r-- 1 root root 397 6月 18 14:01 2019 authorized_keys
-rw-r--r-- 1 root root 1608 6月 18 11:34 2019 known_hosts

公開鍵のパーミッション変更

[root@B .ssh]# chmod 600 /root/.ssh/authorized_keys
[root@B .ssh]# ls -la
合計 16
drwx------ 2 root root 4096 6月 18 14:01 2019 .
dr-xr-x---. 17 root root 4096 6月 18 11:34 2019 ..
-rw------- 1 root root 397 6月 18 14:01 2019 authorized_keys
-rw-r--r-- 1 root root 1608 6月 18 11:34 2019 known_hosts

これで準備は完了です。

ssh接続確認 パスワードなし

[root@A ~]#ssh 接続先サーバIP or 接続先ホスト名

パスワードなしでログインできればOKです。

[root@A ~]# ssh B
Last login: Mon Aug 26 15:22:19 2019 from A
[root@B ~]#

rsyncをパスワード無しでコピー元Aで手動実行できるか確認

[root@A ~]# rsync -avz --delete /home/someone/ B:/home/someone/

メールサーバーAで バックアップのcron設定

–delete は危険なのでうまく行く事を確認後設定する。
0,6,9,12,15,18,21時の各15分に複製

[root@A ~]# crontab -e
15 0,6,9,12,15,18,21 * * * rsync -avz --delete /home/ B:/home/

cron再起動

[root@A ~]# service crond restart

完了

コメント