VPSでメールサーバーを構築する方法:PostfixとDovecotの設定ガイド
VPS上でPostfixとDovecotを使い、SMTP/IMAP対応のメールサーバーを構築する手順を解説。セキュリティ設定やSPF/DKIM/DMARCの導入方法も紹介。
はじめに
VPS(Virtual Private Server)上にメールサーバーを構築する際、多くのユーザーがPostfix(SMTPサーバー)とDovecot(IMAP/POP3サーバー)を組み合わせます。この記事では、Ubuntu 22.04 LTSを例に、基本的な設定からセキュリティ対策までをステップバイステップで解説します。
前提条件
ステップ1: 必要なパッケージのインストール
まず、PostfixとDovecot、および関連ツールをインストールします。
sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd dovecot-pop3d mailutils
インストール中にPostfixの設定画面が表示されたら、「インターネットサイト」を選択し、メール名に使用するドメイン(例: example.com)を入力します。
ステップ2: DNSレコードの設定
メールサーバーを運用するには、適切なDNSレコードが必要です。以下のレコードを設定します。
v=spf1 mx ~allv=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など)で以下の設定で接続します。
*この記事は実際のVPS環境での構築経験に基づいています。料金・スペックは執筆時点のものであり、最新情報は各事業者の公式サイトでご確認ください。*
まとめ
VPS上にPostfixとDovecotを用いたメールサーバーを構築する手順を紹介しました。セキュリティを高めるために、SPF、DKIM、DMARCの設定も忘れずに行いましょう。また、定期的なログ監視とアップデートを心がけてください。