Ubuntu 22.04でPostfixとDovecotを使用した自前メールサーバーの構築:メールフローを完全に制御する

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

なぜ多くのDevOpsエンジニアは、あえて「苦労」してまでメールサーバーを自作するのか?

Google Workspaceに1ユーザーあたり月額6ドルを支払う代わりに、月額5ドルのVPS1台でスタートアップの数百ものメールアカウントを運用できます。以前、金融系のシステムを管理していた際、サードパーティサービスを利用するとスケールアップ時のコストが急増することに気づきました。メールサーバーを自前で構築することは、予算の節約だけでなく、ログや機密データの流れを完全に掌握できるというメリットがあります。

しかし、この道は決して平坦ではありません。設定を誤れば、あなたのサーバーは瞬く間に「スパム送信機」となり、一晩で国際的なブラックリストに登録されてしまいます。そのため、最初から正しく設定することが重要です。

適切なデプロイ方法の選択

Ubuntu 22.04で検討できる一般的な3つのアプローチがあります:

  • メリット: インスタントなインストールが可能で、直感的なWebインターフェースで管理できる。
  • デメリット: リソースを消費し(通常、パネル用に500MB〜1GBのRAMが必要)、メールフローのトラブル発生時に深いデバッグが困難。

2. Docker Mailserverによる展開

  • メリット: 環境の分離に優れ、サーバーの移行(マイグレーション)が5分で完了する。
  • デメリット: iptablesやコンテナネットワークに慣れていない場合、Dockerのネットワーク構成が非常に複雑。

3. Postfix + Dovecotの手動インストール(本ガイドの推奨)

  • メリット: パフォーマンスが最適化され、MTAとMDAの通信の本質を深く理解できる。
  • デメリット: 初回の正確な設定に30〜60分程度の時間を要する。

今回は3番目の方法を採用します。PostfixがどのようにDovecotと通信するかを理解すれば、Relay access denied(リレー拒否)エラーも怖くありません。

システムを安定稼働させるための前提条件

このラボを途中で挫折させないために、以下の準備が必要です:

  • Ubuntu 22.04 VPS(ウイルス/スパムスキャンをスムーズに動作させるため、最低2GBのRAMを推奨)。
  • サーバーのIPを指すAレコードが設定済みのドメイン。
  • メールサーバーのドメインを指すMXレコード(例:mail.itfromzero.com)。
  • ファイアウォールのポート開放:25 (SMTP), 587 (Submission), 993 (IMAPS)。

ステップ1:Postfix(MTA)のインストールと設定

PostfixはMail Transfer Agent(メール転送エージェント、いわば郵便配達員)の役割を担います。Ubuntuでは、aptパッケージマネージャーにウィザードが統合されており、初期設定をスムーズに行えます。

sudo apt update
sudo apt install postfix -y

選択画面が表示されたら、Internet Siteを選択してください。System mail nameには、メインドメインを入力します(例:itfromzero.com)。

次に、メインの設定ファイルを開いて微調整を行います:

sudo nano /etc/postfix/main.cf

Postfixがメールの受信場所と認証方法を認識できるように、以下のパラメータを更新します:

myhostname = mail.itfromzero.com
myorigin = /etc/mailname
mydestination = $myhostname, itfromzero.com, localhost.localdomain, localhost
home_mailbox = Maildir/

# Dovecotと接続してユーザー認証を行う
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

ステップ2:Dovecot(MDA)のインストール

Postfixが都市間を移動する配送業者なら、Dovecotは地域の倉庫番です。IMAP/POP3プロトコルを介して、スマートフォンやPCでメールを受信できるようにします。

sudo apt install dovecot-imapd dovecot-pop3d -y

今回はMaildir形式を使用します。この形式では、各メールが個別のファイルとして保存されるため、万が一ファイルエラーが発生してもメールボックス全体が破損するのを防げます。

/etc/dovecot/conf.d/10-mail.confファイルを編集します:

mail_location = maildir:~/Maildir

PostfixがDovecotにユーザー認証を「依頼」できるように、/etc/dovecot/conf.d/10-master.confを開き、service authセクションを修正します:

unix_listener /var/spool/postfix/private/auth {
  mode = 0660
  user = postfix
  group = postfix
}

ステップ3:SSL/TLSによるデータの暗号化

暗号化せずにメールを送信するのは、はがきを公開状態で送るようなものです。通信経路上の誰でも内容を盗み見ることができてしまいます。Let’s Encryptを使用して無料の証明書を発行しましょう。

証明書を取得したら、/etc/dovecot/conf.d/10-ssl.confにパスを記述します:

ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.itfromzero.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.itfromzero.com/privkey.pem

同時に、Postfixのmain.cfファイルにも同様の設定を適用し、ポート587でTLSを有効にします。

ステップ4:ユーザー作成と動作確認

このシステムはLinuxアカウントをメールアカウントとして使用します。新しいユーザーを追加するには、Ubuntuの標準コマンドを実行するだけです:

sudo adduser hoang_devops
sudo systemctl restart postfix dovecot

それでは、OutlookやThunderbirdを開いて以下の設定を入力してください:

  • 受信サーバー(Incoming): mail.itfromzero.com (ポート 993 – SSL/TLS)
  • 送信サーバー(Outgoing): mail.itfromzero.com (ポート 587 – STARTTLS)
  • ユーザー名/パスワード: 先ほど作成したアカウント

「血の滲むような」経験則:メールをスパム扱いされないためには?

サーバーを構築しても、送信したメールが100% Gmailのスパムフォルダに入ってしまうことがよくあります。高い信頼スコア(Sender Score)を得るためには、DNSの「三種の神器」の設定が不可欠です:

  1. SPF: どのIPがドメインを代表してメール送信を許可されているかを宣言します。
  2. DKIM: メールの内容が途中で改ざんされていないことを保証するため、電子署名を付与します。
  3. DMARC: SPF/DKIMに違反したメールを受け取った側がどう処理すべきかの指示を出します。

もう一つの重要な注意点は、PTRレコード(逆引きDNS)です。VPSプロバイダーに依頼して、IPをmail.itfromzero.comに逆引きできるように設定する必要があります。このレコードがないと、YahooやOutlookなどの大手メールサーバーは即座に受信を拒否することが多いです。

メールサーバーの自作運用は、システム管理スキルを向上させる素晴らしい経験になります。設定が成功し、自分だけの「クリーンな」メールシステムを構築できることを願っています!

Share: