投稿

ラベル(xargs)が付いた投稿を表示しています

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバは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の反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

perlで不要なタグを削除

素人すぎですよ 製作途中で放置されているサイトの依頼を受けて、少し前からチェック等していましたが…。 確かに、それなりに表示されているものの、中身がひどくてメンテナンスをどうやるか悩むレベル。 いろんな情報を提供する目的なんだろうけど、元のファイルをコピーして書きなおしている感じで、DBも使わず、サーバサイドで処理もせず、CSSもほぼなし。 ざっと300ファイル(全部html)で、やたらと全角スペースでレイアウトされているstaticなページ。 これを直すのは正直嫌です。 しかも、各ファイルの先頭に <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { location.href = '/smartphone/'; }</script> そして、smartphoneフォルダには何もない。 だから、PCと同じページを見に来るとNot Found多発地帯という地雷まで完備。 この設計意味が分かりません。変更が発生した場合は、どうするつもりだったんでしょう??? 1つずつ直すのか?それとも、何かジェネレータプログラムが作ってあって、ガシガシと吐き出しているのだろうか? スマートフォンでも見えるように修正 まずは、現状のhtmlを見せれば、not foundは解決するので、scriptを無効にしたい。 とはいっても、300も1つ1つ直すのはコンピュータ使いのやることじゃない。 ここはperlでサクッと処理したい所。 調べてみると、TreeBuilderが良さそう。こんなことがなきゃ、この手のライブラリを使うことも無いだろうなんて思いながら、テストコードを書いてみる。  # perl -MCPA

グループを別のグループに追加

Linux上での話ですが… 友人より、相談のメールが。 すでにLinux上でユーザを幾つかのグループに分けて管理している。 今回整理統合したのでしょうか、GroupA、GroupBをGroupCに突っ込みたいけど、良い方法は?という質問がありました。 Linuxの場合、プライマリーグループがあってdefaultだとユーザ名と同じグループが作られ、運用しています。 それとは別に、ユーザは他のグループに所属するケースもあるわけで、複数のグループに所属することが可能になっています。 で、その操作を簡単にできるのではないか?ということでした。 結論から言うと、その手のコマンドは存在していないので、標準コマンドで作業を完結することはできないわけです。 じゃぁ、無理なのか?というと、そんなことはなく、ちょっとスクリプトを書けば可能です。 解決方法1 メールの中身を読んだのが、日付が変わる頃だったので、寝ぼけながらも何とか処理できました。 ユーザのグループは、/etc/groupに格納されていて、以下のような構成になっています。 test:x:1003: test1:x:1004:test2,test3 test2:x:1005: test3:x:1006: test4:x:1007:test5 test5:x:1008: あくまでもサンプルですが、test1グループにユーザtest2,test3がいます。さらにグループtest4にはtest5がいます。 このtest1,test4をグループtestに入れることにします。 最終的には、test=(test2,test3,test5)となればOKと。 ※本当は、test1にはユーザtest1、test4にはユーザtest4も入っているんだけど、今回は処理しない前提で行きます。一人くらいなら、手作業で変更できるので…。 考え方 まずは、test1のグループのメンバーを引っ張りだします。 これはgrepを利用すればOK。 $ grep test1 /etc/group すると test1:x:1004:test2,test3 という行を得ることができます。欲しいのはtest2,test3の部分なので、切り出します。