メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

これは使える!テキストツール csvq

GO製 csvq

いつも使えそうなツールをチェックしているのだけれど、久々に使えるものを入手した。

csvファイルをDBのように扱い、sqlで操作可能にする。

インストールはBinaryをダウンロードしてPATHの通ったところに置いて完了。

ちなみに、他の人はどうしているのか分からないけれど、どこに置くのかというのはいつも悩ましい所。
  • /usr/bin
  • /usr/local/bin
あたりが、多いんでしょうか…。
まあ、マルチユーザの場合、パッケージなどで入れたものは、/usr/bin以下に入るだろうし、buildするタイプなどで作法の良いものなら/usr/local/binなどに入れるのが普通だろうなぁ。
 自分の場合は、個人で使用する場合や自作のもので、一時的に使うモノは、~/bin というフォルダを作成していて、ここにポイッと入れて動作テストなどしている。
もちろん、PATHを通しておく必要が有る…。

さて、解凍してcsvqをbin以下に入れれば即実行できる。

こいつ強力すぎる!

実際に試してみると、こいつは便利だ。
試しに次のようなデータを作成してテストしてみた。(user.csvとscore.csv)

データを一覧したければ、
$ csvq
> select * from user;

+----+--------+-----+-------------+
| id |  name  | age |     tel     |
+----+--------+-----+-------------+
| 1  | user1  | 20  | 01011112222 |
| 2  | user2  | 21  | 01011113333 |
| 3  | user3  | 22  | 01011114444 |
| 4  | user4  | 23  | 01011115555 |
| 5  | user5  | 24  | 01011116666 |
| 6  | user6  | 25  | 01011117777 |
| 7  | user7  | 26  | 01011118888 |
| 8  | user8  | 27  | 01011119999 |
| 9  | user9  | 28  | 01022221111 |
| 10 | user10 | 29  | 01022222222 |
+----+--------+-----+-------------+
まんま、mysqlコマンドと同じような表示をしてくれる。
> select * from score;
+----+---------+-------+------------------+
| id | user_id | score |       date       |
+----+---------+-------+------------------+
| 1  | 2       | 100   | 2019/3/12 10:00  |
| 2  | 4       | 200   | 2019/3/12 10:15  |
| 3  | 6       | 300   | 2019/3/12 10:30  |
| 4  | 8       | 400   | 2019/3/12 10:45  |
| 5  | 10      | 500   | 2019/3/12 11:00  |
| 6  | 1       | 600   | 2019/3/12 11:15  |
| 7  | 3       | 700   | 2019/3/12 11:30  |
| 8  | 5       | 800   | 2019/3/12 11:45  |
| 9  | 7       | 900   | 2019/3/12 12:00  |
| 10 | 9       | 1000  | 2019/3/12 12:15  |
+----+---------+-------+------------------+
この2つよく有るパターンのテーブルです。

でもって、joinしてみる。
> select * from user join score on user.id = score.user_id order by score desc;

+----+--------+-----+-------------+----+---------+-------+------------------+
| id |  name  | age |     tel     | id | user_id | score |       date       |
+----+--------+-----+-------------+----+---------+-------+------------------+
| 1  | user1  | 20  | 01011112222 | 6  | 1       | 800   | 2019/3/12 11:15  |
| 5  | user5  | 24  | 01011116666 | 8  | 5       | 800   | 2019/3/12 11:45  |
| 10 | user10 | 29  | 01022222222 | 5  | 10      | 700   | 2019/3/12 11:00  |
| 8  | user8  | 27  | 01011119999 | 4  | 8       | 600   | 2019/3/12 10:45  |
| 9  | user9  | 28  | 01022221111 | 10 | 9       | 600   | 2019/3/12 12:15  |
| 4  | user4  | 23  | 01011115555 | 2  | 4       | 500   | 2019/3/12 10:15  |
| 2  | user2  | 21  | 01011113333 | 1  | 2       | 400   | 2019/3/12 10:00  |
| 7  | user7  | 26  | 01011118888 | 9  | 7       | 300   | 2019/3/12 12:00  |
| 6  | user6  | 25  | 01011117777 | 3  | 6       | 200   | 2019/3/12 10:30  |
| 3  | user3  | 22  | 01011114444 | 7  | 3       | 100   | 2019/3/12 11:30  |
+----+--------+-----+-------------+----+---------+-------+------------------+
うわー、テストするだけなら、これで十分かも…。
ひょっとすると、講義でも使えるかもしれない。
DB無しで、csvファイルだけ用意して、練習するとか…。良いかも!

 とりあえず、sum( ) や avg( ) などは使えるし、他にも関数は大量に用意されている。
マニュアルを見ると、こんなことまで対応しているのかと驚く。
https://mithrandie.github.io/csvq/

もちろん、selectだけでなく、insert/updateなど一通り揃っているので、手軽にテストできそう。

他には、UTF-8にもShift-JISにも対応しているようだし、JSONも扱えるらしい。
区切り記号もカンマ以外にもOKなので、テキストファイルに落とせれば何とかなりそうな気配。

SQL使いたいけど、DBインストールできない人とか、DBから持ってきたデータで検証したいとかという目的にも行けそう。
子プロセスで実行して、SQLiteの代わりに使うとか…。パイプで処理繋いでやれば何とでもなりそうで期待大(笑)


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ