VPSでメールサーバーを構築する方法:PostfixとDovecotの設定ガイド

VPS上でPostfixとDovecotを使い、SMTP/IMAP対応のメールサーバーを構築する手順を解説。セキュリティ設定やSPF/DKIM/DMARCの導入方法も紹介。

VPSメールサーバーPostfixDovecotSMTPIMAP2026/5/25

はじめに

VPS(Virtual Private Server)上にメールサーバーを構築する際、多くのユーザーがPostfix(SMTPサーバー)とDovecot(IMAP/POP3サーバー)を組み合わせます。この記事では、Ubuntu 22.04 LTSを例に、基本的な設定からセキュリティ対策までをステップバイステップで解説します。

前提条件

  • VPS(Ubuntu 22.04 LTS)がセットアップ済みであること
  • 独自ドメイン(例: example.com)を所有し、DNSが設定可能であること
  • サーバーにSSHでアクセスできること
  • ファイアウォール(UFWなど)が有効であること
  • ステップ1: 必要なパッケージのインストール

    まず、PostfixとDovecot、および関連ツールをインストールします。

    sudo apt update
    sudo apt install postfix dovecot-core dovecot-imapd dovecot-pop3d mailutils
    

    インストール中にPostfixの設定画面が表示されたら、「インターネットサイト」を選択し、メール名に使用するドメイン(例: example.com)を入力します。

    ステップ2: DNSレコードの設定

    メールサーバーを運用するには、適切なDNSレコードが必要です。以下のレコードを設定します。

  • Aレコード: mail.example.com → VPSのIPアドレス
  • MXレコード: example.com → mail.example.com(優先度10)
  • PTRレコード: VPSのIPアドレス → mail.example.com(逆引き)
  • SPFレコード: TXTレコードで v=spf1 mx ~all
  • DKIMレコード: 後述の手順で生成
  • DMARCレコード: TXTレコードで v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com
  • ステップ3: Postfixの基本設定

    Postfixのメイン設定ファイル /etc/postfix/main.cf を編集します。

    sudo nano /etc/postfix/main.cf
    

    以下のパラメータを確認・修正します。

    myhostname = mail.example.com
    mydomain = example.com
    myorigin = $mydomain
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    home_mailbox = Maildir/
    smtpd_banner = $myhostname ESMTP unknown
    

    設定後、Postfixを再起動します。

    sudo systemctl restart postfix
    

    ステップ4: Dovecotの設定

    Dovecotの設定ファイル /etc/dovecot/dovecot.conf を編集します。

    sudo nano /etc/dovecot/dovecot.conf
    

    以下の行を追加またはコメント解除します。

    protocols = imap pop3
    listen = *
    mail_location = maildir:~/Maildir
    

    次に、認証設定 /etc/dovecot/conf.d/10-auth.conf を編集します。

    sudo nano /etc/dovecot/conf.d/10-auth.conf
    

    disable_plaintext_auth = no をコメントアウトし、以下のように変更します(SSL/TLSを使用する場合はyesのままでも可)。

    disable_plaintext_auth = yes
    auth_username_format = %n
    auth_mechanisms = plain login
    

    SSL/TLSの設定 /etc/dovecot/conf.d/10-ssl.conf では、自己署名証明書またはLet's Encryptの証明書を指定します。

    ssl = required
    ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
    ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
    

    Dovecotを再起動します。

    sudo systemctl restart dovecot
    

    ステップ5: ユーザーアカウントの作成

    メールアカウントとして使用するシステムユーザーを作成します。

    sudo adduser username
    

    ユーザーのホームディレクトリに Maildir ディレクトリが自動生成されるように、Postfixの設定で home_mailbox = Maildir/ としています。

    ステップ6: セキュリティ設定

    ファイアウォールの設定

    必要なポートを開放します。

    sudo ufw allow 25/tcp   # SMTP
    sudo ufw allow 587/tcp  # Submission
    sudo ufw allow 993/tcp  # IMAPS
    sudo ufw allow 995/tcp  # POP3S
    

    PostfixのSubmissionポート設定

    /etc/postfix/master.cf を編集し、Submissionポート(587)を有効にします。

    sudo nano /etc/postfix/master.cf
    

    以下の行のコメントを解除します。

    submission inet n       -       y       -       -       smtpd
      -o syslog_name=postfix/submission
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
      -o smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
      -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
    

    SASL認証の設定

    PostfixでSASL認証を使用するため、DovecotのSASLを利用します。/etc/dovecot/conf.d/10-master.conf に以下の設定を追加します。

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

    Postfixの main.cf に以下を追加します。

    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    smtpd_sasl_auth_enable = yes
    broken_sasl_auth_clients = yes
    

    PostfixとDovecotを再起動します。

    sudo systemctl restart postfix dovecot
    

    ステップ7: DKIMの設定

    OpenDKIMをインストールし、メールに署名します。

    sudo apt install opendkim opendkim-tools
    

    設定ファイル /etc/opendkim.conf を編集します。

    Domain                  example.com
    KeyFile                 /etc/opendkim/keys/example.com/mail.private
    Selector                mail
    Socket                  inet:8891@localhost
    

    キーを生成します。

    sudo mkdir -p /etc/opendkim/keys/example.com
    cd /etc/opendkim/keys/example.com
    sudo opendkim-genkey -s mail -d example.com
    sudo chown opendkim:opendkim mail.private
    

    生成された mail.txt の内容をDNSのTXTレコードに追加します。

    PostfixにOpenDKIMを統合するため、/etc/postfix/main.cf に以下を追加します。

    milter_protocol = 2
    milter_default_action = accept
    smtpd_milters = inet:localhost:8891
    non_smtpd_milters = inet:localhost:8891
    

    OpenDKIMとPostfixを再起動します。

    sudo systemctl restart opendkim postfix
    

    ステップ8: 動作確認

    ローカルテスト

    echo "Test email body" | mail -s "Test Subject" username@localhost
    

    外部からのテスト

    メールクライアント(Thunderbirdなど)で以下の設定で接続します。

  • 受信サーバー: mail.example.com, IMAP, ポート993, SSL/TLS
  • 送信サーバー: mail.example.com, SMTP, ポート587, STARTTLS
  • 認証: 通常のパスワード

  • *この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*

    まとめ

    VPS上にPostfixとDovecotを用いたメールサーバーを構築する手順を紹介しました。セキュリティを高めるために、SPF、DKIM、DMARCの設定も忘れずに行いましょう。また、定期的なログ監視とアップデートを心がけてください。