CentOSのサポートが終了するからいつか対応しないとと思いつつほっておいたサーバ移行。denasu.comへの攻撃も増えてきたのとメモリ不足への対応も考えて新サーバ構築中。
OSはいつもつかっているUbuntuに変更。
メモリ不足はさくらのVPS 4GBを契約。それでも月2500円。TypingTubeの作者の方は月10万円ってTweetしてたのでまだまし、なのか?
セキュリティは全てのサービスをDocker、Docker-Composeで構築する。Ubuntu本体は公開鍵認証のSSHとポートフォワーディング専用FTPだけ動かして、Web、メール、ロビーなど、もろもろ独立したコンテナにすることで、サービスを乗っ取られても他のサービスには影響しないようにする。唯一SSHに脆弱性がなければ相当強固なはず。
VPSに展開する前にWindows上のWSL2でステージング環境を構築。コンテナなのでこのまま持って行けばVPSでも動作するはず。これも便利。Web、WordPress、ランキング、ワードサーバ、DB、GITもいろいろはまったけどコンテナ化完了。特にPHPはCentOSのパッケージマネージャ制約で最新版が使えなかったりしたのが、コンテナをビルドするだけで最新版になるのでだいぶよくなる。
ロビーとウェザタイサーバは特に問題はなさそうなので最後の難関がメール。セキュリティ設定がたくさんありすぎて複雑。結局、SMTPはポート25+587でSASL認証+STARTTLS、自ドメイン宛のメールは認証なしでも受け取れて、他ドメイン宛のメールは認証なしならリレーエラー、認証ありなら他ドメインの25ポートに送る、POPはポート995でパスワード認証+TLSとした。TLSの証明書はさくらのドメイン認証証明書でいけると思うけどまだそっちでは試していない。SPFは既に旧サーバでも設定していたが追加でDKIMとDMARCの設定をする。このあたりを試すにはDNSの逆引きやTXTレコードが必要なのでローカルDNSサーバも構築。
これだと25と587が同じ設定なのでSubmissionポートって意味あるのか? って思ったけど、OB25P Blockingってあくまでアウトバウンド禁止であって、denasu.comは別に回線を提供するプロバイダじゃないから関係ないのか。関係あるのはクライアント側で、メーラを使ってdenasu.comの25ポートにつなごうとするとNo Route to hostエラーでつながらない。なので587ポートをオープンする必要があるってだけか。クライアントから25ポートにアクセスする人は悪意があるとみなされるが、587ポートへのアクセスはフリーで、587ポートが安全かどうかはそのサーバに依存するわけで、この構成だと587ポートは認証必須、リレー禁止になっているからOK、と。てな感じで合ってるのかな。。