カラクリスタ

さくらのレンタルサーバーを契約しました

と言うことで久しぶりのブログですが今回はそう言う話です。

なんで今時レンタルサーバーを契約したのか

これについては、

今時、開発者なら VPS を借りるもんじゃね?

と思われるかもしれませんが、今回必要だった要件が下記の様な感じだったため、 今時の VPS ではなくあえてレンタルサーバーを借りました:

  • self-managed ではないメールサーバーを確保したかった
  • 静的生成したブログのデータを手軽に rsync で deploy したかった
  • サーバを落さずに運用するのが面倒だったのでその辺りを丸投げしたかった

まぁ一番の理由としては self-managed ではないメールサーバが欲かったと言うのが主で、 今までのメール環境は個人向け Gmail に ForwardEmail 経由で独自ドメインのメールを転送していたんですが、 いかんせん受信は出来ても独自ドメインでのメールの送信手段が今一つパッっとしない感じだったと言うのもあり、 今回さくらのレンタルサーバーのスタンダードプランを借りました。

またこのブログは今まで Hugo で生成したファイル類を Google Cloud Storage に乗せて Cloudflare 経由で配信していたんですが、 ブログのデータを生成する際に過去に生成したファイル一式をまるっと削除している影響なのか gsutil で deploy するのに毎回 50 秒ぐらい掛かっていたため、 その辺りを高速化すべく rsync 経由でデータを deploy できる様にしたかった、と言うのもあります。

あと残りの理由としてはメンテナンスコストと金銭的コストが低い方が良いよね、と言う感じですね。はい。

さくらのレンタルサーバーを借りてみてどうだったか

一応私が借りることが出来たサーバは Intel Xeon + FreeBSD 11.2 な環境なんですが、 所詮はメールサーバと静的生成したファイルを Cloudflare 経由で流しているだけで込み入った使い方をしている訳でも無し、 と言う感じなので今のところは普通に困ることなく使えています。

ただメールサーバとしての処理の部分は多少調整していて、

  • 受信したメールを ByDate/{Year}/{Month} に自動的に振り分ける
  • 迷惑メールの処理に使う spamassassin の設定を調整する
  • 過去のメールアドレスも含めて一つの Mailbox にデータをまとめる

と言う様なことはやっています。

ちなみにメールの自動振り分けに使っている .mailfilter の設定と spamassassin の設定は下記の様な感じです。 が spamassasin の設定の方はネットで調べた設定をコピペして継ぎ接ぎしているので、ライセンスは不明と言う感じになります:

.mailfilter:

if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
        xfilter "/usr/local/bin/spamc"
}

if ( /^X-Spam-Flag:.*YES/ )
{
        to "maildir/.spam/"
}

DATE=`date +%Y.%m`
DEST=".ByDate.${DATE}"
YEAR=`date +.ByDate.%Y`

test="/bin/test"
mkdir="/bin/mkdir"
touch="/usr/bin/touch"

system "${test} -d maildir/${YEAR}/cur || ${mkdir} -m 700 -p maildir/${YEAR}/cur"
system "${test} -d maildir/${YEAR}/new || ${mkdir} -m 700 -p maildir/${YEAR}/new"
system "${test} -d maildir/${YEAR}/tmp || ${mkdir} -m 700 -p maildir/${YEAR}/tmp"
system "${touch} maildir/${YEAR}/maildirfolder"

system "${test} -d maildir/${DEST}/cur || ${mkdir} -m 700 -p maildir/${DEST}/cur"
system "${test} -d maildir/${DEST}/new || ${mkdir} -m 700 -p maildir/${DEST}/new"
system "${test} -d maildir/${DEST}/tmp || ${mkdir} -m 700 -p maildir/${DEST}/tmp"
system "${touch} maildir/${DEST}/maildirfolder"

to "maildir/${DEST}"

.spammassasin/user_prefs:

required_score 5.0
report_safe 0

# Japanese
normalize_charset 1
ok_locales ja en
ok_languages ja en

score FROM_EXCESS_BASE64 0
score GAPPY_SUBJECT 0
score HTML_COMMENT_8BITS 0
score OBFUSCATING_COMMENT 0
score OBSCURED_EMAIL 0
score SUBJECT_ENCODED_TWICE 0
score SUBJECT_EXCESS_BASE64 0
score SUBJ_ILLEGAL_CHARS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score WEIRD_QUOTING 0

# RBL

## all.rbl.jp
header    RCVD_IN_ALL_RBL_JP eval:check_rbl_txt('rbl.jp', 'all.rbl.jp.')
describe  RCVD_IN_ALL_RBL_JP Received via a relay in all.rbl.jp
tflags    RCVD_IN_ALL_RBL_JP net
score     RCVD_IN_ALL_RBL_JP 2.0

## url.rbl.jp
urirhssub URLBL_RBLJP url.rbl.jp. A 2
body      URLBL_RBLJP eval:check_uridnsbl('URLBL_RBLJP')
describe  URLBL_RBLJP Has URI in url.rbl.jp
tflags    URLBL_RBLJP net
score     URLBL_RBLJP 4.0

uridnsbl  URLBL_IP_RBLJP url.rbl.jp. TXT
body      URLBL_IP_RBLJP eval:check_uridnsbl('URLBL_IP_RBLJP')
describe  URLBL_IP_RBLJP Has IP URL in url.rbl.jp
tflags    URLBL_IP_RBLJP net
score     URLBL_IP_RBLJP 4.0

## dyndns.rbl.jp
urirhssub URLBL_DYNDNS_RBLJP  dyndns.rbl.jp.    A   4
body      URLBL_DYNDNS_RBLJP  eval:check_uridnsbl('URLBL_DYNDNS_RBLJP')
describe  URLBL_DYNDNS_RBLJP  URL uses Dynamic DNS service
tflags    URLBL_DYNDNS_RBLJP  net
score     URLBL_DYNDNS_RBLJP  4.0

score RCVD_IN_SORBS_BLOCK 0
score RCVD_IN_SORBS_DUL 0
score RCVD_IN_SORBS_HTTP 0
score RCVD_IN_SORBS_MISC 0
score RCVD_IN_SORBS_SMTP 0
score RCVD_IN_SORBS_SOCKS 0
score RCVD_IN_SORBS_WEB 0
score RCVD_IN_SORBS_ZOMBIE 0

# BAYES
score BAYES_99 8.0
score BAYES_95 5.0
score BAYES_80 3.0
score BAYES_60 2.0
score BAYES_50 1.0
score BAYES_40 0.5
score BAYES_20 -0.5
score BAYES_05 -2.0
score BAYES_00 -5.0

ちなみにこの設定でのスパムやフィッシングメールの処理精度ですが、

  • 基本的にはスパムやフィッシングは正しく処理できている
  • しかし時々は誤爆したりすり抜けが発生する
  • とは言えそれ以外は基本的には問題がない

と言う感じです。

なおスパムメールについては学習させた効果もあってほぼ誤検出せずに処理できているんですが、 フィッシングメールに関してはフィッシングメールが公式のメールのコピペで飛んで来るので、 公式のメールがフィッシングメールとして処理される誤爆が結構発生しています。

とは言えフィッシングメールについてはクレジットカードやアカウント周り云々のメールが来たら基本的にフィッシングを疑い、 メールに記載されているドメインとヘッダ情報を確認した上でブックマークから状態を確認する、 と言う運用でなんとかなっていますが。

以上

と言うことで最近いじってたメールと WebSite の Hosting 周りの話はそんな感じでした。

まぁ Hosting 環境については、Cloudflare 経由でしか配信してないので転送量とかはそう言うほども無いですし、 CGI などのスクリプトを動かす訳でもないので、とりあえず当面はこのままかな、と言う感じですね。

あとはまぁ今回の件とは別枠で、最近の開発だと the.kalaclista.com のテンプレートを全面的に書き直していて、 テンプレートを書き直すついでに Perl でキチンとテストを書く、と言う様なこともやってたりします。

なおテンプレートの書き直しと平行して、記事ファイルややメタ情報の分離などもやっているので、 そういうのが終わったら公開できるテンプレートなどの情報は GitHub 辺りで公開したいなーとは考えていて、 せっかくなので Perl で Hugo のテストを書く部分とか共有したいと思ってます。