謝意 http://pocketstudio.jp/log3/2012/09/24/how_to_use_swatch_/
http://http://www.maruko2.com/mw/
http://d.hatena.ne.jp/motipizza/20120721/1342857737 を参考にさせていただきました。
前提条件:
ORCA をインストールした Ubuntu 14.04 で、メールサーバーをインストールしていないこと(もしくはメールサーバー設定を省くこと)
自分で責任を負えること
Linux へのある程度の理解があること(bash sh 等のコマンドを理解していること)
ターミナルモードの意味がわからない方は、手を出すべきではないと思います。特別 Linux に対して理解が無い場合は、試験用のシステムを作成してそこで試すなり、全体のバックアップを取って行うなりする方が賢明かと思います。
当然ですが、当院の掲載情報を利用して何が起こっても、当方は一切の責任を負いません。近くに頼れるベンダーがある場合はそちらにお願いする方が早いと思います。チャレンジする必要のある場合で頼れるベンダーのない場合は、医療従事者でシステムに責任を持つ方であれば、当院にお問い合わせください。
SLAT対応CPU 搭載パソコンで Pro 以上のバージョンの Windows であれば、追加費用なしで Hyper-V による仮想PC を設置できます。この仮想 PC に Ubuntu + ORCA をインストールすると、好きなように試験ができて便利です。
postfix での外部へのメール送信
OCN 等、プロバイダーによっては、メールサーバーから SMTP (ポート25番やリレーで使用するポート587番)での送信を許可していないものもあり、このようなプロバイダーでは、メールサーバーを設置しても外部へはメールが送れません。ネットで検索してみましたが、OCN ではプロバイダーから指定された SMTP サーバーとそのポート番号を postfix の設定ファイルで
relayhost = [SMTPサーバー]:ポート番号
と、指定すると送れたという記事もありましたが、試験したところ送信を拒否されました。
この設定でも
smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/smtp-auth smtp_sasl_security_options = noanonymous
を追加して、/etc/postfix/smtp-auth に、プロバイダーから自分のメール用に指定されているユーザー名とパスワードを指定すれば出来るのではないかと思いますが、外部と通信できる別メールサーバーを使用したため、試していません。
外部へのメール送信が許可されていれば
relayhost =
と書いて、下の3行は要らないと思います。当然承認ファイルも hash データベース作成も不要です。
ipv6 について
(ipv6 をそもそも使っていないため)ipv6 を使用する設定にしておくと、つまらないトラブルが起こりましたので、合わせて ipv6 を無効にするようしてあります。
vim について
ファイルのエディタは vim を使用しています。元々インストールされている vim は簡易版なので、カーソル移動とかできません。通常版をインストールして使っています。
簡単な使用方法は
キー d を2度押すと該当行削除
キー x を押すとカーソルの文字を削除
キー :wq を続けて押すと保存終了
キー :q! を続けて押すと編集中止終了
キー i を押すと編集モード(エディタのようにバックスペースで消したり挿入したりできます)
キー Esc を押すと編集モードを終了
と、いったところです。
swatch・postfix・mailutilsをインストールします。
$ sudo apt-get -y install swatch postfix mailutils (vim が簡易版のままなら後ろに vim 付けとくと使いやすいかもです)
自分のホスト名を引けるようにします
$ sudo vi /etc/hosts
中身
127.0.0.1 localhost.localdomain localhost 127.0.1.1 マシンのフルネーム (例:orca.myclinic.local) # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
ipv6 を無効にします
$ sudo vi /etc/sysctrl.conf
最終行の下に、以下の2行を足します
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
設定を反映させます
$ sudo sysctl -p
postfix の設定は、以下の部分の修正( $ sudo vi /etc/postfix/main.cf )
myhostname = マシンのフルネーム (例:orca.myclinic.local) mydomain = マシンのドメイン名 (例:myclinic.local) myorigin = $myhostname alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = $myhostname, マシン名, localhost.localdomain, localhost, $mydomain relayhost = [中継してもらうsmtpサーバーのフルネーム]:送信するポート番号 (例:25 とか 587 とか) smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/smtp-auth smtp_sasl_security_options = noanonymous mynetworks = 127.0.0.0/8, 所属するネットでのアドレス (例:192.168.0.100/24)
承認ファイルを作成します
$ sudo vi /etc/postfix/smtp-auth
承認ファイルの中身を書きます(1行目はいらないかもです)
中継してもらうsmtpサーバーのフルネーム 承認用のユーザー名:承認用のパスワード [中継してもらうsmtpサーバーのフルネーム]:送信するポート番号 承認用のユーザー名:承認用のパスワード
hash データベースを作成して postfix を再起動します
$ sudo postmap hash:/etc/postfix/smtp-auth $ sudo service postfix restart
メールの送信試験
$ mail -s メールの題名 送信先のメールのアドレス
cc:
と、表示されるので、そのままエンターキーを押し、その行以下に送信するメールの内容を直接打ち込んでください。書き終わったら CTRL + D で、終了送信します。
メールの送信状態確認
$ cat /var/log/syslog
最終行あたりに、送信のログがあると思います。エラーが無いか確認してみてください。こんなのがあれば送信できています。
Jan 1 00:00:00 マシン名 postfix/smtp[XXXXX]: XXXXXXXXXX: to=<送り先のメールアドレス>, relay=中継してもらうsmtpサーバー[中継してもらうsmtpサーバーのアドレス]:ポート番号, delay=222, delays=222/0.02/0.03/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as XXXXXXXX)
swatch の設定
$ vi ~/.swatchrc
./swatchrc の中身です
watchfor /panda.*fail.*/ echo red mail addresses=メールを送りたいアドレス(但し、「@」を「\@」に置き換えてください),subject=ORCA_Caution_Message throttle 00:10:00 watchfor /panda.*[Ss]uccess.*/ echo green mail addresses=メールを送りたいアドレス(但し、「@」を「\@」に置き換えてください),subject=ORCA_Success_Message throttle 00:10:00
watchfor の後の「/」で囲まれた部分は、syslog に表示される行の正規表現です。
ORCA は同期エラーがある場合には
Jan 1 01:00:0 サーバー名 panda/dbredirector[XXXXX]: DB synchronous failure
のようなメッセージを、同期をとるコマンドを入れて成功した時には
Jan 1 01:00:0 サーバー名 panda/dbsync[XXXXX]: Success all sync
のようなメッセージを syslog に書き込みます。
watchfor /panda.*fail.*/
であれば、「panda」「何かの文字」「fail」「何かの文字」の並びで引っかかります。
dbredirector のエラーのみを送信したければ、
watchfor /panda\/dbredirector.*DB synchronous failure/
でよいです。「/」の囲まれた中に「/」を書く場合には、前にエンマークを入れてください。入れないと認識されません。
正規表現等 swatch の設定については http://oxynotes.com/?p=7517 に詳しく書いてありました。
echo green
は、緑色で画面表示という意味です。画面表示が不要なら echo の行はいりません。
throttle 00:10:00
は、一度送ると10分間は送らないという意味です。延々ログを履いた時にメールを短時間で送り続けることを防ぐためです。適時変更してください。
*** 注意 ***
Sendmail 対策なので、postfix 使うなら不要と思いますが、
$ sudo cp /usr/share/perl5/Swatch/Actions.pm /usr/share/perl5/Swatch/Actions.pm.org $ sudo vi /usr/share/perl5/Swatch/Actions.pm
Actions.pm の143 行目の
$args{'MAILER'} .= ' -oi -t -odq';
の -odq を削除します
$args{'MAILER'} .= ' -oi -t';
*** 注意ここまで ***
swatch を daemon 起動します。
$ swatch -c ./.swatchrc -t /var/log/syslog --daemon
sudo vi /etc/rc.local で rc.local の exit 0 の前の行に
sudo -u ユーザー名 swatch -c /home/ユーザー名/.swatchrc -t /var/log/syslog –daemon
で、自動起動の設定をしておけば、再起動時にも勝手に動いてます