と言うことで久しぶりのブログですが今回はそう言う話です。
なんで今時レンタルサーバーを契約したのか
これについては、
今時、開発者なら VPS を借りるもんじゃね?
と思われるかもしれませんが、今回必要だった要件が下記の様な感じだったため、 今時の VPS ではなくあえてレンタルサーバーを借りました:
- self-managed ではないメールサーバーを確保したかった
- 静的生成したブログのデータを手軽に rsync で deploy したかった
- サーバを落さずに運用するのが面倒だったのでその辺りを丸投げしたかった
まぁ一番の理由は self-managed ではないメールサーバが欲しかった辺りで、 今までは個人向け Gmail に ForwardEmail で独自ドメイン宛てのメールを転送してたんですが、 メール送信の辺りに微妙感が非常にあったので、今回はさくらのレンサバを借りました。
またこのブログは今まで Hugo で生成したファイル類を Google Cloud Storage に乗せて Cloudflare 経由で配信していたんですが、 GCS への deploy にも時間が掛っていたのでその辺りをなんとかしたかったと言うのも有ります。
あと残りの理由としてはメンテナンスコストと金銭的コストは低い方が良いよね、と言う感じですね。はい。
さくらのレンタルサーバーを借りてみてどうだったか
それで私が借りたサーバは Intel Xeon + FreeBSD 11.2 な環境で、 所詮はメールサーバと静的生成したファイルを Cloudflare 経由で流しているだけで CGI とか使ってないため、 特に今は困ることなく普通にレンサバを使えています。
ただしメールサーバとしての処理の部分は多少調整していて、
- 受信したメールを
ByDate/Y/M
に自動的に振り分ける( - 迷惑メールの処理に使う
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 のテストを書く、と言うのも共有できると良いなーと言う感じですね。はい。