イントロ#
mix-space に返信メールの購読と通知機能を追加するため、メールサーバーを自分で構築することにしました。
インターネットで検索してみたところ、iRedMail は機能が強力で使いやすく、デプロイもそれほど複雑ではないようです。やってみましょう!
デプロイするためには、以下が必要です:
- VPS(最適な場合は逆引き DNS をサポートしているもの)
- ドメイン(もちろんです)
この記事は、ubuntu 22.04 lts をベースにしており、ドメインは xxu.do を使用しています。参考にしてください。
正式なインストール#
システムの準備とインストール#
- パッケージの更新と必要なパッケージのインストール:
sudo apt update
sudo apt upgrade
sudo apt install wget curl sudo tar socat bind9-utils -y
- メールサーバーのドメインとして mail.xxu.do を設定するため、VPS のホスト名を設定します:
vim /etc/hosts
127.0.0.1 mail.xxu.do mail # 1行追加、mail.xxu.doはフルホスト名、mailはショートホスト名です
x.x.x.x mail.xxu.do mail # ここにパブリックIPアドレスがある場合、後ろをホスト名に変更して保存して終了します
vim /etc/hostname
mail # 内容をmailに変更して保存して終了します
reboot # 再起動して変更を有効にします
hostname # 実行後、ショートホスト名mailが表示されるはずです。フルホスト名が表示される場合は設定が間違っています
hostname -f # 実行後、フルホスト名mail.xxu.doが表示されるはずです。ショートホスト名が表示される場合は設定が間違っています
- iRedMail のダウンロードとインストール
wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.8.tar.gz # 20240401時点での最新バージョンは1.6.8です
tar -xf iRedMail.tar.gz
cd iRedMail-1.6.8 && bash iRedMail.sh
次に、グラフィカルなインストール画面に入り、「スペース」キーで選択し、「Enter」キーで次に進みます。インストール中に停止する場合は「Ctrl+C」を押します。
1. インストール、Enter
2. インストールディレクトリ、デフォルトのままでEnter
3. Webサーバーの選択、nginxがよく知られているので、nginxを選択してEnter
4. データベースの選択、2番目のMariaDBを選択してEnter
5. データベースのパスワードの設定、覚えておいてください
6. ドメインの設定、ホスト名と重複しないように設定します。この記事ではxxu.doです
7. 管理者パスワードの設定、覚えておいてください
8. その後はすべて「y」を選択し、セットアップが完了したら `reboot` でシステムを再起動して変更を有効にします
ドメインレコードの設定#
- メールサーバーのドメインを VPS に解決し、証明書を申請してインストールします:
curl https://get.acme.sh | sh; apt install socat -y || yum install socat -y; ~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d mail.xxu.do --standalone -k ec-256 --force --insecure
~/.acme.sh/acme.sh --issue -d mail.xxu.do --webroot /var/www/html
~/.acme.sh/acme.sh --installcert -d mail.xxu.do --key-file /etc/ssl/private/iRedMail.key --fullchain-file /etc/ssl/certs/iRedMail.crt
service postfix reload;service dovecot reload;service nginx reload # サービスをリロードします
- iRedMail のグレーリストを無効にします(影響がわかりませんが、チュートリアルに従って行います)
vi /opt/iredapd/settings.py
# "greylisting" を削除し、書式を維持することに注意してください。または、次の行で行全体を削除します
plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]
- PTR 逆引き解決を設定します:VPS の管理画面にアクセスし、PTR レコードをメールサーバーのドメイン(この記事では mail.xxu.do)に設定します。
nslookup x.x.x.x(サーバーのIP)
を使用して確認します。 - レコードを設定します:
vi /root/iRedMail-1.6.8/iRedMail.tips
# 以下のような部分を見つけ、コピーして引用符とスペースをすべて削除し、先頭と末尾を連結します。
次のようなコードが得られますので、dkim._domainkey の Content に入力します:
v=DKIM1;p=MIIBIjANBgkqhkiG9w0BAQEFAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX