スタートアップスクリプトの利用検討
VPSで構築しているので、さくらインターネットのスタートアップスクリプトを利用できる。ここはひとつ、メールサーバを作るためのスクリプトを導入してみて、どこまで自分の理想に近いのか。新しい技術のキャッチアップはできるのか?などを検討してみた。
スタートアップスクリプト | さくらの VPS ドキュメント こちらに記載されている「証明書+メール」の種別の「Mailserver」を選択。このスクリプトはpostfix / dovecotに加えてPostfixAdmin というWEBでメールサーバを操作できるアプリケーションがつき、Lets encryptによる証明書の更新もあるとのこと。
インストール後にどんなパッケージが入ったかなど
rootになってみると見慣れないディレクトリ/root/.sakuravps/ というものがあった。
# cat /root/.sakuravps/
i**-3**-3*****.vs.sakura.ne.jp.sh startup.done startup.log startup.sh
どうやら、startup.shが呼ばれて、i**-**-3*****.vs.sakura.ne.jp.sh がカスタマイズされて展開されたスクリプト本体らしい。中にはrootやmariadbのパスワードなどが記載されていた。あと、僕のインストール時点では、Lets encryptのインストールをgithubから行うスクリプトになっていたが、これはsnapdに置き換わるということで、アナウンスが出ていた。「certbot-auto更新」より。2021年2月3日以前に下記のスタートアップスクリプトを利用したお客様は入替作業をする必要があるとか。(i** にはサーバの初期ホスト名が入っていた)
インストールされたパッケージを見ると、mariadb が入っていて、postfixadminがここにデータベースを作り、ユーザーやパスワード、その他の設定などを保存する作りになっていると思われる。これがあればSASLでファイルベースのデータベースを作らなくても良いということで、良いとは思ったんだけど…メモリの少ないサーバであるのでデータベースが動くことに不安(oomkiller等)があるのと大人数での運用はしないし、技術者以外はユーザー管理に携わらないのでpostfixadminの導入はしない方向で決定。
スタートアップスクリプトから学んだこと
基本的にミドルウェアの設定ファイルはsedやヒアドキュメントによるファイル生成をしているので、スクリプトだけで設定が完了するようにできている。chef やansibleを利用していた時にはtemplateファイルを用意、変数で置き換えていくというやり方をしていたので、さらに時代が進んだなと感じた。なかでも、postfixについてはこの書き方ですべて行えるという発見が嬉しかった。
#postfix
postconf -e smtpd_banner='$myhostname ESMTP'
postconf -e smtp_header_checks='regexp:/etc/postfix/smtp_header_checks'
postconf -e mime_header_checks='regexp:/etc/postfix/mime_header_checks'
postconf -e で変数定義をする形。sedなどで置き換えるのではないので順番やコメントアウト内を書き換えてしまう恐れがないというのはとてもうれしい。後で別の投稿にて詳細を記載するつもりだけれど、この書式で書き換えられるのは/etc/postfix/main.cf のファイルの中身。/etc/postfix/master.cf については、オプションをさらに足せばよい。この時点のスタートアップスクリプトはsedで既存ファイルの書き換えをしていたので限界はあると思うけど。