Fedoraでメールサーバーを構築:ゼロから運用まで
私はFedoraをメインの開発用マシンとして2年以上愛用しています。パッケージの更新スピードが非常に速く、開発者にとっては非常に快適な環境です。しかし、メールサーバーを自作するとなると、話は少し複雑になります。多くのジュニアエンジニアは、システムが多くの断片的なコンポーネントで構成されているため、構築を敬遠しがちです。メール送信(MTA)、メール受信(MDA)、さらには厳格なSELinuxポリシーまで考慮しなければならないからです。
ですが、あまり心配しないでください。データの流れをしっかりと把握すれば、この構築作業はシステム管理スキルを向上させる絶好の練習になります。この記事では、定番の組み合わせである postfixとDovecotに焦点を当てて解説します。
どの構築方法が最適か?
コマンドを打ち始める前に、現在主流の3つの構築方法を見てみましょう。
1. 自動インストールスクリプト(オールインワン)
iRedMailやMail-in-a-Boxなどが代表的です。数回のクリックだけで、フル機能のシステムが手に入ります。
- メリット: 構築が非常に速く、SpamAssassinやRoundcubeが最初から統合されている。
- デメリット: カスタマイズが難しい。不要なパッケージが多くインストールされるため、トラブル発生時の制御が困難になる。
2. Dockerの使用
Docker-mailserverは、モダンでクリーンな選択肢です。
- メリット: バックアップやサーバー間の移行が容易。
- デメリット: ネットワーク設定がやや複雑で、Fedora上のSELinuxと競合しやすい。
3. 手動インストール(ハードウェイ)
私が推奨するのはこの方法です。システムを完全にコントロールできるようになります。
- メリット: パフォーマンスを最適化でき、各サービスがどのように連携しているかを深く理解できる。
- デメリット: 正確に設定するのに30〜60分ほど時間がかかる。
3つ目の方法の本質を理解すれば、他のどのディストリビューションでも問題なく対応できるようになります。
ステップ1:DNSインフラ – スパム扱いされないための鍵
まずはシステムの更新から始めます:
sudo dnf update -y
sudo hostnamectl set-hostname mail.yourdomain.com
mail-testerなどのチェックサイトで10/10のスコアを獲得するには、以下の3つのレコード設定が必須です:
- Aレコード:
mail.yourdomain.comをサーバーのIPアドレスに向ける。 - MXレコード:
mail.yourdomain.comを最優先(通常は10)で指定する。 - PTRレコード(逆引きDNS): 非常に重要です。VPSプロバイダーに連絡して、IPアドレスをドメインにマップしてください。これがないと、Gmailなどは即座に受信を拒否します。
ステップ2:Postfix – 勤勉な「郵便局員」
Postfixは、インターネット経由でのメール送受信を担当します。インストールは非常に簡単です:
sudo dnf install postfix -y
/etc/postfix/main.cf を開き、以下の行を調整します。yourdomain.com はご自身のドメインに置き換えてください:
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
ここでは mbox ではなく Maildir/ を選択しました。これにより、各メールが個別のファイルとして保存され、大量のメールを同時に受信した際のファイルロックエラーを回避できます。
ステップ3:Dovecot – インテリジェントな「郵便受け」
Dovecotは、ユーザーがIMAP/POP3プロトコルを通じてスマートフォンやPCでメールを受け取るのを助けます。
sudo dnf install dovecot -y
3つの重要な設定ファイルを編集する必要があります:
1. プロトコル: /etc/dovecot/dovecot.conf で、必要なサービスを有効にします:
protocols = imap pop3 lmtp
2. 保存場所: /etc/dovecot/conf.d/10-mail.conf で、正しいMaildir形式を指定します:
mail_location = maildir:~/Maildir
3. 認証: /etc/dovecot/conf.d/10-auth.conf で、セキュリティのためにプレーンテキストによる認証を無効にします:
disable_plaintext_auth = yes
auth_mechanisms = plain login
ステップ4:SSL/TLS暗号化 – メールの「裸」送信は厳禁
暗号化せずにメールを送るのは、はがきを誰でも読める状態で送るようなものです。通信経路で誰にでも盗み見られる可能性があります。Let’s Encryptの証明書をまだ持っていない場合は、Fedoraの自己署名証明書を暫定的に使用できます。
Dovecotの設定 (/etc/dovecot/conf.d/10-ssl.conf):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
次に、Postfixでも同じ証明書を使用するように /etc/postfix/main.cf で設定します:
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_use_tls = yes
ステップ5:SELinuxとファイアウォールの攻略
ここで80%の人がエラーに遭遇します。Fedoraのセキュリティは非常に厳格です。SELinuxを設定しないと、たとえ chmod 777 で権限を与えたとしても、Dovecotはブロックされます。
ファイアウォールのポートを開放します (Port 25, 587, 993, 995):
sudo firewall-cmd --permanent --add-service={smtp,smtps,submission,imap,imaps,pop3,pop3s}
sudo firewall-cmd --reload
SELinuxにPostfixとDovecotが「信頼できるサービス」であることを教えます:
sudo setsebool -P dovecot_deliver_wildcard_python 1
sudo setsebool -P mail_privileged_view_content 1
ヒント: もし “Permission denied” エラーが出た場合は、すぐに sealert -a /var/log/audit/audit.log を実行してください。SELinuxがなぜ動作を拒否しているのか、その理由を特定してくれます。
ステップ6:運用とテスト
サーバー再起動時にも自動で実行されるようにサービスを有効化します:
sudo systemctl enable --now postfix dovecot
テスト用のユーザーを作成します:
sudo useradd -m kithuat_pro
sudo passwd kithuat_pro
次に、Thunderbirdなどのメールクライアントを開き、サーバーのIPとポート993 (IMAP) を入力します。ログインに成功すれば、おめでとうございます!自分専用のメールサーバーの完成です。
まとめ
メールサーバーの自作は、単なるソフトウェアのインストール作業ではありません。セキュリティやネットワークのデータフローについて深く理解する助けになります。Fedora Serverはそのための非常に堅牢な基盤です。毎日 /var/log/maillog をチェックすることを忘れないでください。大量のブルートフォース攻撃を目にするはずです。それがFail2Banについて学ぶべきタイミングです!
