メールサーバの構築 #1

Tech (Old)

メールサーバを構築してほしいとリクエストがあった。普通に業務で使うメールサーバで、Slack を使う場面が多いようだけど、なんだかんだと外部とのやり取りはメールとのこと。使う人間は多くはないが、外部スタッフのアドレスを作ったり消したりの頻度が高いみたい。あと、サービス用のドメインもあるので、各ドメインの基本的なアカウントも送受信出来たら良いとのこと。業務で使うならどこかのサービスを使った方が良いのではないかと提案したが、いろいろな事情で VPS に入れてほしいとのこと。

Docker コンテナにした方が良いかとも思ったが、久しぶりなのでとりあえず浮きドメインで VPS をあげて入れてみようかと。OS はなんでも良いと思うが、最近は Ubuntu を使うことが多いので最新の LTS 版を使ってみる。SMTP は Postfix で IMAP/POP3 は Dovecot になるだろう。ユーザの追加・削除のメンテナンスは事務の人がするみたいなので PostfixAdmin も必要か。SMTPS/IMAPS/POP3S のことを考えると証明書がいるので Let’s Encrypt の証明書を使ってみる。PostfixAdmin を使うとなると ApacheMySQL も必要だ。ドメイン認証を用意しないと受け取ってもらえないところもあるかもしれないので SPF と DKIM は用意した方がよさそう。

まずはメールサーバとして動作するのに必要な DNS の設定を行って、次に VPS に OS をインストールする。そして Postfix のインストール、Dovecot のインストールを行い、Let’s Encrypt から証明書を入手しておく。マルチドメイン対応や MySQL を使うように、SMTPS/IMAPS/POP3S など諸々の設定を行い、PostfixAdmin をインストールして(Apache も必要になる)使えるようにする。

DNS の設定

ホスト名を決める(ここでは mail.hoge.com とする)。ネームサーバにホストの A レコードと MX レコードを入れておく。MX レコードで指定するホスト名は A レコードで定義されていないといけない(CNAME とかはダメ)。A レコードで「mail.hoge.com の IP アドレスは XXX.XXX.XXX.XXX」を指定して、MX レコードで「hoge.com へのメールは mail.hoge.com が処理する」(実際は優先度も指定)と設定する。

逆引きの設定は VPS の設定で(IP アドレスは VPN サービスを提供しているところのもの)。

VPS へ Ubuntu Server 22.04 LTS をインストール

Ubuntu Server 22.04.3 LTS を VPS に入れる。ISO ファイルを理研の Anonymous FTP で探してダウンロード。

OS のインストールのメモ。

  • 言語は English のまま
  • キーボードは自機と合わせる
  • ネットワークの設定。Search Domain にホストのドメイン hoge.com を入れておく
  • ユーザアカウントの設定でホスト名に FQDN は指定できない(mail と入力)

インストール完了後、再起動。さっきつくったアカウントでログイン。

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y vim-nox
$ sudo update-alternatives --config editor
$ sudo apt install -y openssh-server
$ sudo vi /etc/ssh/sshd_config
$ sudo systemctl restart ssh

設定ファイル編集用に vim-nox を入れる。update-alternatives で vim-nox が使われるように設定。
openssh-server を入れようとしたらすでに入っていると。インストール時にチェックはつけなかったんだけど。設定を変更。ポートは 22 から変えておく。まだ公開鍵認証を必須にはしない。
ここで ssh で接続してみる。接続できたらコンソールは閉じてよし。

$ vi ~/.ssh/authorized_keys

~/.ssh/authorized_keys に公開鍵を入れる。一回ログアウトして、鍵でログインできるか確認。

$ hostname -f
mail
$ sudo hostnamectl set-hostname mail.hoge.com

ホスト名が FQDN になるようにする。hostname -f で確認すると、おそらくホスト名だけ(この場合、mail)が返ってくる。

$ sudo ufw allow <SSH のポート番号>
$ sudo ufw enable
$ sudo ufw status

ufw の設定。SSH のポートを許可して、有効化。状況の確認。その他のポートはのちのち設定する。

$ sudo apt install -y postfix mailutils

Postfix のインストール

いよいよ Postfix のインストール。メール送信テストとかで使うので mailutils も入れておく。
インストール時に Postfix の設定が走るので、以下のような感じで。

  • General mail configuration type: Internet Site
  • System mail name: hoge.com
$ sudo ufw allow 25
$ sudo ufw allow 587
$ sudo ufw allow 465

ufw で使うポート(25, 587, 465)を許可しておく(現状では 25 しか使わない)。25 は SMTP、587 と 465 は Submission。

契約しているプロバイダによるが、自機(自宅)から、外部サイトのポート 25 へはつながらないようになっている(迷惑メール対策)。最近はメールサーバ間は 25 で送り、クライアント PC から自分のメールサーバへは Submission ポートを使う。

$ echo "test email" | sendmail <適当なメールアドレス>
$ sudo cat /var/log/mail.log

とりあえずテストメールを送信してみる。一応、ログも見る。
メールが来ているか確認。おそらく To も Subject もないメールが来ているはず。From が正確か確認する。

$ sudo vi /etc/aliases
$ sudo newaliases
$ mail root

postmaster (postmaster@hoge.com) というアドレスは root (root@hoge.com) のエイリアスになっている。postmaster は必須のアドレス。わざわざ root のメールを取りにくるのもなんなので、自分のアドレスに転送する(root: <自分のメールアドレス> という行を追加する)。

次の記事は Dovecot のインストールから。

コメント

タイトルとURLをコピーしました