bsfilterを導入


今まで迷惑メールも含めてgmailに転送してた。
最近gmailにrejectされることが増えて来たので、迷惑メール以外だけをgmailに転送することにした。

今回の条件:

  • postfix + dovecot
  • 誤検知が怖いのでrejectしたくない
  • 迷惑メールのサンプルは欲しいので、RBLやgraylist系はなるべく入れたくない
  • 転送したいのでprocmailはやりたくない

可能性があるのはspamassassin系よりbogofilterかbsfilterかな?
milterとかどうだろ?
bogofilterは単体で分かちがないからbogomとか難しそうだし、bsfilterはmilterでの運用例がほとんどない。

試行錯誤し、bsfilterとpostfix-pipeの組み合わせでヘッダ追加し、postfixのheader_checksで特定条件のみgmailで転送。
bsfilterやmecab関連のパッケージは、割と探すのが大変なレベル。google codeなんてもう無いよ!
postfix-pipe用のラッパーshellとか適当に見つけて、自分用にカスタマイズ。

完成!

…意外と誤検知が多い(´・ω・`
rainloopでアーカイブして、アーカイブディレクトリのファイルはcronでclean登録。
検知漏れは、macOSのメーラーからmboxにして、手動でメールサーバに持って来て、bsfilterでspam登録。
しばらく運用してみるか。精度が上がるといいな…

LAMPに慣れきった俺がexcelVBAでハマったメモ


ホントにメモね。

シートのハンドルで動くコードが面倒
コードを各シートごとに書くハメになる。
モジュール側の関数とか呼べるけど、定数とかどうするのよ。やり直し?

Range、Cellsが動いたり動かなかったり
これが、まー動かない。
選択したらなんとかなる?いやいや、それをしたくない設計もあるじゃん?

forで回すiは32767まで
longにすればいいんだけど、ループの中で共通の関数にiを渡す時はcintすることになるから、自然とやりたくなくなる

ファイルから配列に渡そうとするとメモリ不足が出る
今回はC社の、というかスイッチのログを読ませたい。
数万行になるかもしれない。
でも、longの最大値でredimすると、自分の環境(4GB)ではメモリ不足になる。
16777215行にする。
…他の環境では2GB?メモリ不足?マジかー
とりあえず32767行に戻す。2GBで動いた…
納得いかないけどね。

この記事、また書こう。書ききれないや

自宅のMySQLをマスターにしてRDSをスレーブに、レプリケーションを組む


ここ丸パクリ。
MySQLとAmazon RDSのレプリケーションをする方法

初めにマスターの/etc/my.cnfをいじったくらい。
リードオンリーになってないスレーブって大丈夫か?どうしたら直せるわからんけど。

とりあえずAWS側のWordPressからRDSにつないで、サイトは見えてた。

自宅がプライマリAWSがDR そんな環境が見えてきた


今まではさくらのVPSに月額1008円払って、メールとWordPress環境を作ってきた。

よくみたらGMOの固定IP、ほとんど同額じゃん。
自宅でMacMini2015が宙に浮いてるじゃん。
WordPress遅いのやだからクラウドじゃなくVPSにしてたけど、自宅でサーバを建てたらもっと良くない?

ということで先日久々に自宅サーバデビュー。
ハッキング怖いからsshとか制限かけまくり。

んで、1年も試用期間があって、手続しなおして2年目のAWS環境もあるんですよ。
自宅だからDR欲しいよね?よし構築だ!

まずはメール。
インスタンスは自宅と同じCentOS7で構築。
PostFix、Dovecot、Saslauthdのバージョンが同一であることを確認。
自宅サーバのhistory見ながらnginx、php-fpm、php7をrpmやyumでインストールしていく、設定ファイルは適当。

以下のシェルを準備。

# cat /usr/local/bin/rsync_aws.sh
#!/bin/sh

rsync -auzq --delete -e "ssh -i /root/.ssh/dayomon.pem" /var/www/html/ [email protected]:/home/ec2-user/var/www/html/
rsync -auzq --delete -e "ssh -i /root/.ssh/dayomon.pem" /etc/ [email protected]:/home/ec2-user/etc/
rsync -auzq --delete -e "ssh -i /root/.ssh/dayomon.pem" /usr/local/bin/ [email protected]:/home/ec2-user/usr/local/bin/

自宅サーバのrootでcrontabに登録。
AWSのcronにも以下のcrontabを登録。

5 * * * * root rsync -auz --delete /home/ec2-user/var/www/html/ /var/www/html/ > /dev/null 2>&1

流石に/etcは完全に同期とらないけど、さっき入れたパッケージの設定のために、ちょいちょいコピー。
お手軽に移行完了。

んで、今後どうするか。DRらしいことしてこうぜ。

メールは、自宅とAWSを同じ優先順位で、MXレコードを登録。
自宅サーバが落ちても半分は受け取れるし、もう半分も再送かかるからきっと大丈夫。

WordPressは、管理ページだけ自宅サーバのhttpsに。
一応AWSでも。さっきのcrontab止めないとえらい目に合うけどw

そして注目はRoute53のフェイルオーバ。
自宅が死んだら勝手にAWSの環境に切り替えてくれる(はず)
無料ではないけど、I年間1000円前後らしいし、入れてもいいかも。
今後環境作ろう…

MySQLは、自宅をマスター、RDSをスレーブにして、レプリケーションする(予定)
自宅もAWSも、両方とも自宅のMySQLを見に行っている。
自宅のサーバが死んだら、WordPressのDBをRDSに向ける工夫は、ささっと今度作っておこう。

作業しながら裏で進めてたaws


いろいろ待ち時間が発生してたので、裏でEC2作り直し。
なんでかずっとWordPressがデータベース確立エラーになってた。

IaaSだから?

いろいろ調べると…

まさかのselinux…

orz

データベース確立エラーが出たら、一度は疑ってみようぜ~

orz

あ、aws要素全然ないじゃんw

PHP4.xをCentOSに

引用


yum remove php php-*

cd /usr/local/src

# http://museum.php.net/php4/

wget http://museum.php.net/php4/php-4.4.3.tar.gz

tar zxvf php-4.4.3.tar.gzcd php-4.4.3

yum install gcc flex http-devel libXi libtool-ltdl-devel

./configure –with-apxs2=/usr/sbin/apxs –with-mysql=shared

make & make install

最近はシングルサインオン関係でお仕事が多い


シングルサインオン。以降SSOと表記。

なんでそんなのいるの?という人もいるかと思う。
そもそも、色々なアカウントを持ってる中、SSOが要らないだろうと思ってる人は、以下2つの要素が大きいのかな、と。

  • パスワードなんて使いまわして暗記してるから、SSOなんて必要性を感じない
  • IDやパスワードが漏れたからって、問題になると思えない

んで、どんな危険があるか。

パターン1
一部の社員がパスワードを使いまわし、なおかつそのパスワードをモニターの付箋紙で貼ってある。
…こんなの、同僚なら簡単にソーシャルハックできるし、掃除する委託業者とかでもアウトだろ…

パターン2
どっかのサービスでIDとパスワードが流出したが、Amazonなんかの通販サイトでも同じものを使用していた。
これ、結構危ない。

  • 勝手に買い物をされてしまう
  • 登録クレジットカードの番号の一部や有効期限が見えてしまう

後者は、他のサイトの組み合わせとかで、完全なカード番号が入手できちゃったりする可能性もある。
セキュリティコードと呼ばれる番号も、だいたい3桁。1000パターン検証すれば必ず割れる。

上記の理由で、SSOで使うログイン情報以外は、全部異なるパスワードにするべき。
個人でSSOはちょっと敷居が高いので、1passwordとかで代用できるかなぁと。

SAML非対応サービスでのSSOは次回以降に。